API Limits
Rate limits are applied using a dual-layer strategy to ensure fair usage across all accounts and clients.
Rate Limits by Client Type
- Third-party Clients: 100 requests per 15 minutes
- Unknown/Unauthenticated: 50 requests per 15 minutes
- Account Overall (all clients combined): 2000 requests per 15 minutes
How It Works
Rate limits are applied in two layers:
- Client + Account: Limits requests per client and account combination. This prevents a single client from overwhelming the API for a specific account.
- Account Overall: Limits total requests per account across all clients. This prevents bypassing limits by using multiple clients simultaneously.
Response Headers
Rate limit information is included in the response headers:
RateLimit-Limit: 1000
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, the API enforces 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 continue to evolve the API, so please ensure you monitor your usage accordingly.