User verification and identity

Protect your platform from fraud and keep customer accounts secure with mobile identity signals and multi factor user authentication across sign-up, login and account management.

Protect users with multi factor user authentication

Use cases for OTP verifications and mobile intelligence signals

Implement a complete user verification solution to protect customers across the entire journey.

  • Phone with checkmark
    Signup verification

    Prevent fake account creation and establish phone number or email ownership when a user signs up.

  • Security password form field
    Login protection

    Protect against account takeover and password theft by requesting user verification at login.

  • Security padlock
    Secure transactions

    Validate users in real time so you can confidently authorize high-value online transactions.

  • Twilio Email Verification logo
    Account management

    Update personal information with confidence and protect PII.

  • Sheild with a user symbol
    Fraud prevention

    Stop SMS Pumping Fraud, SIM Swap fraud and man-in-the-middle attacks.

How to build secure user authentication

Implement a user authentication solution in days. No need to multisource vendors.

Step 1
Create verification service
Create a verification service with Twilio. This is the set of common configurations used to create and check verifications.

Step 2
Send a verification token
Send a token to your end user through their preferred communication channel, like SMS, voice call, email, or WhatsApp. 

Step 3
Check the verification token
See if the token the user provided is correct. If it’s correct, the request is approved and if it’s incorrect, it stays pending.

Send and check a verification token using Twilio Verify

What you need to build intelligent user verification with Twilio

Easy-to-deploy APIs for user verification to prevent fraud, improve user conversion, and lower operational costs.



What it does

Turnkey API to verify users over any channel

Query real-time phone intelligence data to verify phone number validity


SMS, voice, WhatsApp, email, TOTP, Push, Silent Network Authentication



4.5 billion customer verifications per year

Verify user identities across mobile, landline, fixed and non-fixed VoIP, toll free


94%+ global delivery rate*

Route optimization on Twilio Super Network for high deliverability

Use mobile signals to confirm user identities reliably


65%+ global conversion rate*

Filter out unwanted or unreachable phone numbers with Line Type Intelligence and Reassigned Number

Fraud prevention

Identify potentially fraudulent numbers, SIM swapped numbers, numbers associated with SMS pumping


Carrier-approved templates that are automatically translated across 42 languages



Conversion and success rates per region, and channel


Learn more

Build and launch a verification use case in days

Sign up for a free Twilio account to start verifying user identities today. Use quickstarts, up-to-date docs, the Twilio CLI, and CodeExchange to build a prototype quickly.

// Send a SMS verification using Twilio with Python
import os 
from import Client

account_sid = os.environ['TWILIO_ACCOUNT_SID'] 
auth_token = os.environ['TWILIO_AUTH_TOKEN']
client = Client(account_sid, auth_token)
verification = client.verify \
             .v2 \
             .verifications \
             .create(to='+15017122661', channel='sms')
// Install the C# / .NET helper library from

using System;
using Twilio;
using Twilio.Rest.Verify.V2.Service;

class Program
    static void Main(string[] args)
        // Find your Account SID and Auth Token at
        // and set the environment variables. See
        string accountSid = Environment.GetEnvironmentVariable("TWILIO_ACCOUNT_SID");
        string authToken = Environment.GetEnvironmentVariable("TWILIO_AUTH_TOKEN");

        TwilioClient.Init(accountSid, authToken);

        var verification = VerificationResource.Create(
            to: "+15017122661",
            channel: "sms",

// Update the path below to your autoload.php,
// see
require_once '/path/to/vendor/autoload.php';

use Twilio\Rest\Client;

// Find your Account SID and Auth Token at
// and set the environment variables. See
$sid = getenv("TWILIO_ACCOUNT_SID");
$token = getenv("TWILIO_AUTH_TOKEN");
$twilio = new Client($sid, $token);

$verification = $twilio->verify->v2->services("VAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
                                   ->create("+15017122661", "sms");

# Download the helper library from
require 'rubygems'
require 'twilio-ruby'

# Find your Account SID and Auth Token at
# and set the environment variables. See
account_sid = ENV['TWILIO_ACCOUNT_SID']
auth_token = ENV['TWILIO_AUTH_TOKEN']
@client =, auth_token)

verification = @client.verify
                      .create(to: '+15017122661', channel: 'sms')

puts verification.sid
// Download the helper library from
// Find your Account SID and Auth Token at
// and set the environment variables. See
const accountSid = process.env.TWILIO_ACCOUNT_SID;
const authToken = process.env.TWILIO_AUTH_TOKEN;
const client = require('twilio')(accountSid, authToken);'VAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
                .create({to: '+15017122661', channel: 'sms'})
                .then(verification => console.log(verification.sid));
// Install the Java helper library from

import com.twilio.Twilio;

public class Example {
    // Find your Account SID and Auth Token at
    // and set the environment variables. See
    public static final String ACCOUNT_SID = System.getenv("TWILIO_ACCOUNT_SID");
    public static final String AUTH_TOKEN = System.getenv("TWILIO_AUTH_TOKEN");

    public static void main(String[] args) {
        Twilio.init(ACCOUNT_SID, AUTH_TOKEN);
        Verification verification = Verification.creator(

curl -X POST "" \
--data-urlencode "To=+15017122661" \
--data-urlencode "Channel=sms" \

Verify quickstart documentation

Get set up with a Twilio account, set up your development environment, validate phone numbers with Lookup, send your first phone verification token with Verify, and validate the token.

Lookup quickstart documentation

Get set up with a Twilio account, set up your development environment, validate and format phone numbers with a Basic Lookup request then use Line Type Intelligence Lookup to see the phone number type.

Why Verify over Programmable Messaging

Verify is a purpose-built user verification solution for reliably sending one-time passwords over SMS and voice, WhatsApp, email, push and Silent Network Authentication, and TOTP.

Prefer not to code? No problem.

Work with one of our trusted partners to get coding support or explore a pre-built user authentication solution.

Work with Twilio Professional Services to set up global call tracking for your company

The Twilio difference

Fast and reliable delivery for user verification messages to keep your platform protected.

Send verification messages using Twilio

*  Based on those customers who provide conversion data
** Terms and conditions apply