Globala gränser
Brevo tillämpar globala hastighetsgränser för alla API-endpoints för att säkerställa rättvis användning och bästa möjliga prestanda.
Nivåer för hastighetsgränser
Free-plan
- Daglig gräns: 300 förfrågningar
- Timgräns: 50 förfrågningar
- Burst-gräns: 10 förfrågningar/minut
- E-postkrediter: 300/månad
Starter-plan
- Daglig gräns: 20 000 förfrågningar
- Timgräns: 1 000 förfrågningar
- Burst-gräns: 100 förfrågningar/minut
- E-postkrediter: Obegränsat
Business-plan
- Daglig gräns: 50 000 förfrågningar
- Timgräns: 3 000 förfrågningar
- Burst-gräns: 300 förfrågningar/minut
- E-postkrediter: Obegränsat
Enterprise-plan
- Daglig gräns: Anpassad (100 000+)
- Timgräns: Anpassad (10 000+)
- Burst-gräns: Anpassad (1 000+/minut)
- E-postkrediter: Obegränsat
Rubriker för hastighetsgränser
Varje API-svar innehåller information om hastighetsgränsen:
HTTP/1.1 200 OKX-RateLimit-Limit: 1000X-RateLimit-Remaining: 999X-RateLimit-Reset: 1640995200X-RateLimit-Retry-After: 3600Beskrivning av rubrikerna
X-RateLimit-Limit: Totalt antal tillåtna förfrågningar i det aktuella fönstretX-RateLimit-Remaining: Antal förfrågningar kvar i det aktuella fönstretX-RateLimit-Reset: Unix-tidsstämpel när gränsen nollställsX-RateLimit-Retry-After: Antal sekunder att vänta före nytt försök
Övervaka användningen
Kontrollera aktuell användning
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) });};Övervakning i dashboarden
- Logga in på din Brevo-dashboard
- Gå till Inställningar → API-nycklar
- Visa användning för varje API-nyckel
- Ställ in aviseringar när du närmar dig gränserna
Nollställningsfönster för hastighetsgränser
- Dagliga gränser: Nollställs kl. 00.00 UTC
- Timgränser: Nollställs varje hel timme, vid minut :00
- Burst-gränser: Glidande fönster (senaste 60 sekunderna)
Hantera hastighetsgränser
Exponentiell 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; } }};Uppgradera plan
När du regelbundet slår i hastighetsgränserna:
- Analysera användningen: Se över vilka endpoints du använder mest
- Optimera koden: Inför cachning och batchning
- Överväg uppgradering: Gå upp en nivå om det behövs
- Kontakta säljteamet: För krav på enterprise-nivå
Undantag från hastighetsgränserna
Webhook-endpoints
- Omfattas inte av standardgränserna
- Separata gränser för webhook-leveranser gäller
Endpoint för hälsokontroll
/v3/pinghar mildare gränser- Utformad för övervakning och drifttidskontroller
Batchoperationer
- Räknas som en enda förfrågan men kan ha gränser för nyttolasten
- Effektivare än flera enskilda förfrågningar