Prepare an application verification flow
For a separate application, identify the action being protected, the server responsible for verification, and the provider account owner. Use Twilio Verify’s Service, Verification, and Verification Check model. Do not copy demo-only routes into an application integration.1
Bind the intended action
Associate the destination and verification attempt with the application request. A checked phone code should not grant access to unrelated workspaces or actions.
2
Bound code delivery
Validate the destination before sending. Define cooldowns and attempt limits on the server, and display retry timing in the interface. Keep provider credentials and verification requests server-side.
3
Check the result
Continue only after the provider approves the verification. Handle expired, incorrect, and exhausted codes explicitly. Do not treat a successful send response as a successful check.
4
Handle the protected action separately
A later call can fail even after verification succeeds. Keep code status, action authorization, and call status distinct so the user receives an accurate result.
Existing demo behavior
The demo checks phone and IP eligibility, applies send limits, and can return retry timing. Its call flow requires the code check to succeed and has separate configuration and execution requirements. Keep OTP values out of logs, screenshots, and support tickets. For a failed attempt, distinguish invalid destination, send cooldown, wrong or expired code, and downstream call failure. Do not resend automatically after every error.Frequently asked questions
Does verification enable SMS on an imported number?
Does verification enable SMS on an imported number?
No. Workspace SMS routing remains disabled. Verification is a separate provider workflow.
Does an approved code establish consent for future calls?
Does an approved code establish consent for future calls?
Do not treat it as a substitute for reviewing the intended use, consent records, and applicable requirements. See call consent.