Limite globale
Brevo aplică limite globale de rată pentru toate endpointurile API, ca să asigure o utilizare echitabilă și performanță optimă.
Praguri ale limitei de rată
Planul Free
- Limită zilnică: 300 de cereri
- Limită orară: 50 de cereri
- Limită de vârf: 10 cereri/minut
- Credite e-mail: 300/lună
Planul Starter
- Limită zilnică: 20.000 de cereri
- Limită orară: 1.000 de cereri
- Limită de vârf: 100 de cereri/minut
- Credite e-mail: nelimitate
Planul Business
- Limită zilnică: 50.000 de cereri
- Limită orară: 3.000 de cereri
- Limită de vârf: 300 de cereri/minut
- Credite e-mail: nelimitate
Planul Enterprise
- Limită zilnică: personalizată (peste 100.000)
- Limită orară: personalizată (peste 10.000)
- Limită de vârf: personalizată (peste 1.000/minut)
- Credite e-mail: nelimitate
Anteturi pentru limita de rată
Fiecare răspuns al API-ului include informații despre limita de rată:
HTTP/1.1 200 OKX-RateLimit-Limit: 1000X-RateLimit-Remaining: 999X-RateLimit-Reset: 1640995200X-RateLimit-Retry-After: 3600Descrierea anteturilor
X-RateLimit-Limit: numărul total de cereri permise în fereastra curentăX-RateLimit-Remaining: cererile rămase în fereastra curentăX-RateLimit-Reset: marcajul de timp Unix la care se resetează limitaX-RateLimit-Retry-After: secundele de așteptat înainte de o nouă încercare
Monitorizarea consumului
Verifică consumul curent
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) });};Monitorizare din panoul de administrare
- Conectează-te la panoul tău de administrare Brevo
- Navighează la Settings → API Keys
- Vizualizează consumul pentru fiecare cheie API
- Setează alerte pentru limitele care se apropie
Ferestrele de resetare a limitelor
- Limite zilnice: se resetează la 00:00 UTC
- Limite orare: se resetează în fiecare oră, la minutul :00
- Limite de vârf: fereastră glisantă (ultimele 60 de secunde)
Cum tratezi limitele de rată
Backoff exponențial
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; } }};Trecerea la un plan superior
Când atingi constant limitele de rată:
- Analizează consumul: vezi ce endpointuri folosești cel mai des
- Optimizează codul: implementează cache și procesare în loturi
- Ia în calcul un upgrade: treci la un plan superior dacă este nevoie
- Contactează echipa de vânzări: pentru cerințe de tip enterprise
Excepții de la limitele de rată
Endpointuri de webhook
- Nu sunt supuse limitelor de rată standard
- Se aplică limite separate pentru livrarea webhookurilor
Endpointul de verificare a stării
/v3/pingare limite relaxate- Este gândit pentru monitorizare și verificări de disponibilitate
Operațiuni în lot
- Contează ca o singură cerere, dar pot avea limite de mărime a payloadului
- Sunt mai eficiente decât mai multe cereri individuale