Batas Laju
Permintaan API dibatasi per kunci API, per grup endpoint:
| Endpoint | Batas |
|---|---|
| GET /v1/products · GET /v1/balance · GET /v1/api-key · GET /v1/tasks/{token} · GET /v1/tasks/{token}/result · GET /v1/tasks/{token}/download | 60 permintaan / menit per API key (120 / menit per IP) |
| POST /v1/detect · POST /v1/detect/file | 10 permintaan / menit per API key (30 / menit per IP) |
| POST /v1/realtime/check/{series} · POST /v1/realtime/detect | Token bucket per API key: burst 60, isi ulang 1/detik (≈60 / menit berkelanjutan); per akun: burst 120, isi ulang 2/detik. Lapisan IP mengizinkan 180 / menit. Setiap respons menyertakan header X-RateLimit-Remaining. |
Header respons
Section titled “Header respons”Header yang Anda terima bergantung pada lapisan yang menjawab, dan ketiga grup tidak berperilaku sama:
| Header | Arti | Kapan muncul |
|---|---|---|
X-RateLimit-Remaining | Permintaan (atau token) tersisa di jendela saat ini | Setiap respons di ketiga grup |
X-RateLimit-Limit | Batas atas yang diterapkan | Di setiap respons umum dan deteksi, serta setiap 429 dari lapisan IP. Tidak pernah pada respons realtime — realtime memakai bucket, jadi tidak ada batas tetap |
Retry-After | Detik untuk menunggu sebelum mencoba ulang | Hanya pada 429 |
X-RateLimit-Reset | Timestamp Unix saat jendela direset | Hanya pada 429 dari grup umum atau deteksi; tidak pernah dari realtime maupun lapisan IP |
X-RateLimit-Remaining adalah satu-satunya header yang bisa diandalkan tanpa syarat, dan satu-satunya yang dilaporkan realtime saat berhasil.
Saat Anda terkena 429
Section titled “Saat Anda terkena 429”Saat batas terlampaui, API mengembalikan 429 dengan header Retry-After (respons realtime juga menyertakan field retry_after). Hentikan permintaan selama jumlah detik yang disebutkan, lalu lanjutkan dengan exponential backoff.
{ "message": "Too many requests. Limit: 60/min."}Retry-After: 12X-RateLimit-Limit: 60X-RateLimit-Remaining: 0