Globale Limits
Brevo erzwingt globale Ratenbegrenzungen ueber alle API-Endpunkte, um eine faire Nutzung und optimale Leistung sicherzustellen.
Ratenbegrenzungsstufen
Free Plan
- Tageslimit: 300 Anfragen
- Stundenlimit: 50 Anfragen
- Burst-Limit: 10 Anfragen/Minute
- E-Mail-Kontingent: 300/Monat
Starter Plan
- Tageslimit: 20.000 Anfragen
- Stundenlimit: 1.000 Anfragen
- Burst-Limit: 100 Anfragen/Minute
- E-Mail-Kontingent: Unbegrenzt
Business Plan
- Tageslimit: 50.000 Anfragen
- Stundenlimit: 3.000 Anfragen
- Burst-Limit: 300 Anfragen/Minute
- E-Mail-Kontingent: Unbegrenzt
Enterprise Plan
- Tageslimit: Individuell (100.000+)
- Stundenlimit: Individuell (10.000+)
- Burst-Limit: Individuell (1.000+/Minute)
- E-Mail-Kontingent: Unbegrenzt
Rate-Limit-Header
Jede API-Antwort enthaelt Ratenbegrenzungsinformationen:
HTTP/1.1 200 OKX-RateLimit-Limit: 1000X-RateLimit-Remaining: 999X-RateLimit-Reset: 1640995200X-RateLimit-Retry-After: 3600Header-Beschreibungen
X-RateLimit-Limit: Gesamtanzahl erlaubter Anfragen im aktuellen ZeitfensterX-RateLimit-Remaining: Verbleibende Anfragen im aktuellen ZeitfensterX-RateLimit-Reset: Unix-Zeitstempel, wann das Limit zurueckgesetzt wirdX-RateLimit-Retry-After: Sekunden bis zum naechsten Versuch
Nutzung ueberwachen
Aktuelle Nutzung pruefen
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) });};Dashboard-Ueberwachung
- Anmelden bei Ihrem Brevo Dashboard
- Navigieren zu Einstellungen -> API-Schluessel
- Nutzung anzeigen fuer jeden API-Schluessel
- Warnungen einrichten fuer sich naehernde Limits
Zuruecksetzungszeitfenster
- Tageslimits: Zuruecksetzung um 00:00 UTC
- Stundenlimits: Zuruecksetzung jede Stunde zur vollen Stunde
- Burst-Limits: Gleitendes Zeitfenster (letzte 60 Sekunden)
Ratenbegrenzungen behandeln
Exponentielles 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; } }};Tarif-Upgrades
Wenn Sie regelmaessig an Ratenlimits stossen:
- Nutzung analysieren: Ueberpruefen Sie, welche Endpunkte Sie am meisten nutzen
- Code optimieren: Caching und Batching implementieren
- Upgrade erwaegen: Bei Bedarf auf einen hoeheren Tarif wechseln
- Vertrieb kontaktieren: Fuer Enterprise-Anforderungen
Ausnahmen bei Ratenbegrenzungen
Webhook-Endpunkte
- Nicht den Standard-Ratenbegrenzungen unterworfen
- Separate Webhook-Zustellungslimits gelten
Health-Check-Endpunkt
/v3/pinghat gelockerte Limits- Fuer Monitoring und Verfuegbarkeitspruefungen konzipiert
Batch-Operationen
- Zaehlen als einzelne Anfrage, koennen aber Payload-Limits haben
- Effizienter als mehrere einzelne Anfragen