Buttondown enforces two types of rate limits:
| Endpoint | Rate limit |
|---|---|
| All API endpoints | 600 requests per minute |
POST /v1/subscribers | 100 requests per day |
info
Newsletters on paid plans with permanently active status are exempt from these rate limits.
Rate limit headers
Buttondown returns rate limit information in the response headers on every API request:
| Header | Description |
|---|---|
X-RateLimit-Limit | The maximum number of requests allowed in the current window |
X-RateLimit-Remaining | The number of requests remaining in the current window |
X-RateLimit-Reset | Unix timestamp (in seconds) when the rate limit window resets |
Here's an example of the headers you might see:
Exceeding the rate limit
If you exceed the rate limit, the API will return a 429 status code with a Retry-After header indicating how many seconds to wait before retrying:
You can use these headers to implement backoff logic in your client code.