Limity globalne
Brevo egzekwuje globalne limity zapytań we wszystkich endpointach API, aby zapewnić uczciwe korzystanie i optymalną wydajność.
Poziomy limitów zapytań
Plan Free
- Limit dzienny: 300 zapytań
- Limit godzinowy: 50 zapytań
- Limit chwilowy (burst): 10 zapytań/minutę
- Kredyty email: 300/miesiąc
Plan Starter
- Limit dzienny: 20 000 zapytań
- Limit godzinowy: 1 000 zapytań
- Limit chwilowy (burst): 100 zapytań/minutę
- Kredyty email: bez ograniczeń
Plan Business
- Limit dzienny: 50 000 zapytań
- Limit godzinowy: 3 000 zapytań
- Limit chwilowy (burst): 300 zapytań/minutę
- Kredyty email: bez ograniczeń
Plan Enterprise
- Limit dzienny: indywidualny (100 000+)
- Limit godzinowy: indywidualny (10 000+)
- Limit chwilowy (burst): indywidualny (1 000+/minutę)
- Kredyty email: bez ograniczeń
Nagłówki limitów zapytań
Każda odpowiedź API zawiera informacje o limitach zapytań:
HTTP/1.1 200 OKX-RateLimit-Limit: 1000X-RateLimit-Remaining: 999X-RateLimit-Reset: 1640995200X-RateLimit-Retry-After: 3600Opis nagłówków
X-RateLimit-Limit: łączna liczba zapytań dozwolonych w bieżącym oknieX-RateLimit-Remaining: liczba zapytań pozostałych w bieżącym oknieX-RateLimit-Reset: znacznik czasu Unix momentu zresetowania limituX-RateLimit-Retry-After: liczba sekund oczekiwania przed ponowną próbą
Monitorowanie zużycia
Sprawdź bieżące zużycie
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) });};Monitorowanie w panelu
- Zaloguj się do swojego panelu Brevo
- Przejdź do Settings → API Keys
- Sprawdź zużycie każdego klucza API
- Ustaw alerty informujące o zbliżaniu się do limitów
Okna resetowania limitów
- Limity dzienne: resetują się o 00:00 UTC
- Limity godzinowe: resetują się co godzinę o pełnej minucie :00
- Limity chwilowe (burst): okno przesuwne (ostatnie 60 sekund)
Obsługa limitów zapytań
Wykładnicze wycofanie (exponential 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; } }};Zmiana planu na wyższy
Gdy regularnie osiągasz limity zapytań:
- Przeanalizuj zużycie: sprawdź, których endpointów używasz najczęściej
- Zoptymalizuj kod: wdróż cache’owanie i operacje wsadowe
- Rozważ wyższy plan: przejdź na wyższy poziom, jeśli to konieczne
- Skontaktuj się z działem sprzedaży: w przypadku wymagań klasy enterprise
Wyjątki od limitów zapytań
Endpointy webhooków
- Nie podlegają standardowym limitom zapytań
- Obowiązują osobne limity dostarczania webhooków
Endpoint kontroli stanu
/v3/pingma złagodzone limity- Zaprojektowany do monitoringu i kontroli dostępności
Operacje wsadowe
- Liczą się jako jedno zapytanie, ale mogą mieć limity rozmiaru ładunku
- Są wydajniejsze niż wiele pojedynczych zapytań