Skip to main content

Errors

Errors are JSON with a stable machine-readable error code and a human message:

{ "error": "plan_limit_reached", "message": "Your plan allows 1 application set(s)…" }

The SDKs map these to typed exceptions. Only 429 is retried by the SDKs — everything else is a decision the service already made, so handle it, don't retry it.

Common codes

HTTPerrorMeaning
400validation_failedRequest body failed validation (see fields).
401invalid_credentialsWrong email/password.
401invalid_refresh_tokenRefresh token unknown or malformed.
401refresh_token_expiredRefresh token past its lifetime — re-authenticate.
401refresh_token_reusedA rotated token was replayed; the session family is revoked. Re-authenticate.
401invalid_token / invalid_token_useAccess token invalid, or a management token used where an audience token was required (or vice-versa).
403account_not_activeThe user, or an org above them, is disabled/suspended.
403access_deniedAuthenticated, but missing the required permission.
400unknown_audienceThe audience doesn't match a registered application.
400unknown_organizationReferenced organization doesn't exist or isn't reachable.
402plan_limit_reachedApplication-set cap reached — see Plans & limits.
409(conflict)E.g. a plan downgrade that current usage doesn't fit.
429(rate limited)Back off; the SDKs retry this one for you.

MFA and reset

errorMeaning
invalid_codeWrong TOTP / recovery code.
invalid_or_expired_pending_tokenThe short-lived MFA continuation token lapsed — log in again.
invalid_or_expired_reset_tokenPassword-reset link expired or already used.
note

Codes are contractual and safe to branch on. The message is for humans and may change — don't parse it.