Skip to navigation

Rate limits

Per-key and per-workspace ceilings, reported on every response.

Every authenticated request counts, including one the operation then refuses. A request refused by the rate limit itself does not count.

Ceilings per minute

ClassPer keyPer workspace
Reads (including POST /calls/search and POST /usage/query)60600
Call starts (createCall)1060
Authoring writes30120
Ingestion, discovery and provisioning520

Lower limits of the platform (admission, quota and capacity) apply first when they are tighter.

Headers

HeaderMeaning
RateLimit-LimitRequests allowed in the current window, for the tightest applicable limit.
RateLimit-RemainingRequests left in the current window.
RateLimit-ResetSeconds until the current window resets.
Retry-AfterOn a 429: seconds to wait before retrying.

When you hit a limit

The API answers 429 rate_limited with Retry-After. details names the limit, the scope and the window (window_s). Wait Retry-After seconds, then resend the same request; for a mutation, keep the same Idempotency-Key.

429 quota_exceeded is a different refusal: a usage quota, not a request rate. It also carries Retry-After, and details describes the meter and period.

{
"error": {
"code": "rate_limited",
"message": "The request rate limit has been reached.",
"details": {"limit": 60, "scope": "key", "window_s": 60},
"request_id": "req_01j00000000000000000000000",
"retry": "retry_after"
}
}