# 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 new features. Version 1 of the API will be fully deprecated in the future and any new development will be on Version 2.

Some of the exciting 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)

...and more!

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 now hosted on [Twilio's API](/docs/verify/api/v1). The new base URL is:

```bash
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:

```bash
curl -XPOST https://verify.twilio.com/v2/Services \
    -d FriendlyName=MyServiceName \
    -u '[YOUR ACCOUNT SID]:[YOUR AUTH TOKEN]'
```

## SDKs

[Twilio SDKs](/docs/libraries) now support Verify. You no longer need the separate Authy SDKs. We officially support 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

Only available with our new Verify API, 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).
