Illustration showing how a business can use Verify to authenticate a user’s identity as an account security measure.

How it works

An illustration showing different user verification methods including Voice, SMS, WhatsApp, Email and more using Twilio.

Verify is a turnkey API for user verification. Add two-factor authentication across channels like SMS, email, WhatsApp, and TOTP or implement frictionless verification with Silent Network Authentication (SNA). 

Quickly integrate a one-time password authentication (OTP) solution that handles your connectivity, channels, code generation, fraud monitoring, and prevention.

Verify ROI


Forrester Consulting ROI calculator

A commissioned study by Forrester Consulting found Twilio Verify provided 174% ROI. Try our new calculator to estimate what your business can achieve with Verify.

Report on cost savings and benefits of Twilio Verify showing 174% ROI.

Use cases 

Trusted user verification with a delightful user experience.

Signup verification 

Prevent fake account creation and create a secure signup experience for new users with one-time passwords that can be delivered across channels.


Intuit set up one-time password (OTP) SMS messages to authenticate new customers across the globe while eliminating any friction along the way.

94%

deliverability across the globe

200+

countries deployed in 3 months

Smiling man talking on phone while using laptop, with Intuit logo in the corner.

Features

Global user verification is hard—Verify makes it easy.

Fraud Guard protects Verify users from expensive SMS pumping fraud

100% Protection from SMS pumping fraud with Fraud Guard

Fraud Guard has already saved customers over $62.7 million by blocking over 569 million** fraud attempts. With first-to-market innovation, Fraud Guard offers 100% protection against SMS pumping fraud.

  • Phone number management
    Verify procures and manages short codes, long codes, toll free, and global alpha-sender IDs to accelerate global expansion.
  • Carrier-approved templates
    Improve delivery rates with carrier-approved messages templates that automatically translate across 42 languages.
  • Actionable insight
    Dashboards provide conversion and success rates per region and channel, as well as SMS fraud trends to optimize against fraud.
  • Silent Network Authentication
    Secure authentication to protect end users, accounts, and transactions without requiring users to wait or leave your app.
  • PII-less, HIPAA-certified, SOC 2 Type 2
    Develop compliant healthcare and financial service applications that do not require users to provide personally identifiable information (PII).
  • Push authentication
    Embed push functionality in your apps easily.
  • Route optimization
    Verify uses premium telephony routes on Twilio's Super Network to prioritize deliverability and speed.
  • Rate limiting
    Verify's built-in platform protection for service rate limits give you turnkey protections with flexibility.
  • Multiple delivery channels
    OTP delivery via SMS, WhatsApp, voice, and email, all managed through a single API.
  • Global reach
    Verify manages the complexity of changing carrier and government regulations in 200+ regions and countries.

Get started with code

Integrate Verify into your app in as little as one sprint with its developer-first APIs and client libraries for a quick and confident deployment.

# Download the helper library from https://www.twilio.com/docs/ruby/install
require 'rubygems'
require 'twilio-ruby'

# Find your Account SID and Auth Token at twilio.com/console
# and set the environment variables. See http://twil.io/secure
account_sid = ENV['TWILIO_ACCOUNT_SID']
auth_token = ENV['TWILIO_AUTH_TOKEN']
@client = Twilio::REST::Client.new(account_sid, auth_token)

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

puts verification.sid
# Download the helper library from https://www.twilio.com/docs/python/install
import os
from twilio.rest import Client


# Find your Account SID and Auth Token at twilio.com/console
# and set the environment variables. See http://twil.io/secure
account_sid = os.environ['TWILIO_ACCOUNT_SID']
auth_token = os.environ['TWILIO_AUTH_TOKEN']
client = Client(account_sid, auth_token)

verification = client.verify \
                     .v2 \
                     .services('VAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX') \
                     .verifications \
                     .create(to='+15017122661', channel='sms')

print(verification.sid)
<?php

// Update the path below to your autoload.php,
// see https://getcomposer.org/doc/01-basic-usage.md
require_once '/path/to/vendor/autoload.php';

use Twilio\Rest\Client;

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

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

print($verification->sid);
// Download the helper library from https://www.twilio.com/docs/node/install
// Find your Account SID and Auth Token at twilio.com/console
// and set the environment variables. See http://twil.io/secure
const accountSid = process.env.TWILIO_ACCOUNT_SID;
const authToken = process.env.TWILIO_AUTH_TOKEN;
const client = require('twilio')(accountSid, authToken);

client.verify.v2.services('VAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
                .verifications
                .create({to: '+15017122661', channel: 'sms'})
                .then(verification => console.log(verification.sid));
// Install the Java helper library from twilio.com/docs/java/install

import com.twilio.Twilio;
import com.twilio.rest.verify.v2.service.Verification;

public class Example {
    // Find your Account SID and Auth Token at twilio.com/console
    // and set the environment variables. See http://twil.io/secure
    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(
                "VAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
                "+15017122661",
                "sms")
            .create();

        System.out.println(verification.getSid());
    }
curl -X POST "https://verify.twilio.com/v2/Services/VAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/Verifications" \
--data-urlencode "To=+15017122661" \
--data-urlencode "Channel=sms" \
-u $TWILIO_ACCOUNT_SID:$TWILIO_AUTH_TOKEN
// Install the C# / .NET helper library from twilio.com/docs/csharp/install

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 twilio.com/console
        // and set the environment variables. See http://twil.io/secure
        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",
            pathServiceSid: "VAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
        );

        Console.WriteLine(verification.Sid);
    }
}

Need help setting up Verify?

Bring your ideal solution to life with technology partners and top-tier consulting partners like Deloitte Digital, Perficient, and more. View partners

Verify and Lookup are better together

Get a comprehensive solution to cut costs, increase OTP conversions, and reduce fraud risk.

70% lower

lower cost-per-user and support costs with Verify’s real-time identity signals*

$62.7 million

saved by Verify Fraud Guard*

4.8B+

validations per year with Verify **

90% reduction

in user validation time using Lookup Identity Match***

Free trial and pricing. No credit card required.

Sign up for a free trial to get started. Then move to a pay-as-you go plan where you only pay for each successful verification.

Illustration of a woman holding a split credit card, with a smartphone and cloud in the background.

* based on Twilio's publicly available price list as of 7/14/2023

** Twilio 2024 internal data

*** Traider results with Twilio