Reference

Errors

Error codes from the OAuth endpoints, the Management API, the hosted pages and the SDK, and what to do about each.

View .md llms.txt

#Authorization endpoint

Returned to your redirect_uri as ?error=…&error_description=…&state=… (or in the fragment for the implicit flow).

errorCauseFix
invalid_requestA missing or malformed parameter (PKCE missing for a public client, unsupported code_challenge_method, …)Read error_description
unauthorized_clientThe application may not use this flow (e.g. implicit not turned on)Use authorization code + PKCE, or enable the grant
unsupported_response_typeresponse_type isn't code (or an implicit type the app allows)
invalid_scopeA scope the tenant doesn't knowDefine it on the API
invalid_targetaudience isn't one of your APIsCheck the API identifier
access_deniedThe user declined consent, or cancelledLet them try again
login_requiredprompt=none and no sessionStart a normal sign-in
consent_requiredprompt=none and consent is neededStart a normal sign-in
request_not_supportedrequest or request_uri was sentSend plain parameters

An unknown client_id or a redirect_uri that isn't registered never redirects: the user sees an error page, because sending them to an unverified URL would be unsafe.

#Token endpoint

JSON { "error": "…", "error_description": "…" }, status 400 unless noted.

errorCause
invalid_requestMissing parameter
invalid_client (401)Unknown client, wrong secret, or no authentication for a confidential client
invalid_grantThe code is wrong, used or expired; the PKCE verifier doesn't match; the redirect_uri differs; the refresh token is expired, revoked or reused; the session ended; a wrong password (password grant), or two-factor is needed
unauthorized_clientThe grant isn't enabled for this application
unsupported_grant_typeUnknown grant_type
invalid_scopeMore scopes than allowed (client credentials) or than originally granted (refresh)
invalid_targetUnknown audience
access_deniedClient credentials for an API the application hasn't been given access to
authorization_pending, slow_down, expired_tokenDevice flow: keep polling, poll slower, start over

#Management API

JSON { "error", "error_description"?, "details"? }. See the Management API reference.

#Hosted pages

What users see is translated; the codes (in the activity log and some redirects) are:

CodeMessage (English)
invalid_credentialsLogin failed
account_blockedAccount has been blocked
too_many_attemptsToo many attempts. Please try again later.
transaction_expiredThis sign-in request has expired. Please start again from the application.
method_disabledThis sign-in method is not available.
registration_disabledRegistration is not available.
signups_pausedNew accounts can't be created for this application right now. (Free plan above its user limit)
quota_exceededSign-in is temporarily unavailable for this application.
upstream_errorSign-in is temporarily unavailable. (Your adapter or an identity provider failed)
social_failedSigning in with {provider} did not complete.
sms_unavailableWe can't send a text message to this number. (Country not allowed, or SMS not available on the plan)
link_invalidThis sign-in link is invalid, has expired or was already used.
invalid_code, code_expiredThe one-time code is wrong, or expired

Every text can be changed per language under Translations.

#SDK

NineError codes are listed in the SDK reference.