Rate Limits
Buffer applies API rate limits per client. The number of API keys and app clients you can create, along with how many requests each client can make over a rolling 15-minute, 24-hour, and 30-day window, depend on your Buffer plan.
| Feature | Free | Essentials | Team |
|---|---|---|---|
| API Keys | 1 | 3 | 5 |
| App Clients | 1 | 3 | 5 |
| 15-min limit | 100 | 100 | 100 |
| 24-hr limit | 100 | 250 | 500 |
| 30-day limit | 3,000 | 7,500 | 15,000 |
Does your integration require higher limits? Reach out to developersupport@buffer.com.
Response Headers
Rate limit information is included in the response headers:
RateLimit-Limit: 3000
RateLimit-Remaining: 850
RateLimit-Reset: 2024-01-01T12:00:00.000Z
Error Response
When a rate limit is exceeded, you will receive an HTTP 429 Too Many Requests response:
{
"errors": [
{
"message": "Too many requests from this client. Please try again later.",
"extensions": {
"code": "RATE_LIMIT_EXCEEDED",
"limitType": "CLIENT_ACCOUNT",
"retryAfter": 900
}
}
]
}
Use the retryAfter value (in seconds) to determine when you can make requests again.
Query Limits
In addition to rate limits, we enforce query-level limits to protect against overly complex or expensive GraphQL queries.
Query Complexity
Each query is assigned a cost based on the fields it requests:
- Scalar fields (e.g.,
id,name): 1 point each - Object fields (e.g.,
organization,channel): 2 points each - Nesting multiplier: Nested fields are multiplied by a factor of 1.5x per level of depth
The maximum allowed query cost is 175,000 points. If your query exceeds this, you will receive an error asking you to simplify it.
Query Depth
Queries are limited to a maximum depth of 25 levels. Deeply nested queries can cause exponential resource consumption, so keep your queries as flat as possible.
Aliases
A maximum of 30 aliases are allowed per query. Aliases let you rename fields in a response, but excessive use can be used to amplify query cost.
Directives
Queries are limited to a maximum of 50 directives.
Tokens
Queries are limited to a maximum of 15,000 tokens. This is a parser-level limit on the overall size of the query document.
Query Limit Error Responses
When a query limit is exceeded, you will receive a GraphQL error response:
{
"errors": [
{
"message": "Query exceeds maximum allowed complexity. Please simplify your query."
}
]
}
The error message will indicate which limit was exceeded (complexity, depth, aliases, directives, or tokens).
These limits may change as we evolve the API, so keep an eye on your usage.