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

Recognition

Twilio named a Leader in CPaaS for second consecutive year

How it works

Diagram of how the Twilio Verify API works

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.

Use cases 

Trusted user verification with a delightful user experience.

Login protection 

Protect users from account takeovers by sending verification codes upon login as a method of two-factor authentication (2FA).


Stripe keeps millions of users secure by asking them to verify their identities quickly and easily over phone calls or SMS with Verify.

Twilio Verify logo

~70%

of user verifications handled by Twilio Verify

Bar Graph showing an increase

6 point

improvement in login success rates in the US

Stripe login protection using Twilio Verify

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.

Learn more about Fraud Guard

  • 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.8 billion

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.


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

** Twilio 2024 internal data

*** Traider results with Twilio