Skip to main content
Version 0.1Draft

Error reference

How to use this page

This is a scannable lookup that maps each error to its HTTP status, where it appears, the likely cause, whether it is worth retrying, and the fix. For step-by-step diagnosis and worked examples, follow the links to the detailed pages: Common errors, OAuth and OIDC error codes, Token validation issues, and Redirect and domain issues.

Always capture the Support ID from the error before raising a ticket - see Diagnose a failing request.

Authorisation endpoint errors (returned on the redirect)

These arrive as error query parameters on your redirect_uri.

errorHTTPLikely causeRetry?Fix
invalid_request302Missing/malformed parameter (e.g. no scope=openid, bad redirect_uri, missing PKCE)NoCorrect the request; PKCE (S256) is required for all clients
unauthorized_client302The client is not allowed to use this flowNoCheck the Application registration with LuxID
access_denied302User cancelled, or cannot satisfy the requested auth_level (no eligible factor)NoOffer enrolment; do not auto-retry in a loop
unsupported_response_type302response_type other than code/none (e.g. implicit)NoUse response_type=code with PKCE
invalid_scope302scope missing openid or otherwise invalidNoSend a valid scope (openid minimum)
interaction_required / login_required / consent_required302prompt=none used but interaction is neededNoRe-run interactively (drop prompt=none)
unmet_authentication_requirements302Requested acr_values cannot be met by any available methodNoLower the requirement or guide the user to enrol the needed factor
server_error302Transient LuxID-side errorYesBackoff + retry; contact LuxID if it persists
temporarily_unavailable302LuxID temporarily overloaded/maintenanceYesHonour Retry-After; backoff

Token endpoint errors (JSON body)

Returned from POST /mga/sps/oauth/oauth20/token with an error field.

errorHTTPLikely causeRetry?Fix
invalid_request400Missing/duplicate parameter, malformed bodyNoFix the request
invalid_client401Bad/expired client_secret, or wrong client auth methodNoCheck/rotate the Client Secret
invalid_grant400Code already used/expired, redirect URI mismatch, refresh token already rotated/revoked, or concurrent refresh lost the raceNoStart a fresh authorisation; serialise refreshes
unauthorized_client400Client not permitted to use this grant typeNoCheck the Application registration
unsupported_grant_type400Grant not supported (e.g. client_credentials on the user tenant, password)NoUse authorization_code or refresh_token; for M2M see the Partner API

Bearer-token (UserInfo / API) errors

Returned via the WWW-Authenticate header.

ConditionHTTPLikely causeRetry?Fix
invalid_token401Access token expired, malformed, or revokedNoRefresh the token, then retry the call once
insufficient_scope403Token lacks the required scope for the resourceNoRequest the appropriate scope at authorisation time

Platform errors

ErrorHTTPLikely causeRetry?Fix
FEATURE_DISABLED ({"type":"FEATURE_DISABLED","message":"Feature disabled"})403The Application hit an endpoint for a feature not enabled for your PartnerNoRequest enablement via LuxID
redirect_uri_mismatch400/302The request redirect_uri does not exactly match a registered value (scheme, host, port, path, trailing slash)NoAlign the request to the registered URI; see Redirect and domain issues
Rate limited429Too many requestsYesHonour Retry-After; reduce rate. See Calling LuxID reliably
Service error5xxTransient LuxID-side errorYesBackoff + retry; contact LuxID if it persists

ID-token validation failures (client-side)

These are not HTTP errors - they are checks your application performs after receiving a token. Reject the token if any fail.

CheckFailure causeFix
Signature (RS256, by kid)Wrong/rotated key, tampered tokenRefresh JWKS once; reject if still invalid. See Key management
issNot exactly https://login.luxid.luReject - not issued by LuxID
aud / azpToken issued to another clientReject (token substitution)
expExpired (allow ≤ 60 s clock skew)Re-authenticate or refresh
nonceDoes not match the value you sentReject (replay)
acrBelow your required auth_levelStep up; never assume the requested level was reached

See Token validation issues for code samples.

Updated 2026-05-28