Skip to main content

Concepts

Errors

Every failure is a typed code with an HTTP status and a retryable flag — the same across HTTP, MCP, the SDK and the CLI.

View as Markdown

Errors have one shape:

json
{
  "error": { "code": "BUSY", "message": "profile already has a live session", "retryable": true, "details": { "session_id": "…" } },
  "correlation_id": "6f1c…"
}

Branch on code, never on message. details carries typed facts when there are any (the busy session, the field that failed validation, the limit that was reached). Quote correlation_id when you contact support or file feedback.

Codes

CodeHTTPRetryableMeaning
UNAUTHENTICATED401noMissing, invalid, revoked or expired key
FORBIDDEN403noThe key or its member lacks the capability
REAUTH_REQUIRED403noA sensitive action needs a fresh sign-in in the app
NOT_FOUND404noNothing visible to you at that id
VALIDATION_FAILED422noInput does not match the schema; details lists fields
CONFLICT409noStale expected_revision, or a reused command_id with another body
BUSY409yesThe resource is in use (for example the profile is open)
STALE_GRANT410noA ticket or grant was superseded
QUOTA_EXCEEDED429noA workspace limit is reached
RATE_LIMITED429yesToo many requests; wait for Retry-After
CAPACITY_UNAVAILABLE503yesNo capacity right now
DEPENDENCY_UNAVAILABLE503yesA service Browlix depends on did not answer
UNSUPPORTED501noNot supported here (for example by this worker version)
NETWORK_UNHEALTHY424noThe proxy or network check failed
INTEGRITY_FAILED422noData failed an integrity check
OUTCOME_UNKNOWN202yesAccepted, but the result could not be confirmed; check the receipt
RECOVERY_REQUIRED409noThe last session ended uncertainly; recover it first
SYNC_PENDING409yesAnother machine holds newer profile data
FENCED409noYour app hold on a session is no longer current; acquire it again
UNKNOWN500noUnexpected; report it with the correlation_id

Retrying

Retry only codes marked retryable, with backoff, and — for commands — with the same command_id. The SDK does this for you on reads and same-id commands, honouring Retry-After up to 10 seconds.