Overview

WhatsApp Business API Documentation

Dexatel's WhatsApp Business API documentation covers everything you need to send OTP verification codes, transactional notifications, bulk marketing campaigns, and manage two-way customer conversations—all through a single REST API on the world's most popular messaging platform.

What You Can Do with WhatsApp

Dexatel exposes four core capabilities on WhatsApp, each optimized for a specific communication pattern:

Verify

Send OTP codes for user authentication, 2FA, and phone number verification. Supports fallback chains to SMS, Viber, Telegram, and Email.

Key WhatsApp-Specific Concepts

This WhatsApp REST API guide covers templates, sender registration, supported message types, and message status lifecycle.

Templates and Pre-Approval

WhatsApp requires all outbound messages—except replies within a 24-hour customer service window—to use a pre-approved template. Templates are created via the Dexatel dashboard or API and submitted to WhatsApp for review. The approval workflow is:

  1. Create a template via POST /v1/templates with channel: WHATSAPP
  2. WhatsApp reviews the template (status moves from IN_PROCESS to COMPLETED or CANCELED)
  3. Once COMPLETED, reference the template in your message or campaign requests

Template Requirements for WhatsApp

  • wa_sender_code (the code value of your WhatsApp sender) is required on every template
  • wa_category is required and must be either MARKETING or UTILITY when sending campaigns and transactional messages or AUTHENTICATION when sending verification codes.
  • Template text can be up to 1,000 characters
  • Templates that are pending review (IN_PROCESS) cannot be deleted
  • Supported types: text, image, video, and document
  • Image files: max 5 MB, JPG or PNG format
  • Video files: max 16 MB, MP4 format
  • Document files: max 100 MB, PDF format

WhatsApp Senders

A WhatsApp sender is a verified WhatsApp Business phone number registered in your Dexatel account. Every outbound message requires specifying a sender. You can retrieve available senders via:

GET /v1/senders?filter[channel]=WHATSAPP
X-Dexatel-Key: your_api_key
{
  "data": [
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "account_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
      "name": "DexatelWABA",
      "code": "123456789012345",
      "channel": "WHATSAPP",
      "status": "Available",
      "country": "US",
      "create_date": "2024-01-15 09:00:00"
    }
  ],
  "pagination": {
    "number": 1,
    "size": 10,
    "total": 1
  }
}

Supported Message Types

  • Text: Plain text messages up to 1,000 characters
  • Image: JPG or PNG, maximum 5 MB
  • Video: MP4, maximum 16 MB
  • Document: PDF, maximum 100 MB
  • Buttons: Call-to-action or quick-reply buttons attached to messages

Message Status Lifecycle

Outbound WhatsApp messages move through the following statuses:

  • sent — Message accepted by Dexatel and queued for delivery
  • enroute — Message is being delivered to the WhatsApp network
  • delivered — Confirmed delivered to the recipient's device
  • read — Recipient has opened the message (when read receipts are enabled)
  • failed — Delivery failed permanently
  • rejected — Message was rejected before sending (invalid sender, blocked number, etc.)
  • expired — Message TTL elapsed before delivery
  • unsubscribed — Recipient has opted out
  • blocked — Message blocked by the platform

Pricing

WhatsApp messages on Dexatel are charged per message on a pay-as-you-go basis. Pricing starts at $0.015 per message. Exact rates vary by destination country. Use the Dexatel pricing calculator at https://dexatel.com/pricing/whatsapp/ for country-specific rates.

WhatsApp pricing is set by Meta and varies by conversation type. The category is determined by the wa_category value you set when creating the template (MARKETING or UTILITY).