When the text can't be sent
Each failure gets its own honest screen, and every one has a way forward (retry, change number, or continue). Today any send failure falls through sendError to 401 UNKNOWN "Authentication failed", which looks to the client like the session ended. The manifest asks for 502 SMS_SEND_FAILED, 503 SMS_UNAVAILABLE, 429 RATE_LIMITED, 400 PHONE_INVALID, and 409 PHONE_UNAVAILABLE (Δ).
- Account (completed)
- Phone (current step)
- Email (not started)
Text messages aren't available right now
We can't send verification texts at the moment. Your account is ready — you can add your phone later from Settings → Security.
- Account (completed)
- Phone (current step)
- Email (not started)
Text messages aren't available right now
We can't send verification texts at the moment. Your account is ready — you can add your phone later from Settings → Security.
error-send · send failed (502)
502 SMS_SEND_FAILED: the provider rejected or timed out. Retry once, or change the number. Raw provider text is never shown.
- Account (completed)
- Phone (current step)
- Email (not started)
We couldn't send the code
Something went wrong sending a text to +44 •••• •• 0123. Check the number and try again.
error-send · send failed under required
Same screen, but Skip is replaced by Continue for now (a deferral; re-prompted at next sign-in). Every failure state in 05, 06 and 08 follows this swap.
- Account (completed)
- Phone (current step)
- Email (not started)
We couldn't send the code
Something went wrong sending a text to +44 •••• •• 0123. Check the number and try again.
error-rate-limited · 429 on a resend (code pending)
429 RATE_LIMITED + Retry-After on /start while phonePending is true. The earlier code still works, so "I already have a code" goes back to enter-code.
- Account (completed)
- Phone (current step)
- Email (not started)
Please wait a moment
You've asked for several codes in a short time. The code we already sent still works. You can request another in 4:59.
Please wait before requesting another code.
error-rate-limited · 429 on the first send (no code)
The same 429 when no challenge exists yet (phonePending absent: per-IP or per-number limit). There is no "I already have a code", because nothing was sent. The only options are to wait or skip.
- Account (completed)
- Phone (current step)
- Email (not started)
Please wait a moment
Too many codes have been requested for this number or from this device. You can request a code in 4:59.
Please wait before requesting a code.
error-rate-limited · first send, under required
Same first-send 429, but the user can't Skip under required. The escape is Continue for now (continue-without-phone), and they are re-prompted at the next sign-in. The countdown is the server's Retry-After (Δ: sms-service must pass it through).
- Account (completed)
- Phone (current step)
- Email (not started)
Please wait a moment
Too many codes have been requested for this number or from this device. You can request a code in 4:59.
Please wait before requesting a code.
error-unavailable · SMS channel unavailable (503)
503 SMS_UNAVAILABLE mid-flow (transport went down after /methods said sms: true). This is an honest degrade: Continue exits via nextAfterPhone() under both policies. If /methods says sms: false up front, the step is never shown (08).
- Account (completed)
- Phone (current step)
- Email (not started)
Text messages aren't available right now
We can't send verification texts at the moment. Your account is ready — you can add your phone later from Settings → Security.
error-number-unavailable · number in use (409, no enumeration)
409 PHONE_UNAVAILABLE is returned only by /confirm, after a correct code. /start answers 202 for any well-formed number, so someone without the phone can't probe whether a number is registered. Only the phone's owner ever sees this screen, and the copy still doesn't confirm another account exists.
- Account (completed)
- Phone (current step)
- Email (not started)
This number can't be used here
Try a different mobile number. If this number is already set up on another account of yours, remove it there first.
error-number-unavailable · under required
Same 409, but Skip isn't allowed. The escape is Continue for now (continue-without-phone), alongside "Use a different number", so a user with only one phone isn't stuck. They are re-prompted at the next sign-in.
- Account (completed)
- Phone (current step)
- Email (not started)
This number can't be used here
Try a different mobile number. If this number is already set up on another account of yours, remove it there first.
error-phone-unsupported · server rejects number (400)
400 PHONE_INVALID: passed the client check, but the server can't text it (landline, unsupported region). Stays on enter-phone with an inline error.
- Account (completed)
- Phone (current step)
- Email (not started)
Add your phone number
We'll text you a 6-digit code to confirm this number is yours. It's saved to your account as a verified contact number.