Globális korlátok
A Brevo globális hívási korlátokat érvényesít az összes API-végponton, hogy mindenki tisztességesen használhassa a rendszert, és a teljesítmény optimális maradjon.
Korlátozási szintek
Free csomag
- Napi korlát: 300 kérés
- Órás korlát: 50 kérés
- Csúcskorlát: 10 kérés/perc
- E-mail-kreditek: 300/hónap
Starter csomag
- Napi korlát: 20 000 kérés
- Órás korlát: 1 000 kérés
- Csúcskorlát: 100 kérés/perc
- E-mail-kreditek: korlátlan
Business csomag
- Napi korlát: 50 000 kérés
- Órás korlát: 3 000 kérés
- Csúcskorlát: 300 kérés/perc
- E-mail-kreditek: korlátlan
Enterprise csomag
- Napi korlát: egyedi (100 000+)
- Órás korlát: egyedi (10 000+)
- Csúcskorlát: egyedi (1 000+/perc)
- E-mail-kreditek: korlátlan
Korlátozási fejlécek
Minden API-válasz tartalmazza a korlátozási információkat:
HTTP/1.1 200 OKX-RateLimit-Limit: 1000X-RateLimit-Remaining: 999X-RateLimit-Reset: 1640995200X-RateLimit-Retry-After: 3600A fejlécek jelentése
X-RateLimit-Limit: az aktuális időablakban engedélyezett kérések számaX-RateLimit-Remaining: az aktuális időablakban még hátralévő kérések számaX-RateLimit-Reset: Unix időbélyeg, amikor a korlát nullázódikX-RateLimit-Retry-After: hány másodpercet kell várni az újrapróbálkozásig
A használat követése
Az aktuális használat ellenőrzése
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) });};Követés az irányítópulton
- Jelentkezz be a Brevo irányítópultjára
- Navigálj a Settings → API Keys menüpontra
- Nézd meg a használatot minden API-kulcsnál
- Állíts be riasztásokat a korlát közeledtére
A korlátok nullázódási időablakai
- Napi korlátok: 00:00 UTC-kor nullázódnak
- Órás korlátok: minden óra :00 percében nullázódnak
- Csúcskorlátok: csúszó időablak (az utolsó 60 másodperc)
A korlátok kezelése
Exponenciális visszalépés
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; } }};Csomagbővítés
Ha rendszeresen eléred a korlátokat:
- Elemezd a használatot: nézd meg, mely végpontokat használod a legtöbbet
- Optimalizáld a kódot: építs be gyorsítótárazást és kötegelt hívásokat
- Fontold meg a bővítést: ha kell, lépj magasabb szintre
- Vedd fel a kapcsolatot az értékesítéssel: vállalati igények esetén
Kivételek a korlátozás alól
Webhook-végpontok
- Nem vonatkoznak rájuk a szokásos hívási korlátok
- Külön webhook-kézbesítési korlátok érvényesek
Állapotellenőrző végpont
- A
/v3/pingenyhébb korlátokkal működik - Monitorozásra és rendelkezésre állás ellenőrzésére tervezték
Kötegelt műveletek
- Egyetlen kérésnek számítanak, de lehetnek adatméretkorlátok
- Hatékonyabbak, mint több különálló kérés