This is the catalogue. Codes are grouped by family; within each row you get the meaning, the recommended user-facing copy (translate / brand as needed), the right programmatic response, and a link to the dedicated troubleshooting topic where one exists.
The codes are stable. Messages may improve between releases; match on code, not on message text.
Authentication
Code | User-facing copy | Programmatic |
|---|---|---|
| "The email or password is incorrect." | Show form error, allow retry |
| "This account has been disabled. Contact your administrator." | Stop sign-in; offer contact |
| "Too many failed attempts. Try again in a few minutes." | Surface |
| "Verify your email before signing in. Check your inbox for a link." | Offer "resend verification" |
| "Set a new password to continue." | Redirect to reset flow |
| (don't show — render MFA UI) | |
| "We need to set up MFA before you can sign in." | Render enrolment UI |
| (don't show — start step-up) | See Step-up |
| (don't show — render captcha) | See captcha_required |
OAuth flow
Code | User-facing copy | Programmatic |
|---|---|---|
| "Sign-in configuration error. Contact support." | Don't retry — config issue. Topic |
| "Sign-in configuration error. Contact support." | Don't retry — client_id or secret wrong |
| (varies) | The grant didn't match; usually means refresh_token expired or revoked |
| "Permission requested isn't allowed for this app." | Drop the bad scope; retry |
| "Sign-in configuration error. Contact support." | Client not allowed to use this grant |
| "Approve the requested permissions to continue." | Redirect through interactive auth |
| "Sign-in security check failed. Start from the home page." | CSRF defence — don't silent-retry. Show a clear restart path. |
| "Sign-in configuration error. Contact support." | Client missed code_challenge |
Session
Code | User-facing copy | Programmatic |
|---|---|---|
| (don't show — auto-refresh) | The access token's |
| "Your session has ended. Sign in to continue." | Refresh token TTL hit. |
| "Your session has been revoked. Sign in to continue." | Refresh token invalidated. |
| (don't show — retry) | Transient; one retry is appropriate |
MFA
Code | User-facing copy | Programmatic |
|---|---|---|
| "That code didn't work. Check your authenticator app and try again." | Allow re-enter |
| "Couldn't verify with your device. Try another method." | Offer fallback factor |
| "Couldn't send the code. Try again or use another method." | Offer fallback; check phone format |
| "Too many code requests. Wait a few minutes." | Surface |
| "That backup code didn't work." | Allow re-enter; remind it's single-use |
| "This sign-in took too long. Start over." | Restart the flow |
| "Sign-in session lost. Start over." | Restart the flow |
Network / platform
Code | User-facing copy | Programmatic |
|---|---|---|
| "Connection issue. Check your internet and try again." | Retry with backoff |
| "Too many requests. Try again in a moment." | Honour |
| "Something went wrong on our side. Try again shortly." | Retry; consider a circuit breaker |
| "We're temporarily unavailable. Check status." | Retry; check the platform status page |
| (varies — usually "Not found.") | Likely config; don't retry |
API / data
Code | User-facing copy | Programmatic |
|---|---|---|
| "You don't have permission to do that." | Don't retry |
| (use | Field-level errors |
| "That resource already exists." | Show what conflicts |
| "Something changed since you started. Refresh and try again." | Reload and retry |
Webhook delivery
These codes appear in your subscription's delivery feed, not in your application code (your code controls the receiver's response).
Platform-side observation | Meaning |
|---|---|
| Your receiver returned 5xx. Retry in progress. |
| Your receiver returned 4xx (not 2xx); retries continue. |
| No response within 10s. |
| TLS handshake failed. |
| All retries exhausted; event in DLQ. |
See webhook-delivery-failures for the diagnostic tree.
Custom Action (set by your tenant admin on a flow)
These codes appear when a custom Action — configured by your tenant admin on a sign-in or registration flow — blocks, times out, or errors. As an integrator you see the code; your tenant admin sees the Action's stack trace and configuration in the admin console.
Code | When |
|---|---|
| A custom Action returned |
| An Action ran past its wall-clock budget. |
| An Action threw an exception. The user sees a generic message; the tenant admin has the trace. |
How to use this index
Two patterns from production code:
// Pattern 1: switch on code for UX
function userMessage(err: IntelliAuthError): string {
switch (err.code) {
case 'invalid_credentials': return 'Email or password is incorrect.'
case 'account_locked': return `Too many attempts. Try again in ${err.details?.retry_after_s ?? 60}s.`
case 'session_expired': return 'Your session ended. Sign in to continue.'
case 'network_error': return 'Connection issue. Try again.'
default: return 'Something went wrong. Try again shortly.'
}
}
// Pattern 2: branch on family for retry strategy
function shouldRetry(err: IntelliAuthError): boolean {
return ['network_error', 'silent_auth_failed', 'server_error', 'service_unavailable'].includes(err.code)
}