Límites globales
Brevo limita las peticiones a la API por endpoint. Cada límite es un número de peticiones por segundo (RPS), por hora (RPH) o ambos. Las cifras de abajo proceden de la página de límites de tasa de Brevo, consultada el 7 de octubre de 2026. Consulta esa página antes de dimensionar un trabajo grande.
Niveles de límite de tasa
| Nivel | Disponible en |
|---|---|
| General | Free, Starter, Standard, Professional y Enterprise |
| Advanced | Professional y Enterprise |
| Extended | Enterprise |
Límites por nivel
| Endpoint | General | Advanced | Extended |
|---|---|---|---|
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 |
Otros endpoints bajo /v3/smtp | 300 RPH | 600 RPH | 1.800 RPH |
Todos los endpoints bajo /v3/contacts | 10 RPS, 36.000 RPH | 20 RPS, 72.000 RPH | 60 RPS |
Todos los endpoints bajo /v3/loyalty | 600 RPH | 1.200 RPH | 100.000 RPH |
| Todos los demás endpoints | 100 RPH | 200 RPH | 600 RPH |
Cuando un endpoint tiene tanto un límite de RPS como uno de RPH, mantente por debajo de ambos.
Cabeceras de límite de tasa
Los endpoints con límite de tasa devuelven estas cabeceras:
HTTP/1.1 200 OKx-sib-ratelimit-limit: 1000x-sib-ratelimit-remaining: 750x-sib-ratelimit-reset: 1Descripción de las cabeceras
x-sib-ratelimit-limit: peticiones permitidas en la ventana actualx-sib-ratelimit-remaining: peticiones restantes en la ventana actualx-sib-ratelimit-reset: tiempo hasta que se reinicia la ventana, normalmente en segundos
Brevo documenta estas cabeceras en su página de cabeceras de límite.
Supervisar el uso
Comprobar el uso actual
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')) });};Gestionar los límites de tasa
Backoff exponencial
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');};Si sigues alcanzando los límites
- Reparte las peticiones de forma uniforme: un límite de 1.000 RPS permite hasta 60.000 peticiones por minuto solo cuando se reparten de forma uniforme.
- Agrupa y almacena en caché: usa los endpoints masivos y evita volver a leer datos que ya tienes.
- Usa webhooks para las estadísticas: recibe eventos en lugar de consultar con polling los endpoints de estadísticas.
- Plantéate un nivel superior: los niveles avanzado y extendido vienen con los planes Professional y Enterprise.