Skip to content

Error codes

Every surface uses a closed set of error codes. Error responses never echo request input, tokens or claim values.

Authorization endpoint

Returned as query parameters on your redirect URI, with the original state:

?error=<code>&error_description=<text>&state=<state>
Code Meaning
access_denied The user denied consent or cancelled.
login_required The user must authenticate.
consent_required Consent is required and was not obtained.
invalid_request Malformed request or missing required parameter.
unauthorized_client The client may not use this flow.
unsupported_response_type The response type is not supported.
invalid_scope A requested scope is not allowed.
server_error Internal failure.
temporarily_unavailable Temporary outage.

Token endpoint

JSON body with an HTTP status:

{ "error": "<code>", "error_description": "<text>" }
Code Meaning
invalid_request Missing or malformed parameter.
invalid_client Client authentication failed.
invalid_grant Code or refresh token invalid, expired, revoked, already used, or issued to another client.
unauthorized_client The client may not use this grant.
unsupported_grant_type The grant type is not supported.
invalid_scope The requested scope is invalid.

UserInfo and the machine plane

JSON body { "error": "<code>" }.

Status Code Meaning
401 invalid_token Missing, expired, revoked or otherwise invalid token.
403 insufficient_scope The token does not carry the required scope (openid).
502 temporarily_unavailable Upstream verification failed; retry is safe.

Portal and registration errors

JSON body { "status": "error", "error": "<code>" }.

Code Meaning
invalid_request A field is malformed or missing.
no_session The portal session is gone.
forbidden The account does not own the object or lacks permission.
not_found No such object for this account.
quota_exceeded A quota is reached (tenants, production RPs, or local-dev RPs).
conflict Version conflict or duplicate.
unverified_host A production redirect host's domain is not proven.
local_development_non_loopback Local development was selected with a non-loopback host.
locked_invariant A locked protocol invariant was violated.
not_allowed A scope, grant type or value is outside the allow-list.
verification_failed The domain proof did not match.
identity_break A redirect-host change was refused.
step_up_required The session is not fresh enough.
csrf_rejected A state-changing request failed the origin/CSRF checks.
logo_too_large The logo exceeds the size limit.
logo_type_unsupported The logo is not PNG, JPEG or WebP.
terms_not_accepted The current operator terms were not accepted.
export_not_ready No signed export head is available yet.
upstream_error An upstream identity service call failed.
internal_error Internal failure.

Retry guidance

Surface / code Retry?
access_denied, invalid_grant, invalid_client No
temporarily_unavailable, server_error, export_not_ready Yes, with backoff
invalid_request, invalid_scope, locked invariants No — fix the request/configuration
Portal conflict / step_up_required Reload/re-authenticate, then retry