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 forRetry-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
- QuickstartA key, a first call to Helm’s general model, then a model of your own: forecasts and outcomes.
- API referenceEvery route of the Helm Decision API, with its method, path, scope and what it does.
- MCP connectorRead-only tools over JSON-RPC 2.0, for agents and model clients.
- WebhooksEvent types, how a delivery is signed, and the delivery log.
- Use your own modelHave Helm ask your own server for a model’s answers, then seal, score and calibrate them.