---
"@context": https://schema.org
"@type": TechArticle
"@id": https://www.twilio.com/docs/verify/migrating-1x-2x#article
headline: Migrating from 1.x to 2.x
description: Learn how to migrate an application from Twilio's Verify v1 API to v2.
url: https://www.twilio.com/docs/verify/migrating-1x-2x
inLanguage: en
dateModified: 2026-07-24T11:58:39.000Z
author:
  "@type": Organization
  name: Twilio Developer Education Team
publisher:
  "@type": Organization
  name: Twilio
---

# Migrating from 1.x to 2.x

> \[!WARNING]
>
> Verify v1 API has reached End of Sale. It is now closed to new customers and will be fully deprecated in the future.
>
> For new development, we encourage you to use the [Verify v2 API](/docs/verify/api). v2 has an improved developer experience and new features, including:
>
> * Twilio server-side SDKs in multiple languages
> * [PSD2](/docs/verify/verifying-transactions-psd2) Secure Customer Authentication Support
> * [Improved Visibility and Insights](/docs/verify/migrating-1x-2x#improved-visibility-and-insights)
>
> Existing customers will not be impacted at this time until Verify v1 API has reached End of Life. For more information about migration, see [Migrating from 1.x to 2.x](/docs/verify/migrating-1x-2x).

Version 2 of the Verify API has an improved developer experience and added features. Version 1 of the API is deprecated, so build any new development on Version 2.

Features of the V2 API include:

* Twilio SDKs in JavaScript, Java, C#, Python, Ruby, and PHP
* Email channel
* [PSD2](/docs/verify/verifying-transactions-psd2) Secure Customer Authentication Support
* [Improved Visibility and Insights](#improved-visibility-and-insights)

This guide provides an introduction to the [2.x Verify API](/docs/verify/api) and a set of guidelines to migrate an application from 1.x to 2.x.

## 2.x Base API

Verify 2.x is hosted on [Twilio's API](/docs/verify/api/v1). The base URL is:

```bash title="Verify 2.x base URL"
https://verify.twilio.com/v2/
```

## Credentials / Authentication

V1 required an Authy API Key. The Verify V2 API uses your Twilio Credentials found in the [Console](https://twilio.com/console) like in the following request:

Create a Verify Service with Twilio credentials

```bash
curl -X POST "https://verify.twilio.com/v2/Services" \
--data-urlencode "FriendlyName=MyServiceName" \
-u $TWILIO_API_KEY:$TWILIO_API_SECRET
```

## SDKs

[Twilio SDKs](/docs/libraries) support Verify, so you no longer need the separate Authy SDKs. Twilio officially supports libraries for:

* [C#](https://github.com/twilio/twilio-csharp)
* [Java](https://github.com/twilio/twilio-java)
* [PHP](https://github.com/twilio/twilio-php)
* [Python](https://github.com/twilio/twilio-python)
* [Ruby](https://github.com/twilio/twilio-ruby)
* [Node.js](https://github.com/twilio/twilio-node)

Check out our [API Reference for examples](/docs/verify/api) and more information.

## Applications are now Services

2.x relies on Services for configuration. In V1 you created an Authy or Verify Application and used that API Key to manage verifications. In V2 you need both your Twilio Credentials and a Service ID. You can create and update a Service in two ways:

1. With the [Verify API](/docs/verify/api/service)
2. In the [Verify Console](https://www.twilio.com/console/verify/services)

## E.164 Phone Number Formatting for SMS and Voice

V1 used country code and phone number as two separate parameters. In V2, phone numbers are processed as one parameter in [E.164 format](/docs/glossary/what-e164) like this: `+15552317654`.

## PSD2 Support

Verify V2 supports [PSD2](https://www.twilio.com/blog/dynamic-linking-psd2) compliant transaction specific verifications with optional `payee` and `amount` fields. See the [API reference documentation](/docs/verify/verifying-transactions-psd2) for details.

## Improved Visibility and Insights

The Verify 2.x API lets you view the status of your verifications in the Console:

![Verification logs showing status as pending, failed, and verified for different timestamps.](https://docs-resources.prod.twilio.com/f9341ae1591e7dfc757360fbb97972181b80feea8553f794071d3fde26ebe84f.png)

## Python Example

For an example of upgrading from 1.x to 2.x, take a look at this [lightweight Python/Flask Example](https://github.com/robinske/phone-verification-flask/compare/v2?expand=1).
