INVALID_OTP | 400 | Code wrong, expired, already used, or too many attempts |
OTP_RATE_LIMITED | 429 | Resend requested before the cooldown elapsed |
OTP_CHANNEL_DISABLED | 503 | Email/SMS delivery disabled or misconfigured |
INVALID_WALLET_SIGNATURE | 401 | Signature doesn't recover to the claimed address |
WALLET_NONCE_EXPIRED | 400 | Nonce missing, expired, or already consumed |
INVALID_GOOGLE_TOKEN | 401 | Google ID token failed verification |
INVALID_REFRESH_TOKEN | 401 | Refresh token unknown, revoked, or expired — log in again |
MISSING_ACCESS_TOKEN | 401 | No/malformed Authorization: Bearer header |
INVALID_ACCESS_TOKEN | 401 | Access token invalid or expired — refresh and retry once |
USER_NOT_FOUND | 404 | User row missing for an otherwise-valid token |