Limites Globais
O Brevo aplica limites de taxa globais em todos os endpoints da API para garantir utilização justa e desempenho ótimo.
Níveis de Limite de Taxa
Plano Gratuito
- Limite Diário: 300 pedidos
- Limite Horário: 50 pedidos
- Limite de Burst: 10 pedidos/minuto
- Créditos de E-mail: 300/mês
Plano Starter
- Limite Diário: 20.000 pedidos
- Limite Horário: 1.000 pedidos
- Limite de Burst: 100 pedidos/minuto
- Créditos de E-mail: Ilimitados
Plano Business
- Limite Diário: 50.000 pedidos
- Limite Horário: 3.000 pedidos
- Limite de Burst: 300 pedidos/minuto
- Créditos de E-mail: Ilimitados
Plano Enterprise
- Limite Diário: Personalizado (100.000+)
- Limite Horário: Personalizado (10.000+)
- Limite de Burst: Personalizado (1.000+/minuto)
- Créditos de E-mail: Ilimitados
Cabeçalhos de Limite de Taxa
Cada resposta da API inclui informações de limite de taxa:
HTTP/1.1 200 OKX-RateLimit-Limit: 1000X-RateLimit-Remaining: 999X-RateLimit-Reset: 1640995200X-RateLimit-Retry-After: 3600Descrições dos Cabeçalhos
X-RateLimit-Limit: Total de pedidos permitidos na janela atualX-RateLimit-Remaining: Pedidos restantes na janela atualX-RateLimit-Reset: Timestamp Unix quando o limite é reiniciadoX-RateLimit-Retry-After: Segundos a aguardar antes de tentar novamente
Monitorizar a Utilização
Verificar Utilização Atual
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) });};Monitorização no Painel
- Faça login no seu painel Brevo
- Navegue para Definições → Chaves de API
- Visualize a Utilização para cada chave de API
- Configure Alertas para limites aproximados
Janelas de Reinício do Limite de Taxa
- Limites diários: Reiniciam às 00:00 UTC
- Limites horários: Reiniciam a cada hora nos :00 minutos
- Limites de burst: Janela deslizante (últimos 60 segundos)
Gerir Limites de Taxa
Backoff Exponencial
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; } }};Upgrades de Plano
Quando atinge consistentemente os limites de taxa:
- Analise a Utilização: Reveja quais endpoints usa mais
- Otimize o Código: Implemente cache e processamento em lote
- Considere Upgrade: Passe para um nível superior se necessário
- Contacte Vendas: Para requisitos empresariais
Exceções de Limite de Taxa
Endpoints de Webhook
- Não sujeitos aos limites de taxa padrão
- Aplicam-se limites de entrega de webhook separados
Endpoint de Verificação de Saúde
/v3/pingtem limites mais relaxados- Projetado para monitorização e verificações de disponibilidade
Operações em Lote
- Contam como um único pedido mas podem ter limites de payload
- Mais eficientes do que múltiplos pedidos individuais