Rate limits
Two-level fixed-window limits, X-RateLimit response headers, and 429 handling.
REST API (/v1) requests are rate limited by two levels of fixed-window counters; exceeding either returns 429:
| Level | Quota | Window |
|---|---|---|
| Tenant | 600 requests/min | 60s |
| API key | 120 requests/min | 60s |
These quotas are platform-wide settings: every tenant and every API key has the same quota, and they are not configured per account.
Response headers
These headers are sent only on the 429 (rate_limited) response, not on successful responses:
| Header | Description |
|---|---|
Retry-After | Seconds to wait before retrying |
X-RateLimit-Limit-Tenant / X-RateLimit-Remaining-Tenant | Tenant-level quota / remaining |
X-RateLimit-Limit-Key / X-RateLimit-Remaining-Key | Key-level quota / remaining |
X-RateLimit-Reset | Seconds until the quota resets |
Handling 429
details.scope names the exceeded level (tenant or api_key) and details.limit is its quota; details.retry_after_seconds equals the Retry-After header.
- Honor the
Retry-Afterheader (seconds) on the 429, then retry with the sameIdempotency-Key; - Bursty concurrency is the most common trigger; smooth out requests on the client side;
- Need a higher quota? Contact us via the console or your account manager.