Rate Limiting
We have multiple rate limiting policies in place to reduce the opportunity for the abuse of our server resources.
If you have a use case that requires higher limits, please reach out to us.
Rate Limit Policies
There is a limit to how many requests will be handled within the rolling time window.
| Policy Name | Window | Limit (requests) |
|---|---|---|
| Burst | 1 Minute (60,000 ms) | 100 |
| Sustained | 1 Hour (3,600,000 ms) | 1000 |
Server Responses
There will always be some headers showing the rate limit policies.
When you surpass a rate limit policy, the server will respond with a 429 code and a JSON body containing the errors, and add a "Retry-After" header.
| Key | Description |
|---|---|
| RateLimit | Policy name; requests remaining; milliseconds till oldest request "expires" |
| RateLimit-Policy | Policy name; request quota; rolling window duration in seconds |
| Retry-After | Number of seconds to wait till next request |
429 Response
In the JSON Body, each error will have meta-data that provides the more detailed information about what happened, and what to do about it.
Each policy violation will be its own error.
Example JSON Response Body
{
"errors": [
{
"errorUID": "error_...",
"code": "too-many-requests",
"message": "You've made too many requests. Try again later.",
"meta": {
"policy": "burst",
"limit": 100,
"window_ms": 60000,
"reset_time": "2025-12-02T18:03:13.446Z",
"retry_after": 60
}
}
]
}
Response Headers
| Key | Description |
|---|---|
| RateLimit | "burst"; r=0; t=60 |
| RateLimit | "sustain"; r=0; t=3507 |
| RateLimit-Policy | "burst"; q=1; w=60; pk=:MWM2NmI5OTdlN2Zj: |
| RateLimit-Policy | "sustain"; q=10; w=3600; pk=:MWM2NmI5OTdlN2Zj: |
| Retry-After | 60 |