Skip to content

Errors

Every error response is JSON with a stable code field. We never leak stack traces. If the response doesn’t match this table, please report it.

{
"error": {
"code": "ssrf_blocked",
"message": "target_url host resolves to a private IP range"
}
}

Auth

StatusCodeMeaning
401missing_authNo Authorization header.
401invalid_api_keyKey not recognised, revoked, or malformed.
402payment_requiredCustomer plan is suspended.
403forbiddenResource exists but isn’t yours.

Validation

StatusCodeMeaning
400invalid_requestBody failed schema validation.
400ssrf_blockedtarget_url is private / non-https / .local.
400credential_mismatchtarget_hosttarget_url host.
400model_unavailableRequested model is not configured.
404not_foundResource ID doesn’t exist (or isn’t yours).

Rate / budget

StatusCodeMeaning
429rate_limitedPer-key request throttle. Use Retry-After.
429concurrent_sessionsYou’re at your concurrent-session limit (default 5).
409run_in_terminal_stateCancelling a run that has already finished.

Server / pipeline

StatusCodeMeaning
500internalUnexpected. We’ve logged it; please reference X-Request-Id.
502container_unavailableBrowser layer couldn’t start. We retry on your behalf.
503service_unavailableUpstream LLM or Container provider degraded.

What to retry

Retry on 429, 502, 503 with exponential backoff. Do not retry on 4xx validation errors — fix the request.