WhatsApp OTP API Documentation

Send WhatsApp OTPs with 99.9% delivery rate worldwide

🚀 Quick Start

Get started with WhatsApp OTP in under 5 minutes:

  1. Sign up for a free account and get 10 free credits
  2. Copy your API key (format: sk_live_xxxxx) from the dashboard
  3. Start sending OTPs immediately with simple API calls
  4. Simple API key authentication
  5. Verify the OTP to complete the flow

🎯 Google Sign-In Authentication
Secure Google account authentication required for payment processing

🔐 Authentication

All API requests require authentication using your API key (format: sk_live_xxxxx) in the header:

X-API-Key: your_api_key_here

Get your API key from your dashboard after signing up. Keep it secure and never expose it in client-side code.

📋 Best Practices

📱 Send OTP

Send a WhatsApp OTP to any phone number worldwide.

POST https://zovackverification.com/api/otp/send

🚀 Simple & Secure
Use your API key for secure, fast OTP delivery with built-in abuse protection.

Parameters:

cURL
JavaScript
Python
PHP
curl -X POST https://zovackverification.com/api/otp/send \ -H "X-API-Key: your_api_key" \ -H "Content-Type: application/json" \ -d '{ "phone": "+1234567890" }'
const response = await fetch('https://zovackverification.com/api/otp/send', { method: 'POST', headers: { 'X-API-Key': 'your_api_key', 'Content-Type': 'application/json' }, body: JSON.stringify({ phone: '+1234567890' }) }); const data = await response.json();
import requests response = requests.post('https://zovackverification.com/api/otp/send', headers={ 'X-API-Key': 'your_api_key', 'Content-Type': 'application/json' }, json={ 'phone': '+1234567890' } ) data = response.json()
$curl = curl_init(); curl_setopt_array($curl, [ CURLOPT_URL => "https://zovackverification.com/api/otp/send", CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_HTTPHEADER => [ "X-API-Key: your_api_key", "Content-Type: application/json" ], CURLOPT_POSTFIELDS => json_encode([ "phone" => "+1234567890" ]) ]); $response = curl_exec($curl); curl_close($curl);

Success Response (200):

{ "success": true, "message": "OTP sent successfully", "data": { "otpId": "otp_1640995200000_abc123", "phone": "+1234567890", "expiresIn": "5 minutes", "cost": "$0.045", "remainingBalance": "$9.955" } }

✅ Verify OTP

Verify the OTP code sent to the user's WhatsApp.

POST https://zovackverification.com/api/otp/verify

Parameters:

cURL
JavaScript
Python
PHP
curl -X POST https://zovackverification.com/api/otp/verify \ -H "X-API-Key: your_api_key" \ -H "Content-Type: application/json" \ -d '{ "otpId": "otp_1640995200000_abc123", "otp": "123456" }'
const response = await fetch('https://zovackverification.com/api/otp/verify', { method: 'POST', headers: { 'X-API-Key': 'your_api_key', 'Content-Type': 'application/json' }, body: JSON.stringify({ otpId: 'otp_1640995200000_abc123', otp: '123456' }) }); const data = await response.json();
import requests response = requests.post('https://zovackverification.com/api/otp/verify', headers={ 'X-API-Key': 'your_api_key', 'Content-Type': 'application/json' }, json={ 'otpId': 'otp_1640995200000_abc123', 'otp': '123456' } ) data = response.json()
$curl = curl_init(); curl_setopt_array($curl, [ CURLOPT_URL => "https://zovackverification.com/api/otp/verify", CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_HTTPHEADER => [ "X-API-Key: your_api_key", "Content-Type: application/json" ], CURLOPT_POSTFIELDS => json_encode([ "otpId" => "otp_1640995200000_abc123", "otp" => "123456" ]) ]); $response = curl_exec($curl); curl_close($curl);

Success Response (200):

{ "success": true, "message": "OTP verified successfully", "data": { "otpId": "otp_1640995200000_abc123", "phone": "+1234567890", "verifiedAt": "2024-01-01T12:00:00.000Z" } }

Error Response (400):

{ "success": false, "error": "Invalid OTP code", "attemptsRemaining": 2 }

💰 Wallet-Based Pricing

Add funds to your wallet and pay exact costs based on destination country. No credits - transparent per-OTP pricing.

Free Tier

$0.10

Free wallet balance

  • $0.10 free balance
  • 2-14+ OTPs (varies by country)
  • WhatsApp delivery
  • Basic support via support@zovack.com
  • Full API access

Wallet Top-ups

$0.007-0.045/OTP

Exact costs by country

  • Add $15 to wallet
  • Add $65 to wallet
  • Add $120 to wallet
  • Add $250 to wallet
  • 99.9% delivery rate
  • Priority support via support@zovack.com

Enterprise

Custom

Volume discounts

  • Volume discounts available
  • Dedicated support
  • Custom SLA
  • White-label options
  • Custom integrations

Pricing by Region

🇮🇳 India

$0.007/OTP

Best rate globally!

🌍 Africa (Premium)

$0.008/OTP

Nigeria, South Africa, Egypt

🌏 Asia Pacific

$0.012-0.032/OTP

Varies by development level

🇺🇸 US/Europe

$0.045/OTP

Premium markets

💡 Pro Tip: Use our /pricing/check endpoint to get exact pricing for any phone number before sending.

🛠️ SDKs & Libraries

Coming soon: Official SDKs for popular programming languages

Node.js

npm install whatsapp-otp

Python

pip install whatsapp-otp

PHP

composer install whatsapp-otp

Java

Maven/Gradle support

⚠️ Error Codes

401 Unauthorized

Invalid or missing API key

400 Bad Request

Invalid phone number format or missing required parameters

402 Payment Required

Insufficient credits. Please top up your account

403 Forbidden

API access denied. Check your API key or rate limits

429 Too Many Requests

Rate limit exceeded. Maximum 5 OTPs per minute per user

500 Internal Server Error

Server error. Please try again or contact support