Skip to content

Developers

Limits

Rate and concurrency belong to the key; money belongs to the workspace. Every limit answers with a code you can act on.

Every limit, and its answer

Wait for Retry-After, or until resets_at on a 402.
Applies toLimit and answer
keyRequest rate — 429 rate_limited, with Retry-After
keySpend rate — 429 spend_rate_limited, with Retry-After
keyConcurrent fan-outs — 429 too_many_in_flight, Retry-After: 15
keyJobs in flight — 429 too_many_jobs_for_key, Retry-After: 60
tenantJobs in flight — 429 too_many_jobs, Retry-After: 60
keyKey daily budget — 402 insufficient_credits, scope: key, resets_at
tenantWorkspace daily allowance — 402 insufficient_credits, scope: tenant, resets_at
userYour daily allowance — 402 insufficient_credits, scope: user, resets_at
serviceJob queue full — 503 job_queue_full, Retry-After: 60

Every retryable refusal carries Retry-After. There are no X-RateLimit-* headers.

Each route’s own refusals, with their codes, are in the contract: GET /v1/openapi.yaml.

Next