Глобальные лимиты
Brevo ограничивает запросы к API для каждого эндпоинта. Каждый лимит задан числом запросов в секунду (RPS), в час (RPH) или обоими значениями. Приведённые ниже значения взяты со страницы лимитов Brevo, проверено 7 октября 2026 года. Проверьте эту страницу, прежде чем рассчитывать крупную задачу.
Уровни лимитов частоты запросов
| Уровень | Доступен на |
|---|---|
| Общий | Free, Starter, Standard, Professional и Enterprise |
| Расширенный | Professional и Enterprise |
| Максимальный | Enterprise |
Лимиты по уровням
| Эндпоинт | Общий | Расширенный | Максимальный |
|---|---|---|---|
POST /v3/smtp/email, GET /v3/smtp/blockedContacts | 1 000 RPS, 3 600 000 RPH | 2 000 RPS, 7 200 000 RPH | 6 000 RPS |
GET /v3/smtp/emails | 2 RPS, 7 200 RPH | 3 RPS, 10 800 RPH | 18 000 RPH |
POST /v3/transactionalSMS/send | 150 RPS, 540 000 RPH | 200 RPS, 720 000 RPH | 250 RPS |
POST /v3/events | 10 RPS, 36 000 RPH | 20 RPS, 72 000 RPH | 60 RPS |
POST /v3/orders/status | 5 RPS, 18 000 RPH | 10 RPS, 36 000 RPH | 15 RPS |
POST /v3/products | 2 RPS, 7 200 RPH | 4 RPS, 14 400 RPH | 21 600 RPH |
Прочие эндпоинты в разделе /v3/smtp | 300 RPH | 600 RPH | 1 800 RPH |
Все эндпоинты в разделе /v3/contacts | 10 RPS, 36 000 RPH | 20 RPS, 72 000 RPH | 60 RPS |
Все эндпоинты в разделе /v3/loyalty | 600 RPH | 1 200 RPH | 100 000 RPH |
| Все остальные эндпоинты | 100 RPH | 200 RPH | 600 RPH |
Если у эндпоинта есть и лимит RPS, и лимит RPH, укладывайтесь в оба.
Заголовки лимитов частоты запросов
Эндпоинты с ограничением частоты возвращают такие заголовки:
HTTP/1.1 200 OKx-sib-ratelimit-limit: 1000x-sib-ratelimit-remaining: 750x-sib-ratelimit-reset: 1Описание заголовков
x-sib-ratelimit-limit: число запросов, разрешённых в текущем окнеx-sib-ratelimit-remaining: число запросов, оставшихся в текущем окнеx-sib-ratelimit-reset: время до сброса окна, обычно в секундах
Brevo описывает эти заголовки на странице о заголовках лимитов.
Мониторинг использования
Проверка текущего использования
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-sib-ratelimit-limit'), remaining: response.headers.get('x-sib-ratelimit-remaining'), resetInSeconds: Number(response.headers.get('x-sib-ratelimit-reset')) });};Обработка лимитов частоты запросов
Экспоненциальная задержка
const makeRequestWithBackoff = async (url, options, maxRetries = 3) => { for (let i = 0; i < maxRetries; i++) { const response = await fetch(url, options);
if (response.status !== 429) return response;
const resetSeconds = Number(response.headers.get('x-sib-ratelimit-reset') || 1); const delay = Math.max(resetSeconds * 1000, 1000 * Math.pow(2, i));
console.log(`Rate limited. Waiting ${delay}ms before retry ${i + 1}`); await new Promise(resolve => setTimeout(resolve, delay)); } throw new Error('Rate limit retries exhausted');};Если вы постоянно упираетесь в лимиты
- Распределяйте запросы равномерно: лимит 1 000 RPS допускает до 60 000 запросов в минуту только при равномерном распределении.
- Группируйте и кэшируйте: используйте массовые эндпоинты и не перечитывайте данные, которые у вас уже есть.
- Используйте вебхуки для статистики: получайте события вместо того, чтобы опрашивать эндпоинты статистики.
- Рассмотрите более высокий уровень: расширенный и максимальный уровни входят в тарифы Professional и Enterprise.