Rate Limits
The Brevo API limits requests per endpoint, not per day. Each limit is a number of requests per second (RPS), per hour (RPH), or both, and when both apply you must stay under both. Exceeding a limit returns 429 Too Many Requests.
Limits on the general tier
The general tier applies to every Brevo plan: Free, Starter, Standard, Professional and Enterprise. These are the limits Brevo publishes for it:
| Endpoint | Limit |
|---|---|
POST /v3/smtp/email, GET /v3/smtp/blockedContacts | 1,000 RPS, 3,600,000 RPH |
POST /v3/transactionalSMS/send | 150 RPS, 540,000 RPH |
All endpoints under /v3/contacts | 10 RPS, 36,000 RPH |
POST /v3/events | 10 RPS, 36,000 RPH |
POST /v3/orders/status | 5 RPS, 18,000 RPH |
POST /v3/products | 2 RPS, 7,200 RPH |
GET /v3/smtp/emails | 2 RPS, 7,200 RPH |
Other endpoints under /v3/smtp | 300 RPH |
All endpoints under /v3/loyalty | 600 RPH |
| All other endpoints | 100 RPH |
Professional and Enterprise accounts can use the advanced tier, which doubles most of these limits. Enterprise accounts can use the extended tier, the highest. See Global limits for the three tiers side by side, and Brevo’s rate limits page for the current figures.
Rate Limit Headers
Rate-limited endpoints return three headers:
x-sib-ratelimit-limit: 1000x-sib-ratelimit-remaining: 750x-sib-ratelimit-reset: 1x-sib-ratelimit-limit: requests allowed in the current windowx-sib-ratelimit-remaining: requests left in the current windowx-sib-ratelimit-reset: time until the window resets, usually in seconds
Best Practices
- Monitor rate limit headers
- Implement exponential backoff for retries
- Spread requests evenly across the window
- Cache responses when possible
- Use webhooks instead of polling