Buttondown enforces two types of rate limits:
| Endpoint | Rate limit |
|---|---|
| All API endpoints | 600 requests per minute |
POST /v1/subscribers | 100 requests per day |
If you find yourself running into the limit of 100 subscribers a day, it's likely due to one of two things:
- You are onboarding and performing an import one subscriber at a time. We'd encourage you to use the import path instead to upload multiple subscribers in bulk.
- You have a particularly high volume list which is growing rapidly. If this rate limit is causing problems, please reach out to support so we can form an audit on your account and lift the limit.
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:
Response
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:
Response
You can use these headers to implement backoff logic in your client code.
The daily subscriber-creation limit behaves differently: instead of a 429, it returns a 400 whose body points you to POST /v1/imports as the supported way to add subscribers in bulk.