Глобални ограничения
Brevo налага глобални ограничения на честотата на заявките за всички крайни точки на API, за да осигури справедливо използване и оптимална производителност.
Нива на ограниченията
Безплатен план
- Дневно ограничение: 300 заявки
- Часово ограничение: 50 заявки
- Пиково ограничение: 10 заявки/минута
- Имейл кредити: 300/месец
План Starter
- Дневно ограничение: 20 000 заявки
- Часово ограничение: 1000 заявки
- Пиково ограничение: 100 заявки/минута
- Имейл кредити: неограничено
План Business
- Дневно ограничение: 50 000 заявки
- Часово ограничение: 3000 заявки
- Пиково ограничение: 300 заявки/минута
- Имейл кредити: неограничено
План Enterprise
- Дневно ограничение: по договаряне (100 000+)
- Часово ограничение: по договаряне (10 000+)
- Пиково ограничение: по договаряне (1000+/минута)
- Имейл кредити: неограничено
Хедъри за ограниченията
Всеки отговор на API включва информация за ограниченията:
HTTP/1.1 200 OKX-RateLimit-Limit: 1000X-RateLimit-Remaining: 999X-RateLimit-Reset: 1640995200X-RateLimit-Retry-After: 3600Описание на хедърите
X-RateLimit-Limit: общ брой разрешени заявки в текущия прозорецX-RateLimit-Remaining: оставащи заявки в текущия прозорецX-RateLimit-Reset: Unix времеви отпечатък, когато ограничението се нулираX-RateLimit-Retry-After: секунди изчакване преди нов опит
Наблюдение на потреблението
Проверка на текущото потребление
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) });};Наблюдение през таблото
- Влезте във Вашето табло в Brevo
- Отидете на Settings → API Keys
- Прегледайте потреблението за всеки API ключ
- Настройте известия при приближаване до ограниченията
Прозорци за нулиране на ограниченията
- Дневни ограничения: нулират се в 00:00 UTC
- Часови ограничения: нулират се всеки час в :00 минути
- Пикови ограничения: плъзгащ се прозорец (последните 60 секунди)
Работа с ограниченията
Експоненциално изчакване
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; } }};Надграждане на плана
Когато постоянно достигате ограниченията:
- Анализирайте потреблението: прегледайте кои крайни точки използвате най-много
- Оптимизирайте кода: внедрете кеширане и групиране на заявките
- Обмислете надграждане: преминете към по-високо ниво, ако е необходимо
- Свържете се с търговския отдел: за корпоративни изисквания
Изключения от ограниченията
Крайни точки за webhooks
- Не подлежат на стандартните ограничения
- Прилагат се отделни ограничения за доставка на webhooks
Крайна точка за проверка на състоянието
/v3/pingима облекчени ограничения- Създадена е за наблюдение и проверки на достъпността
Групови операции
- Броят се като една заявка, но може да имат ограничения за размера на данните
- По-ефективни са от множество отделни заявки