Pandemic Darlings The pandemic economy, in original documents
Home Source documents Verify API

Verify API

Summary

A Twilio marketing page for Verify API, a managed service that checks users' identities through one-time passcodes over SMS, email, WhatsApp, TOTP and Silent Network Authentication, and which Twilio says handles 4.8B+ verifications each year. Prices start at $0.05 per successful verification. The page cites customer results from Intuit, Stripe and Bitso, and describes Fraud Guard as offering 100% protection from SMS pumping fraud. It also promotes Stytch by Twilio Device Fingerprinting for device-level risk signals.

Summary drafted by a model from the document's text below and checked by script against that text before publication. It is a navigation aid, not a reading of what the document proves. Where AI is used

Full text

Verify API

Let good users in. Keep bad actors out with Verify API.

A fully managed turnkey API that verifies users over multiple channels at scale — handling 4.8B+ verifications each year.

Start for free View pricing

Prices starting at $0.05 per successful verification

No credit card required

Verify API at a glance

Get a short-and-sweet summary of Verify capabilities, use cases, and pricing in our Twilio Verify fact sheet.

How the 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.

And now, you can add Stytch by Twilio Device Fingerprinting for device-level risk signals that inform when to step up verification.

Explore docs

Build verification steps that feel like a feature, not a frustration

Trusted user verification with a downright 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

Read Intuit's story

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.

~70%

of user verifications handled by Twilio Verify

6

point improvement in login success rates in the US

Read Stripe's story

Secure transactions

Validate users in real-time so you can confidently authorize high-value online transactions and protect customers against fraud.

Bitso implemented Verify to improve global delivery for verification OTPs. They depend on reliable user verification messages to keep customers’ financial accounts and transactions secure.

99%

of users successfully verified

82%

of users completed password resets

Read Bitso's story

Verify API features

Global user verification is hard—Verify makes it easy.

100% Protection from SMS pumping fraud with Fraud Guard

Fraud Guard has already saved customers over $82 million by blocking 747 million fraud attempts 1 . 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.

Less code, more security

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.

Start for free

# 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 save time and money. Sweat and tears too.

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

$103M

saved by Verify Fraud Guard 1

5.1B

validations per year 2

40%

increase in conversion rates with SNA and Push 3

68%+

global conversion rate with Verify 2

Explore Lookup

Build first, buy later. Start your free trial today.

There’s no credit card required to sign up. And when you're ready to scale, you only pay for successful verifications. Simple, fair, and completely transparent.

Start for free View pricing

Verify FAQs

Twilio Verify is an API for user verification and authentication flows, including one-time passcodes, two-factor authentication, account recovery, and step-up verification. It gives you a managed way to send and validate verification challenges across multiple channels without building the full workflow yourself.

Unlike standard SMS messaging APIs, Verify handles code generation, expiration, rate limiting, and fraud prevention out of the box. The Twilio Authy app is a two-factor authentication (2FA) app that generates secure tokens to protect your accounts from unauthorized access. It's a free mobile app that adds an extra layer of security beyond passwords, requiring a code generated on your device to log in to various online accounts.

Check out the Verify docs to learn more.

Twilio Verify reduces engineering overhead by eliminating the need to build custom code generation, retry logic, carrier routing, or localized template management. Compared to building in-house or using single-channel CPaaS vendors, Verify automatically mitigates SMS toll fraud via integrated Fraud Guard, while maintaining a 94%+ global delivery rate across 180+ countries. It offers turnkey multi-channel fallback and a pay-per-success pricing model, whereas custom builds incur fixed infrastructure costs and messaging charges for unverified attempts.

A general SMS API can send a code. Verify handles the rest of the verification flow.

That includes code generation, expiration, retry logic, rate limits, localized templates, and fraud controls designed for authentication use cases. If you want to ship verification quickly and avoid maintaining that logic yourself, Verify is usually the better fit.

Verify automates the common moving parts behind authentication flows: generating passcodes, validating them, managing verification windows, limiting repeat attempts, and supporting multiple verification channels.

It also helps with operational tasks like template localization and protections against SMS pumping fraud. Your team can focus on the user flow and business logic instead of rebuilding verification infrastructure.

Verify supports multiple channels, including: SMS, Passkeys, Silent Network Auth, Voice, WhatsApp, Email, TOTP (authenticator apps like Authy and Google Authenticator), Push, and Silent Device Approval.

Channel availability, pricing, and launch requirements can vary by country, carrier, and configuration. Check the docs and pricing pages for the channels you plan to use before launch.

Verify pricing is based on successful verifications, with additional channel fees depending on how the verification is delivered. The exact total cost depends on the channel, destination, and any related messaging or carrier fees. If you are comparing Verify to a DIY SMS build, look at total verification cost, including retries, fraud controls, and operational overhead — not just the cost of sending a message.

You are not billed the verification fee for failed, expired, or uncompleted authorization attempts. A successful verification for an OTP-based authentication channel is one where the user inputs the correct OTP and it is confirmed on the Verify API. If you create your own custom code, you will be charged per created verification. A verification session lasts 10 minutes by default and can contain up to 5 send message attempts.

You can find more detailed rates, international pricing, and links to channel-specific rates on the Verify pricing page .

Verify is not the right tool for general transactional messaging, promotional messaging, or ongoing conversations with users.

If you only need to send notifications, use a messaging product like the Twilio Programmable Messaging API instead. If you only need identity or phone number intelligence without sending a verification challenge, use a lookup product like Twilio Lookup API instead.

Twilio Verify delivers global reach across 180+ countries and territories, automatically managing carrier sender IDs, short codes, and localized templates. Verify is SOC 2 Type 2 certified, ISO 27001 compliant, GDPR compliant, HIPAA-eligible, and supports PII-less verification architectures. All data is encrypted in transit and at rest. For full details on our overall platform compliance, read our security documentation .

Verify has a rate limit of five verification attempts to the same entity within 10 minutes. If you send more than this, you’ll get an error message that you’ve reached the limit for maximum attempts. These limits are in place to prevent fraud and abuse.

You can set your own limits, too. Our docs explain how to protect your Verify application with service rate limits, and we also outline rate limits and timeout considerations for your app.

1 From Sept '23 up to 31 Dec ‘25

2 Twilio 2024 internal data, based on those customers who provide conversion data

3 Curve results with Twilio

Let's find the right products
 for you

Generating your product
 picks...

See your product picks

For the best recommendations, tell me your use case, goals, requirements, etc.

File and source

File
c02-33a.html
Size
755,744 bytes
SHA-256
588cfdcd93ea9e523f29dd65e7917c90ec7d3e76d6a370118b8b85993c3ef816
Our copy
c02-33a.html
Original
www.twilio.com
Back to top