Batas global
Brevo membatasi permintaan API per endpoint. Setiap batas adalah jumlah permintaan per detik (RPS), per jam (RPH), atau keduanya. Angka di bawah berasal dari halaman batas laju Brevo, diperiksa pada 7 Oktober 2026. Periksa halaman itu sebelum Anda menentukan ukuran pekerjaan besar.
Tingkatan batas laju
| Tingkatan | Tersedia di |
|---|---|
| Umum | Free, Starter, Standard, Professional, dan Enterprise |
| Lanjutan | Professional dan Enterprise |
| Diperluas | Enterprise |
Batas menurut tingkatan
| Endpoint | Umum | Lanjutan | Diperluas |
|---|---|---|---|
POST /v3/smtp/email, GET /v3/smtp/blockedContacts | 1.000 RPS, 3.600.000 RPH | 2.000 RPS, 7.200.000 RPH | 6.000 RPS |
GET /v3/smtp/emails | 2 RPS, 7.200 RPH | 3 RPS, 10.800 RPH | 18.000 RPH |
POST /v3/transactionalSMS/send | 150 RPS, 540.000 RPH | 200 RPS, 720.000 RPH | 250 RPS |
POST /v3/events | 10 RPS, 36.000 RPH | 20 RPS, 72.000 RPH | 60 RPS |
POST /v3/orders/status | 5 RPS, 18.000 RPH | 10 RPS, 36.000 RPH | 15 RPS |
POST /v3/products | 2 RPS, 7.200 RPH | 4 RPS, 14.400 RPH | 21.600 RPH |
Endpoint lain di bawah /v3/smtp | 300 RPH | 600 RPH | 1.800 RPH |
Semua endpoint di bawah /v3/contacts | 10 RPS, 36.000 RPH | 20 RPS, 72.000 RPH | 60 RPS |
Semua endpoint di bawah /v3/loyalty | 600 RPH | 1.200 RPH | 100.000 RPH |
| Semua endpoint lainnya | 100 RPH | 200 RPH | 600 RPH |
Bila sebuah endpoint memiliki batas RPS dan RPH, tetaplah di bawah keduanya.
Header batas laju
Endpoint yang dibatasi laju mengembalikan header berikut:
HTTP/1.1 200 OKx-sib-ratelimit-limit: 1000x-sib-ratelimit-remaining: 750x-sib-ratelimit-reset: 1Penjelasan header
x-sib-ratelimit-limit: permintaan yang diizinkan dalam jendela saat inix-sib-ratelimit-remaining: permintaan yang tersisa dalam jendela saat inix-sib-ratelimit-reset: waktu hingga jendela di-reset, biasanya dalam detik
Brevo mendokumentasikan header ini di halaman header batas laju.
Memantau penggunaan
Periksa penggunaan saat ini
const checkRateLimit = async () => { const response = await fetch('https://api.brevo.com/v3/account', { headers: { 'api-key': process.env.BREVO_API_KEY } });
console.log({ limit: response.headers.get('x-sib-ratelimit-limit'), remaining: response.headers.get('x-sib-ratelimit-remaining'), resetInSeconds: Number(response.headers.get('x-sib-ratelimit-reset')) });};Menangani batas laju
Exponential backoff
const makeRequestWithBackoff = async (url, options, maxRetries = 3) => { for (let i = 0; i < maxRetries; i++) { const response = await fetch(url, options);
if (response.status !== 429) return response;
const resetSeconds = Number(response.headers.get('x-sib-ratelimit-reset') || 1); const delay = Math.max(resetSeconds * 1000, 1000 * Math.pow(2, i));
console.log(`Rate limited. Waiting ${delay}ms before retry ${i + 1}`); await new Promise(resolve => setTimeout(resolve, delay)); } throw new Error('Rate limit retries exhausted');};Jika Anda terus mencapai batas
- Sebarkan permintaan secara merata: batas 1.000 RPS hanya mengizinkan hingga 60.000 permintaan per menit bila permintaan tersebar merata.
- Batch dan cache: gunakan endpoint massal dan hindari membaca ulang data yang sudah Anda miliki.
- Gunakan webhook untuk statistik: terima event alih-alih melakukan polling pada endpoint statistik.
- Pertimbangkan tingkatan yang lebih tinggi: tingkatan lanjutan dan diperluas disertakan pada paket Professional dan Enterprise.