Rate limits

Understand API rate limits and how to handle rate limit responses

Overview

The Brevo API enforces rate limits to ensure platform stability and fair resource allocation. Rate limits restrict the number of API requests you can make within a specific time period.

The API provides three rate limit tiers:

  • General rate limits: Standard limits for most use cases. Available to all account types (Free, Starter, Standard, Professional, and Enterprise)
  • Advanced rate limits: Higher limits for advanced use cases. Available to Professional and Enterprise accounts
  • Extended rate limits: Maximum limits for high-throughput integrations. Available to Enterprise accounts

When you exceed a rate limit, the API returns a 429 Too Many Requests status code. Monitor rate limit headers in responses to track your usage and prevent errors.

Rate limits are expressed in two units

  • RPS (Requests per second): Maximum number of requests allowed per second
  • RPH (Requests per hour): Maximum number of requests allowed per hour

Some endpoints have both RPS and RPH limits. When both are specified, you must respect both limits simultaneously.

General rate limits


EndpointRate limitRequests per second
POST /v3/smtp/email
GET /v3/smtp/blockedContacts
3,600,000 RPH1,000 RPS
GET /v3/smtp/emails7,200 RPH2 RPS
POST /v3/transactionalSMS/sms540,000 RPH150 RPS
POST /v3/events36,000 RPH10 RPS
All endpoints under /v3/smtp/{…}*300 RPH-
All endpoints under /v3/contacts/{…}36,000 RPH10 RPS
All other endpoints100 RPH-
*Excludes POST /v3/smtp/email and GET /v3/smtp/blockedContacts, which have dedicated limits.

Advanced rate limits


EndpointRate limitRequests per second
POST /v3/smtp/email
GET /v3/smtp/blockedContacts
7,200,000 RPH2,000 RPS
GET /v3/smtp/emails10,800 RPH3 RPS
POST /v3/transactionalSMS/sms720,000 RPH200 RPS
POST /v3/events72,000 RPH20 RPS
All endpoints under /v3/smtp/{…}*600 RPH-
All endpoints under /v3/contacts/{…}72,000 RPH20 RPS
All other endpoints200 RPH-
*Excludes POST /v3/smtp/email and GET /v3/smtp/blockedContacts, which have dedicated limits.

Extended rate limits

RoutePolicy
POST /v3/smtp/email
GET /v3/smtp/blockedContacts
6,000 RPS
GET /v3/smtp/emails18,000 RPH
POST /v3/transactionalSMS/sms250 RPS
All endpoints under /v3/smtp/{…}*1,800 RPH
All endpoints under /v3/contacts/{…}60 RPS
POST /v3/events60 RPS
All other endpoints600 RPH
*Excludes POST /v3/smtp/email and GET /v3/smtp/blockedContacts, which have dedicated limits.

Handling rate limit errors

When you exceed a rate limit, the API returns a 429 Too Many Requests status code. Follow these practices to avoid rate limit errors:

Distribute requests evenly

Calculate your rate limit allowance and distribute requests evenly across the time window. For example, with a limit of 1,000 RPS, you can send up to 60,000 requests per minute if distributed evenly.

Upgrade to Enterprise

If your application requires higher throughput, upgrade to an Enterprise plan for increased rate limits.

Use webhooks for statistics

Instead of polling endpoints for statistics, implement webhooks to receive event-driven updates. This reduces API calls and improves efficiency.

Rate limit headers

The API includes rate limit headers in all responses to help you monitor usage and implement retry logic. Learn how to read and use these headers in the rate limit headers guide.

Platform quotas

Rate limits control request frequency, while platform quotas limit the maximum number of objects you can create (campaigns, contacts, lists, etc.). See the platform quotas guide for information on maximum limits for object creation in Brevo.