Batas permintaan dan kuota
Berapa banyak permintaan yang bisa kamu kirim dan apa yang terjadi saat kamu mencapai batas.
Batasnya bergantung pada paketmu dan dihitung per kunci API.
Permintaan per menit#
Batas ini dihitung per kunci dalam rolling window satu menit. Setiap respons yang berhasil menyertakan header X-RateLimit-Remaining yang berisi sisa permintaan di window saat ini. Jika melebihi batas, kamu akan mendapat 429 rateLimited dengan error.retryAfter dalam detik.
X-RateLimit-Remaining: 59{
"error": {
"code": "rateLimited",
"message": "Rate limit exceeded",
"retryAfter": 12
}
}Kuota bulanan#
Setiap kunci punya kuota permintaan bulanan yang di-reset setiap tanggal 1 pukul 00:00 UTC. Jika kuota habis, permintaan akan mengembalikan 429 rateLimited dengan error.reason bernilai quota sampai bulan berikutnya.
{
"error": {
"code": "rateLimited",
"message": "Monthly quota exceeded",
"reason": "quota"
}
}Pemindaian harian#
Panggilan POST /scans yang benar-benar memulai pemindaian memakai satu jatah dari batas pemindaian harian paketmu, dan batas ini dipakai bersama dengan pemindaian yang kamu mulai di aplikasi. Membaca laporan, serta panggilan pemindaian yang mengembalikan laporan dari cache yang masih berlaku, tidak memakai batas pemindaian (tetapi tetap dihitung sebagai permintaan API).
Batas per paket#
| Paket | Permintaan / menit | Permintaan / bulan |
|---|---|---|
Pro | 60 | 100.000 |
Pro Plus | 60 | 100.000 |
Praktik terbaik#
- Simpan laporan token di cache milikmu sendiri; laporan tetap berlaku selama beberapa menit.
- Saat menerima 429, tunggu selama
retryAfterdetik, lalu coba lagi dengan exponential backoff dan jitter. - Lakukan polling pemindaian setiap 3–5 detik, jangan dalam loop tanpa jeda.
- Sebar job batch dalam rentang waktu tertentu alih-alih menjalankan semuanya sekaligus secara paralel.