Dokumentasi API
Endpoint publik AIO Downloader. Semua request dalam format JSON dan tidak memerlukan autentikasi.
Contoh permintaan
cURL
curl -X POST "https://aio-dl.akaa.dev/api/v1/resolve" \
-H "Content-Type: application/json" \
-d '{"url": "https://youtu.be/U2CBBWnw2RU"}'Endpoint
- GET
/healthHealth check API (versi dan uptime). - POST
/v1/resolveValidasi URL, deteksi platform, buat process ID. - GET
/v1/jobs/{processId}Status job, tahap proses, dan persen progres nyata. - GET
/v1/jobs/{processId}/eventsEvent stream (SSE) untuk satu job. - GET
/v1/media/result/{processId}Output media dan metadata hasil unduhan. - GET
/v1/media/{mediaId}/streamStreaming media dengan dukungan HTTP Range. - GET
/v1/media/{mediaId}/downloadUnduhan browser-native dengan filename aman. - GET
/v1/statisticsSnapshot statistik 7 hari: totals, platform, negara, volume data. - GET
/v1/statistics/streamEvent stream (SSE) statistik realtime, update tiap 30 detik. - GET
/v1/block-statusStatus blokir klien saat ini.
Progres job
Saat worker mengunduh, progressPercent berisi persen nyata dari extractor. Nilai null berarti tahap tidak memberikan persentase — bukan angka tiruan.
GET /v1/jobs/{processId} — 200 OK
{
"processId": "V8fQx2aK7mP4zL9q",
"stage": "downloading",
"progressPercent": 42.7,
"outputs": [],
"failureReason": null
}Contoh response
POST /v1/resolve — 200 OK
{
"processId": "V8fQx2aK7mP4zL9q",
"eventId": "ljf-oMDUhPJGhWX4QghsSx_g",
"platform": "youtube",
"normalizedUrl": "https://youtu.be/U2CBBWnw2RU",
"canonicalUrl": "https://www.youtube.com/watch?v=U2CBBWnw2RU",
"acceptedAt": "2026-09-19T15:21:58.962Z"
}Statistik publik
Semua angka dihitung dari event nyata di database 7 hari terakhir. Negara berasal dari header negara Cloudflare, bukan IP — IP tidak pernah disimpan. Nilai null berarti data belum tersedia, bukan nol.
GET /v1/statistics — 200 OK
{
"version": "D1Bd7hEe0AgJvFWe1GmLjP-D",
"generatedAt": "2026-09-23T10:24:31.317Z",
"totals": { "downloads": 99, "success": 73, "failure": 26, "healthPercent": 73.7 },
"platforms": [
{ "platform": "youtube", "downloads": 24, "success": 19, "failure": 5 }
],
"topRegions": [
{ "rank": 1, "label": "ID", "requests": 113 },
{ "rank": 2, "label": "SG", "requests": 30 }
],
"activity": [
{ "bucketStart": "2026-09-22T14:00:00Z", "downloads": 1 }
],
"bytesServed7d": 1078000000,
"successRate": 73.7,
"avgBytesPerDownload": 10890000,
"failuresByClass": [
{ "klass": "extractor", "count": 9, "share": 34.6 }
],
"dataVolume": { "gigabytes": 1.08, "formatted": "1.08 GB" }
}topRegions.labelKode negara ISO 3166-1 alpha-2 (ID, SG, US, dst).bytesServed7dTotal byte media tersaji via stream + download.failuresByClassKegagalan dikelompokkan per kategori root-cause.dataVolumeVolume terformat siap tampil (MB/GB).
Kode error
- 429 rate_limited — terlalu banyak permintaan
- 401 security_blocked — klien diblokir server
- 404 not_found — proses atau media tidak ditemukan
- 409 conflict — proses sama sedang berjalan
- 422 invalid_url — URL tidak valid atau tidak didukung