Verify API

The Verify API enables you to confirm that you can contact a user at a specific number, so that you can:

  • Reach your users at any time, by ensuring that you have their correct phone number
  • Protect against fraud and spam, by preventing one user from creating multiple accounts
  • Add an extra layer of security to help confirm a user's identity when they want to perform certain activities

How it works

Verification is a two-stage process that requires two API calls:

Verification request

Starting the verification process

  1. A user registers for your service via your app or web site and provides a phone number.

  2. To confirm that the user has access to the number that they have registered with, your application makes an API call to the Verification request endpoint.

  3. The Verify API generates a PIN code, with an associated request_id.

    It is possible to supply your own PIN code in some circumstances, please contact your account manager.

  4. The Verify API then attempts to deliver this PIN to the user. The format (SMS or Text-to-speech (TTS)) and timing of these attempts are defined by your chosen workflow. If the user does not revisit your app or website to enter the PIN they have received, the verification request will ultimately time out. Otherwise, you need to verify the number that they entered using by performing a Verification check.

Verification check

Verifying the submitted PIN

5. The user receives the PIN and enters it into your application.

6. Your application makes an API call to the Verification check endpoint, passing in the request_id and the PIN that the user entered.

7. The Verify API checks that the PIN entered matches the one that was sent and returns the result to your application.

Getting Started

The following sample shows you how to start the verification process by sending a verification code to a user. To learn how to validate the code the user supplies and perform other operations, see the Code Snippets.

Write the code

Add the following to send-verification-code.sh:

Copy to Clipboard
curl -X GET "https://api.nexmo.com/verify/json?&api_key=$VONAGE_API_KEY&api_secret=$VONAGE_API_SECRET&number=$RECIPIENT_NUMBER&brand=AcmeInc"

View full source

Run your code

Save this file to your machine and run it:

sh send-verification-code.sh

Prerequisites

npm install @vonage/server-sdk

Create a file named request.js and add the following code:

Copy to Clipboard
const Vonage = require('@vonage/server-sdk');
const vonage = new Vonage({
  apiKey: VONAGE_API_KEY,
  apiSecret: VONAGE_API_SECRET
});

View full source

Write the code

Add the following to request.js:

Copy to Clipboard
vonage.verify.request({
  number: RECIPIENT_NUMBER,
  brand: BRAND_NAME
}, (err, result) => {
  if (err) {
    console.error(err);
  } else {
    const verifyRequestId = result.request_id;
    console.log('request_id', verifyRequestId);
  }
});

View full source

Run your code

Save this file to your machine and run it:

node request.js

Prerequisites

Add the following to `build.gradle`:

compile 'com.vonage:client:5.5.0'

Create a class named StartVerification and add the following code to the main method:

Copy to Clipboard
VonageClient client = VonageClient.builder().apiKey(VONAGE_API_KEY).apiSecret(VONAGE_API_SECRET).build();

View full source

Write the code

Add the following to the main method of the StartVerification class:

Copy to Clipboard
VerifyResponse response = client.getVerifyClient().verify(RECIPIENT_NUMBER, BRAND_NAME);

if (response.getStatus() == VerifyStatus.OK) {
    System.out.printf("RequestID: %s", response.getRequestId());
} else {
    System.out.printf("ERROR! %s: %s", response.getStatus(), response.getErrorText());
}

View full source

Run your code

We can use the application plugin for Gradle to simplify the running of our application. Update your build.gradle with the following:

Copy to Clipboard
  apply plugin: 'application'
  mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''

Run the following gradle command to execute your application, replacing com.vonage.quickstart.verify with the package containing StartVerification:

gradle run -Pmain=com.vonage.quickstart.verify.StartVerification

Prerequisites

Install-Package Vonage

Create a file named SendVerificationRequest.cs and add the following code:

Copy to Clipboard
using Vonage.Verify;
using Vonage;
using Vonage.Request;

View full source

Add the following to SendVerificationRequest.cs:

Copy to Clipboard
var credentials = Credentials.FromApiKeyAndSecret(VONAGE_API_KEY, VONAGE_API_SECRET);
var client = new VonageClient(credentials);

View full source

Write the code

Add the following to SendVerificationRequest.cs:

Copy to Clipboard
var request = new VerifyRequest() { Brand = BRAND_NAME, Number = RECIPIENT_NUMBER };
var response = client.VerifyClient.VerifyRequest(request);

View full source

Prerequisites

composer require vonage/client

Create a file named request.php and add the following code:

Copy to Clipboard
$basic  = new \Vonage\Client\Credentials\Basic(VONAGE_API_KEY, VONAGE_API_SECRET);
$client = new \Vonage\Client(new \Vonage\Client\Credentials\Container($basic));

View full source

Write the code

Add the following to request.php:

Copy to Clipboard
$request = new \Vonage\Verify\Request(NUMBER, BRAND_NAME);
$response = $client->verify()->start($request);

echo "Started verification, `request_id` is " . $response->getRequestId();

View full source

Run your code

Save this file to your machine and run it:

php request.php

Prerequisites

pip install vonage

Create a file named request.py and add the following code:

Copy to Clipboard
client = vonage.Client(key=VONAGE_API_KEY, secret=VONAGE_API_SECRET)
verify = vonage.Verify(client)

View full source

Write the code

Add the following to request.py:

Copy to Clipboard
response = verify.start_verification(number=RECIPIENT_NUMBER, brand="AcmeInc")

if response["status"] == "0":
    print("Started verification request_id is %s" % (response["request_id"]))
else:
    print("Error: %s" % response["error_text"])

View full source

Run your code

Save this file to your machine and run it:

python request.py

Prerequisites

gem install vonage

Create a file named request.rb and add the following code:

Copy to Clipboard
client = Vonage::Client.new(
  api_key: VONAGE_API_KEY,
  api_secret: VONAGE_API_SECRET
)

View full source

Write the code

Add the following to request.rb:

Copy to Clipboard
response = client.verify.request(
  number: TO_NUMBER,
  brand: 'AcmeInc'
)

if response
  # display the Verify `request_id`
  puts response.request_id
end

View full source

Run your code

Save this file to your machine and run it:

ruby request.rb

Guides

Code Snippets

Use Cases

Further Reading