Rate limits
Limits apply per workspace and are shared by all of its keys. Exports and incremental sync have their own budgets, so moving your data never competes with live traffic.
Limits by plan
| Plan | Standard API | Search | Bulk jobs at once | Realtime connections |
|---|---|---|---|---|
| Free | 300 per minute | 60 per minute | 1 | 2 |
| Starter | 1,000 per minute | 200 per minute | 2 | 5 |
| Growth | 3,000 per minute | 500 per minute | 5 | 20 |
| Enterprise | 10,000 per minute or custom | Custom | Custom | Custom |
OAuth apps also have a per-app share of the workspace limit, so one marketplace app cannot starve your other integrations. Changes to limits are announced in the changelog 30 days ahead.
Response headers
| RateLimit | The limit, what is left in this window, and seconds until it resets. Sent on every response. |
|---|---|
| RateLimit-Policy | The policy that applied, as requests per window in seconds. |
| Retry-After | Seconds to wait before retrying. Sent only with a 429. |
When you go over
The API answers 429 and tells you how long to wait. Nothing is dropped silently, and the request was not processed.
HTTP/1.1 429 Too Many Requests
RateLimit: limit=3000, remaining=0, reset=17
RateLimit-Policy: 3000;w=60
Retry-After: 17
Gripz-Request-Id: req_8F2KQ41Z
{
"error": {
"type": "rate_limit_error",
"code": "rate_limited",
"message": "Workspace limit of 3,000 requests per minute reached.",
"request_id": "req_8F2KQ41Z"
}
}