Batas global
Brevo memberlakukan batas laju global di seluruh endpoint API untuk menjaga penggunaan yang adil dan performa yang optimal.
Tingkatan batas laju
Paket Free
- Batas harian: 300 permintaan
- Batas per jam: 50 permintaan
- Batas burst: 10 permintaan/menit
- Kredit email: 300/bulan
Paket Starter
- Batas harian: 20.000 permintaan
- Batas per jam: 1.000 permintaan
- Batas burst: 100 permintaan/menit
- Kredit email: tanpa batas
Paket Business
- Batas harian: 50.000 permintaan
- Batas per jam: 3.000 permintaan
- Batas burst: 300 permintaan/menit
- Kredit email: tanpa batas
Paket Enterprise
- Batas harian: khusus (100.000+)
- Batas per jam: khusus (10.000+)
- Batas burst: khusus (1.000+/menit)
- Kredit email: tanpa batas
Header batas laju
Setiap respons API menyertakan informasi batas laju:
HTTP/1.1 200 OKX-RateLimit-Limit: 1000X-RateLimit-Remaining: 999X-RateLimit-Reset: 1640995200X-RateLimit-Retry-After: 3600Penjelasan header
X-RateLimit-Limit: total permintaan yang diizinkan pada jendela waktu saat iniX-RateLimit-Remaining: sisa permintaan pada jendela waktu saat iniX-RateLimit-Reset: stempel waktu Unix saat batas diresetX-RateLimit-Retry-After: jumlah detik yang harus ditunggu sebelum mencoba lagi
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-RateLimit-Limit'), remaining: response.headers.get('X-RateLimit-Remaining'), reset: new Date(response.headers.get('X-RateLimit-Reset') * 1000) });};Pemantauan lewat dasbor
- Masuk ke dasbor Brevo Anda
- Buka Settings → API Keys
- Lihat penggunaan untuk setiap API key
- Atur peringatan saat batas hampir tercapai
Jendela reset batas laju
- Batas harian: direset pukul 00.00 UTC
- Batas per jam: direset setiap jam pada menit ke-00
- Batas burst: jendela geser (60 detik terakhir)
Menangani batas laju
Exponential backoff
const makeRequestWithBackoff = async (url, options, maxRetries = 3) => { for (let i = 0; i < maxRetries; i++) { try { const response = await fetch(url, options);
if (response.status === 429) { const retryAfter = response.headers.get('X-RateLimit-Retry-After') || 60; const delay = Math.min(1000 * Math.pow(2, i), retryAfter * 1000);
console.log(`Rate limited. Waiting ${delay}ms before retry ${i + 1}`); await new Promise(resolve => setTimeout(resolve, delay)); continue; }
return response; } catch (error) { if (i === maxRetries - 1) throw error; } }};Peningkatan paket
Jika Anda terus-menerus mencapai batas laju:
- Analisis penggunaan: tinjau endpoint mana yang paling sering Anda pakai
- Optimalkan kode: terapkan caching dan batching
- Pertimbangkan peningkatan: naik ke tingkatan yang lebih tinggi bila perlu
- Hubungi tim sales: untuk kebutuhan enterprise
Pengecualian batas laju
Endpoint webhook
- Tidak tunduk pada batas laju standar
- Berlaku batas pengiriman webhook tersendiri
Endpoint health check
/v3/pingmemiliki batas yang lebih longgar- Dirancang untuk pemantauan dan pemeriksaan uptime
Operasi batch
- Dihitung sebagai satu permintaan, tetapi dapat memiliki batas ukuran payload
- Lebih efisien daripada banyak permintaan terpisah