Globale grænser
Brevo håndhæver globale rategrænser på tværs af alle API-endepunkter for at sikre fair brug og optimal ydeevne.
Niveauer for rategrænser
Free-abonnement
- Daglig grænse: 300 forespørgsler
- Grænse pr. time: 50 forespørgsler
- Burst-grænse: 10 forespørgsler/minut
- E-mailkreditter: 300/måned
Starter-abonnement
- Daglig grænse: 20.000 forespørgsler
- Grænse pr. time: 1.000 forespørgsler
- Burst-grænse: 100 forespørgsler/minut
- E-mailkreditter: Ubegrænset
Business-abonnement
- Daglig grænse: 50.000 forespørgsler
- Grænse pr. time: 3.000 forespørgsler
- Burst-grænse: 300 forespørgsler/minut
- E-mailkreditter: Ubegrænset
Enterprise-abonnement
- Daglig grænse: Tilpasset (100.000+)
- Grænse pr. time: Tilpasset (10.000+)
- Burst-grænse: Tilpasset (1.000+/minut)
- E-mailkreditter: Ubegrænset
Headers for rategrænser
Hvert API-svar indeholder oplysninger om rategrænsen:
HTTP/1.1 200 OKX-RateLimit-Limit: 1000X-RateLimit-Remaining: 999X-RateLimit-Reset: 1640995200X-RateLimit-Retry-After: 3600Beskrivelse af headers
X-RateLimit-Limit: Samlet antal tilladte forespørgsler i det aktuelle vindueX-RateLimit-Remaining: Resterende forespørgsler i det aktuelle vindueX-RateLimit-Reset: Unix-tidsstempel for hvornår grænsen nulstillesX-RateLimit-Retry-After: Antal sekunder du skal vente før nyt forsøg
Overvågning af forbrug
Tjek dit aktuelle forbrug
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) });};Overvågning i dashboardet
- Log ind på dit Brevo-dashboard
- Gå til Settings → API Keys
- Se forbruget for hver API-nøgle
- Opsæt advarsler for grænser du nærmer dig
Nulstillingsvinduer for rategrænser
- Daglige grænser: Nulstilles kl. 00.00 UTC
- Grænser pr. time: Nulstilles hver time på minuttal :00
- Burst-grænser: Glidende vindue (de seneste 60 sekunder)
Sådan håndterer du rategrænser
Eksponentiel 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; } }};Opgradering af abonnement
Når du konsekvent rammer rategrænserne:
- Analyser forbruget: Gennemgå hvilke endepunkter du bruger mest
- Optimer koden: Implementer caching og batching
- Overvej en opgradering: Skift til et højere niveau, hvis der er behov for det
- Kontakt salg: Til enterprise-behov
Undtagelser fra rategrænserne
Webhook-endepunkter
- Er ikke omfattet af de almindelige rategrænser
- Særskilte grænser for webhook-levering gælder
Endepunkt til helbredstjek
/v3/pinghar lempeligere grænser- Designet til overvågning og oppetidstjek
Batchoperationer
- Tæller som én forespørgsel, men kan have grænser for payload-størrelsen
- Mere effektive end mange enkeltstående forespørgsler