Error catalog

Every error, and what unblocks it

All errors are structured JSON with error, message, and context; the message states the fix. Markdown twin: /errors.md.

codeHTTPunblock
PAYMENT_REQUIRED402Balance too low. Relay human_readable to the user verbatim; retry the SAME call after top-up (or enable auto-refill at the enable_url).
UNAUTHORIZED401Missing/invalid bearer. Get a token via POST /v1/signup; send it as Authorization: Bearer <token>.
AGENT_KILLED403The operator killed this agent token. Only the operator can revive it (/revive in the operator Telegram).
AGENT_REVOKED403Token permanently revoked. Ask the account operator for a new agent token.
POLICY_DENIED403A per-agent cap or allowlist blocked the call BEFORE dispatch. The body says which rule and who can raise it.
DAILY_CAP_REACHED429The account daily spend cap is hit. Resets 00:00 HKT; the operator can raise it via PUT /v1/policies.
RATE_LIMITED429Too many requests (60/min per token; 10/min unauthenticated per IP). Back off and retry in a minute.
UNKNOWN_API404No such slug. Discover slugs with GET /v1/search?q=.
API_PAUSED503This capability is temporarily paused (spend alarm or provider issue). Check GET /status; try another slug.
API_UNAVAILABLE503The capability is not configured on this deployment. Check /capabilities for what is live.
BYOK_REQUIRED402This slug needs YOUR provider key. Ask for a one-time vault link (get_vault_link / POST /v1/keys/link) — never paste keys into chat.
VAULT_KEY_MISSING409No vaulted key for this provider on this account. Same fix: one-time vault link.
KEY_UNREADABLE500The vaulted key could not be decrypted. Re-vault it via a fresh link; contact support if it repeats.
LINK_INVALID400Vault link malformed/expired (10-minute TTL). Request a new one.
LINK_USED409Vault links are single-use. Request a new one.
PROVIDER_ERROR502The upstream provider failed. Your debit is refunded automatically; retry, or check /status for a cluster.
RESPONSE_TOO_LARGE502Upstream response exceeded the proxy cap (default 2MB). Narrow the request.
PROXY_UNKNOWN_PROVIDER404No such proxy route. See PROXY routes in /llms-full.txt.
PROXY_BAD_PATH400The proxy path failed safety checks (no .., no absolute URLs).
REQUEST_CAP_REACHED429Daily request cap for an unpriced route. Resets 00:00 HKT.
CONSENT_REQUIRED400Auto-refill needs the saved-card consent flow first: open the enable_url (/mandate?ref=...).
BALANCE_CAP409The top-up would exceed the account balance cap ($100 default). Spend down first; over-cap Stripe payments park for review.
EMAIL_EXISTS409Account exists. Use the existing token, or POST /v1/token/rotate if it was lost.
SIGNUPS_PAUSED503Trial-abuse alarm paused signups. Try again later.
NOT_CONFIGURED503This deployment lacks a required secret for the feature. The operator has been signaled.
CONFLICT409The resource is already in the requested state (e.g. proposal already decided, refill already this period).
FORBIDDEN403Founder/operator-only surface.
BAD_REQUEST400The body/params are malformed; the message names the exact field shape expected.
NOT_FOUND404No such resource, or not yours (tickets and mandates are account-private).