Network status
GET /v1/network is public and cheap: it reads cached results of background probes that run about once a minute, and it never calls a provider on your behalf.
Each component has an
id, a status (operational, degraded, down or unknown), a short snake_case reason (null when operational), the actions it affects, since (when it entered this status) and checked_at.
A probe that times out or errors reports
probe_failed. One failed probe reads degraded. Two in a row read down. Every component is unknown until its first probe.
The status is advisory. The API never refuses a request because of it, so an action can succeed while a component reads
down, and fail while it reads operational. Read it after route_unavailable or provider_unavailable. If a component your action depends on is down, wait and retry later instead of changing the request. After a provider_unavailable that is a recorded execution outcome (no meta.retryable), check one_click and send the work again under a new Idempotency-Key once it reports operational.Quotas
GET /v1/quotas shows your limits and what you have used.
overrides lists limits the operator changed for your account, and revision counts those changes. limits is what applies to you now. The numbers above are the defaults. Always read your own.
limits and usage cover only agents created per day and the two request rates. The deposit, grant, wait and cooldown limits in the table below are not in the response.
Limits
The partner-account request limit, the agent limit and the deposit limit are shared by all of your keys, so creating more keys never raises them. Request limits apply to every call that needs an API key.
GET /v1/network and GET /v1/tokens need none. Every attempt counts against its key, refused ones too. Only an attempt within the key’s own allowance counts against the partner account, so a key that is over its limit cannot use up the partner’s.
GET /v1/whoami
Checks that a key works and says which partner account it belongs to.
HTTP 429
A429 means “later”. These codes carry the time to retry:
Each of them returns:
errors[0].meta.retryable: trueerrors[0].meta.available_at, an ISO 8601 time when the limit frees up- a
Retry-Afterheader with the wait in whole seconds
rate_limited (429) with Retry-After: 10 and errors[0].meta.retryable: true, but no meta.available_at. Retry after 10 seconds.
provider_rate_limited is also a 429, but it comes from a service behind the API. It has no available_at, and it always carries Retry-After: 10. Nothing was sent. With meta.retryable true, repeat the same request after the wait, under the same Idempotency-Key where the request took one. Without it, the refusal is recorded as the operation’s outcome, so send the work again under a new key after the wait.
Next steps
Status & Errors
Every error code, with its HTTP status and what to do.
Executions
Run actions under a grant.