Globale limieten
Brevo beperkt API-verzoeken per endpoint. Elke limiet is een aantal verzoeken per seconde (RPS), per uur (RPH) of beide. De cijfers hieronder komen van de pagina met rate limits van Brevo, gecontroleerd op 7 oktober 2026. Controleer die pagina voordat je een grote taak plant.
Niveaus van rate limits
| Niveau | Beschikbaar voor |
|---|---|
| Algemeen | Free, Starter, Standard, Professional en Enterprise |
| Geavanceerd | Professional en Enterprise |
| Uitgebreid | Enterprise |
Limieten per niveau
| Endpoint | Algemeen | Geavanceerd | Uitgebreid |
|---|---|---|---|
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 |
Overige endpoints onder /v3/smtp | 300 RPH | 600 RPH | 1.800 RPH |
Alle endpoints onder /v3/contacts | 10 RPS, 36.000 RPH | 20 RPS, 72.000 RPH | 60 RPS |
Alle endpoints onder /v3/loyalty | 600 RPH | 1.200 RPH | 100.000 RPH |
| Alle overige endpoints | 100 RPH | 200 RPH | 600 RPH |
Als een endpoint zowel een RPS- als een RPH-limiet heeft, blijf dan onder beide.
Headers voor rate limits
Endpoints met een rate limit geven deze headers terug:
HTTP/1.1 200 OKx-sib-ratelimit-limit: 1000x-sib-ratelimit-remaining: 750x-sib-ratelimit-reset: 1Beschrijving van de headers
x-sib-ratelimit-limit: toegestane verzoeken in het huidige vensterx-sib-ratelimit-remaining: resterende verzoeken in het huidige vensterx-sib-ratelimit-reset: tijd tot het venster wordt gereset, meestal in seconden
Brevo beschrijft deze headers op zijn pagina over rate limit-headers.
Gebruik monitoren
Huidig gebruik controleren
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')) });};Omgaan met rate limits
Exponentiële 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');};Als je steeds tegen de limieten aanloopt
- Spreid verzoeken gelijkmatig: een limiet van 1.000 RPS staat alleen tot 60.000 verzoeken per minuut toe als ze gelijkmatig zijn gespreid.
- Batch en cache: gebruik bulk-endpoints en vermijd het opnieuw lezen van gegevens die je al hebt.
- Gebruik webhooks voor statistieken: ontvang events in plaats van statistiek-endpoints te pollen.
- Overweeg een hoger niveau: het geavanceerde en het uitgebreide niveau horen bij Professional- en Enterprise-abonnementen.