Globalna ograničenja
Brevo primjenjuje globalna ograničenja broja zahtjeva na svim API krajnjim točkama kako bi osigurao pravednu upotrebu i optimalne performanse.
Razine ograničenja
Besplatni plan
- Dnevno ograničenje: 300 zahtjeva
- Satno ograničenje: 50 zahtjeva
- Ograničenje naleta: 10 zahtjeva u minuti
- Krediti za e-poštu: 300 mjesečno
Starter plan
- Dnevno ograničenje: 20.000 zahtjeva
- Satno ograničenje: 1.000 zahtjeva
- Ograničenje naleta: 100 zahtjeva u minuti
- Krediti za e-poštu: neograničeno
Business plan
- Dnevno ograničenje: 50.000 zahtjeva
- Satno ograničenje: 3.000 zahtjeva
- Ograničenje naleta: 300 zahtjeva u minuti
- Krediti za e-poštu: neograničeno
Enterprise plan
- Dnevno ograničenje: prilagođeno (100.000+)
- Satno ograničenje: prilagođeno (10.000+)
- Ograničenje naleta: prilagođeno (1.000+ u minuti)
- Krediti za e-poštu: neograničeno
Zaglavlja s ograničenjima
Svaki API odgovor sadrži podatke o ograničenju broja zahtjeva:
HTTP/1.1 200 OKX-RateLimit-Limit: 1000X-RateLimit-Remaining: 999X-RateLimit-Reset: 1640995200X-RateLimit-Retry-After: 3600Opisi zaglavlja
X-RateLimit-Limit: ukupan broj dopuštenih zahtjeva u trenutnom razdobljuX-RateLimit-Remaining: broj preostalih zahtjeva u trenutnom razdobljuX-RateLimit-Reset: Unix vremenska oznaka kada se ograničenje ponovno postavljaX-RateLimit-Retry-After: broj sekundi koje treba pričekati prije ponovnog pokušaja
Praćenje potrošnje
Provjera trenutne potrošnje
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) });};Praćenje putem nadzorne ploče
- Prijavite se na svoju Brevo nadzornu ploču
- Otvorite Settings → API Keys
- Pregledajte potrošnju za svaki API ključ
- Postavite upozorenja za približavanje ograničenjima
Razdoblja ponovnog postavljanja ograničenja
- Dnevna ograničenja: ponovno se postavljaju u 00:00 UTC
- Satna ograničenja: ponovno se postavljaju svaki puni sat, na :00 minuta
- Ograničenja naleta: klizno razdoblje (posljednjih 60 sekundi)
Postupanje pri dosegnutim ograničenjima
Eksponencijalno odgađanje
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; } }};Nadogradnja plana
Kada stalno dosežete ograničenja broja zahtjeva:
- Analizirajte potrošnju: pregledajte koje krajnje točke najviše koristite
- Optimizirajte kod: uvedite predmemoriranje i grupiranje zahtjeva
- Razmotrite nadogradnju: prijeđite na višu razinu ako je potrebno
- Obratite se prodaji: za zahtjeve na razini poduzeća
Iznimke od ograničenja
Krajnje točke za webhookove
- Ne podliježu standardnim ograničenjima broja zahtjeva
- Primjenjuju se zasebna ograničenja isporuke webhookova
Krajnja točka za provjeru stanja
/v3/pingima ublažena ograničenja- Namijenjena je nadzoru i provjerama dostupnosti
Skupne operacije
- Broje se kao jedan zahtjev, ali mogu imati ograničenja veličine sadržaja
- Učinkovitije su od više pojedinačnih zahtjeva