Rate limits
Request limits, AI-endpoint caps, and how to back off.
The API is rate-limited to protect shared infrastructure. Limits apply per IP for public endpoints and per workspace for AI-backed endpoints.
Limits
| Scope | Limit | Applies to |
|---|---|---|
| Per IP (general) | 1,000 requests / minute | most /v1 endpoints |
| Per IP (auth) | 60 requests / minute | /v1/auth, /v1/oauth2 |
| Per workspace (AI) | 20 requests / minute | AI endpoints, e.g. POST /v1/custom-columns/infer, POST /v1/custom-columns/suggest-rules |
When you hit a limit
Over-limit requests return 429. Back off and retry after a short delay; for AI endpoints, wait for the per-minute window to reset. Treat 429 as transient — never as a hard failure.
{ "code": "RATE_LIMIT_EXCEEDED", "status": 429, "title": "Too Many Requests", "message": "Retry after the window resets", "meta": { "trace_id": "a1b2c3" } }Guidance
- Prefer cursor pagination with a sensible
limitover many small requests. - Batch where the endpoint supports it (e.g.
record_idsarrays on compute/values endpoints, up to 500). - Use exponential backoff with jitter on
429and5xx.