invalid_request | All OAuth2 endpoints | Malformed request — missing parameter, bad encoding, wrong content type. | Validate your request shape against the Endpoints reference. |
invalid_client | /oauth2/token | Wrong client_id, wrong client_secret, or wrong authentication method. | Use HTTP Basic auth with URL-encoded client_id:client_secret. |
invalid_grant | /oauth2/token | Code reused, code expired (10 min window), PKCE mismatch, or refresh token already rotated (family revoked). | For codes: make your callback handler idempotent — deduplicate on state or the code itself. For refresh tokens: treat as a hard disconnect and prompt re-authorization. |
invalid_scope | /oauth2/auth | Scope not in the catalog, or not in your approved_scopes. | Compare your requested scopes against the catalog and your approved set on the dashboard. |
unauthorized_client | /oauth2/auth | Client status is pending, rejected, or suspended. | Check your app status on the dashboard. |
access_denied | Callback (/callback) | User clicked Cancel on the consent screen. | Render a “continue without connecting” path in your UI. |
redirect_uri does not match | OAuth2 endpoints | redirect_uri is not byte-identical to a registered URI. | Compare bytes against the dashboard value. Check trailing slash, scheme, port, path casing. |