Skip to content

Rate Limits

API Volara membatasi laju permintaan per API key untuk menjaga stabilitas dan mencegah penyalahgunaan. Saat batas terlampaui, API mengembalikan status 429.

Header kuota

Setiap respons menyertakan header yang menggambarkan kuota saat ini:

HeaderArti
RateLimit-LimitJumlah maksimum permintaan dalam jendela waktu.
RateLimit-RemainingSisa permintaan pada jendela saat ini.
RateLimit-ResetDetik tersisa (atau timestamp) sampai kuota di-reset.
Retry-After(Pada 429) berapa detik harus menunggu sebelum mencoba lagi.

Nama header bisa bervariasi

Selalu baca nilai dari respons, jangan hard-code angka kuota. Untuk batas pasti per-endpoint, lihat Referensi API interaktif.

Menangani 429

Saat menerima 429 Too Many Requests, jangan langsung mengulang. Tunggu sesuai Retry-After (atau RateLimit-Reset), lalu retry dengan exponential backoff dan jitter.

ts
async function requestWithRetry(url: string, init: RequestInit, max = 5) {
  for (let attempt = 0; attempt < max; attempt++) {
    const res = await fetch(url, init)
    if (res.status !== 429) return res

    const retryAfter = Number(res.headers.get('Retry-After')) || 2 ** attempt
    const jitter = Math.random() * 0.3 * retryAfter
    await new Promise((r) => setTimeout(r, (retryAfter + jitter) * 1000))
  }
  throw new Error('Rate limit: gagal setelah beberapa percobaan')
}

Praktik baik

  • Pakai webhooks, bukan polling, untuk event masuk — lihat Webhooks.
  • Batch dan beri jeda pekerjaan besar (mis. impor kontak, broadcast).
  • Hormati RateLimit-Remaining dan perlambat sebelum mencapai nol.
  • Idempotency pada write agar retry aman (kirim ulang idempotency-key yang sama).

Langkah selanjutnya

  • Errors untuk amplop error dan kode lain.
  • Pagination untuk mengambil data besar tanpa membebani API.