Глобальные лимиты
Brevo применяет глобальные лимиты частоты запросов ко всем эндпоинтам API, чтобы обеспечить справедливое использование и оптимальную производительность.
Уровни лимитов частоты запросов
Тариф Free
- Дневной лимит: 300 запросов
- Часовой лимит: 50 запросов
- Пиковый лимит: 10 запросов в минуту
- Кредиты на email: 300 в месяц
Тариф Starter
- Дневной лимит: 20 000 запросов
- Часовой лимит: 1 000 запросов
- Пиковый лимит: 100 запросов в минуту
- Кредиты на email: без ограничений
Тариф Business
- Дневной лимит: 50 000 запросов
- Часовой лимит: 3 000 запросов
- Пиковый лимит: 300 запросов в минуту
- Кредиты на email: без ограничений
Тариф Enterprise
- Дневной лимит: индивидуальный (от 100 000)
- Часовой лимит: индивидуальный (от 10 000)
- Пиковый лимит: индивидуальный (от 1 000 в минуту)
- Кредиты на email: без ограничений
Заголовки лимитов частоты запросов
Каждый ответ 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; } }};Повышение тарифа
Если вы стабильно упираетесь в лимиты частоты запросов:
- Проанализируйте использование: изучите, какие эндпоинты вы используете чаще всего
- Оптимизируйте код: внедрите кэширование и пакетную обработку
- Рассмотрите повышение тарифа: при необходимости перейдите на более высокий уровень
- Свяжитесь с отделом продаж: для корпоративных требований
Исключения из лимитов частоты запросов
Эндпоинты вебхуков
- Не подпадают под стандартные лимиты частоты запросов
- Применяются отдельные лимиты доставки вебхуков
Эндпоинт проверки работоспособности
- У
/v3/pingсмягчённые лимиты - Предназначен для мониторинга и проверок доступности
Пакетные операции
- Считаются одним запросом, но могут иметь ограничения на размер полезной нагрузки
- Эффективнее, чем несколько отдельных запросов