Send verification request using WhatsApp

You can start the verification process by sending a verify request to the Verify API. The following example will send a request that uses WhatsApp for verification.

WhatsApp Modes (OTP and Zero-tap)

WhatsApp verification supports an optional mode parameter in the workflow item:

  • otp_code (default): sends a one-time code to WhatsApp for the user to enter.
  • zero_tap (Android): enables a more seamless, zero-tap experience.

If mode is not specified, it defaults to otp_code.

Note: Zero-tap for WhatsApp is available for Android devices and requires provisioning. To initiate provisioning, contact Support or your Account Manager and provide your waba_id, along with the corresponding package_name and signature_hash for that WABA.

Where needed, replace the following variables in the sample code with your own values:

KeyDescription
JWT

Used to authenticate your request. See Authentication for more information, including how to generate a JWT.

BRAND_NAME

Included in the message to explain who is confirming the phone number

VONAGE_APPLICATION_PRIVATE_KEY_PATH

Private key path.

VONAGE_APPLICATION_ID

The Vonage Application ID.

TO_NUMBER

The phone number to verify

Write the code

Add the following to send-request-whatsapp.sh:

curl -X POST "https://api.nexmo.com/v2/verify" \
  -H "Authorization: Bearer $JWT"\
  -H 'Content-Type: application/json' \
  -d $'{
	 "brand": "'$VERIFY_BRAND_NAME'",
   "workflow": [
      {
         "channel": "whatsapp",
         "to": "'$VERIFY_NUMBER'"
      }
   ]
}'

View full source

Run your code

Save this file to your machine and run it:

sh send-request-whatsapp.sh

Prerequisites

npm install @vonage/server-sdk @vonage/verify2

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

const { Vonage } = require('@vonage/server-sdk');
const { Channels } = require('@vonage/verify2');

const vonage = new Vonage({
  applicationId: VONAGE_APPLICATION_ID,
  privateKey: VONAGE_APPLICATION_PRIVATE_KEY_PATH,
});

View full source

Write the code

Add the following to send-request-whatsapp.js:

vonage.verify2.newRequest({
  brand: VERIFY_BRAND_NAME,
  workflow: [
    {
      channel: Channels.WHATSAPP,
      to: VERIFY_NUMBER,
    },
  ],
})
  .then(({requestId}) => console.log(requestId))
  .catch((err) => console.error(err));

View full source

Run your code

Save this file to your machine and run it:

node send-request-whatsapp.js

Prerequisites

Add the following to build.gradle:

implementation 'com.vonage:server-sdk-kotlin:2.1.1'

Create a file named SendVerificationRequestWhatsapp and add the following code to the main method:

val client = Vonage {
    applicationId(VONAGE_APPLICATION_ID)
    privateKeyPath(VONAGE_PRIVATE_KEY_PATH)
}

View full source

Write the code

Add the following to the main method of the SendVerificationRequestWhatsapp file:

val response = client.verify.sendVerification(VERIFY_BRAND_NAME) {
    whatsapp(VERIFY_NUMBER, VERIFY_WHATSAPP_NUMBER)
}
println("Verification sent: ${response.requestId}")

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:

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

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

gradle run -Pmain=com.vonage.quickstart.kt.verify.SendVerificationRequestWhatsapp

Prerequisites

Add the following to build.gradle:

implementation 'com.vonage:server-sdk:9.3.1'

Create a file named SendRequestWhatsapp and add the following code to the main method:

VonageClient client = VonageClient.builder()
		.applicationId(VONAGE_APPLICATION_ID)
		.privateKeyPath(VONAGE_PRIVATE_KEY_PATH)
		.build();

View full source

Write the code

Add the following to the main method of the SendRequestWhatsapp file:

VerificationResponse response = client.getVerify2Client().sendVerification(
		VerificationRequest.builder()
			.addWorkflow(new WhatsappWorkflow(VERIFY_NUMBER, VERIFY_WHATSAPP_NUMBER))
			.brand(VERIFY_BRAND_NAME).build()
);
System.out.println("Verification sent: " + response.getRequestId());

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:

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

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

gradle run -Pmain=com.vonage.quickstart.verify2.SendRequestWhatsapp

Prerequisites

Install-Package Vonage

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

using Vonage;
using Vonage.Request;
using Vonage.VerifyV2.StartVerification;
using Vonage.VerifyV2.StartVerification.WhatsApp;

View full source

Add the following to StartVerificationRequestWhatsApp.cs:

var credentials = Credentials.FromAppIdAndPrivateKeyPath(VONAGE_APPLICATION_ID, VONAGE_APPLICATION_PRIVATE_KEY_PATH);
var client = new VonageClient(credentials);

View full source

Write the code

Add the following to StartVerificationRequestWhatsApp.cs:

var request = StartVerificationRequest.Build()
    .WithBrand(BRAND_NAME)
    .WithWorkflow(WhatsAppWorkflow.Parse(TO_NUMBER, FROM_NUMBER))
    .Create();
var response = await client.VerifyV2Client.StartVerificationAsync(request);

View full source

Prerequisites

composer require vonage/client

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

$client = new Vonage\Client(
    new Vonage\Client\Credentials\Keypair(VONAGE_APPLICATION_PRIVATE_KEY_PATH, VONAGE_APPLICATION_ID),
);

View full source

Write the code

Add the following to request.php:

$newRequest = new \Vonage\Verify2\Request\WhatsAppRequest(VERIFY_NUMBER, VERIFY_BRAND_NAME);
$client->verify2()->startVerification($newRequest);

View full source

Run your code

Save this file to your machine and run it:

php request.php

Prerequisites

pip install vonage python-dotenv

Write the code

Add the following to send-request-whatsapp.py:

from vonage import Auth, Vonage
from vonage_verify import (StartVerificationResponse, VerifyRequest,
                           WhatsappChannel)

client = Vonage(
    Auth(
        application_id=VONAGE_APPLICATION_ID,
        private_key=VONAGE_PRIVATE_KEY,
    )
)

verify_request = VerifyRequest(
    brand=VERIFY_BRAND_NAME,
    workflow=[
        WhatsappChannel(to=VERIFY_NUMBER, from_=VERIFY_FROM_NUMBER),
    ],
)

response: StartVerificationResponse = client.verify.start_verification(verify_request)
pprint(response)

View full source

Run your code

Save this file to your machine and run it:

python verify/send-request-whatsapp.py

Prerequisites

gem install vonage

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

client = Vonage::Client.new(
  application_id: VONAGE_APPLICATION_ID,
  private_key: VONAGE_PRIVATE_KEY
)

View full source

Write the code

Add the following to request.rb:

client.verify2.start_verification(
  brand: VERIFY_BRAND_NAME,
  workflow: [
    {
      channel: 'whatsapp',
      to: VERIFY_NUMBER,
      from: VERIFY_FROM_NUMBER
    }
  ]
)

View full source

Run your code

Save this file to your machine and run it:

ruby request.rb

Tip: To enable Zero-tap, set mode to zero_tap for the WhatsApp workflow item (see the API specification for the full request schema).