When you exceed a rate limit, the Brevo API returns a 429 Too Many Requests status code along with response headers describing the current rate limit status. Use these headers to monitor API usage and implement retry logic.
Use rate limit headers to:
All rate-limited endpoints include the following headers in their responses:

The x-sib-ratelimit-limit header indicates the maximum number of requests you can make in the current time window. This value depends on your account plan and the specific endpoint.
Example:
This means you can make up to 1,000 requests in the current time window.
The x-sib-ratelimit-remaining header shows how many requests you have left before hitting the rate limit. Monitor this value to avoid 429 errors.
Example:
This indicates 750 requests remain in the current time window.
The x-sib-ratelimit-reset header specifies when the rate limit counter resets. The value is expressed in the same granularity unit as the rate limit (typically seconds).
Example:
This means the rate limit resets in 45 seconds.
Use rate limit headers to implement retry mechanisms:
Before making requests, check the x-sib-ratelimit-remaining header to confirm you have capacity:
When you receive a 429 response, read the reset header to determine how long to wait:
Combine rate limit headers with exponential backoff for resilient error handling:
Check x-sib-ratelimit-remaining before making bulk requests to avoid hitting limits:
Rate limit headers are consistent for the same endpoint and account. Cache them to reduce unnecessary API calls when checking limits.
For high-volume operations like fetching statistics, use webhooks instead of polling. This reduces API calls and eliminates rate limit concerns.
Rate limit headers are included in all responses, not just 429 errors. Monitor them proactively to prevent rate limit issues.