---
title: "WhatsApp Bulk Messaging API: Official API, SMS and IVR | D-API"
description: "Multichannel bulk messaging: the official WhatsApp API (Meta Cloud API) with approved templates, plus SMS and IVR as recovery layers, with real-time reports."
url: https://d-api.cloud/en/whatsapp-bulk-messaging-api
---

Use case · Bulk Messaging

# Bulk messaging with the official WhatsApp API, SMS and IVR

Betting on a single channel leaves half of your audience without the message. With D-API you send in bulk through the official WhatsApp API (Meta Cloud API) with approved templates and still reach whoever did not reply by SMS and IVR.

-   Channels: WhatsApp, SMS, IVR
-   WhatsApp: Official API
-   Uptime: 99.9%

## Talk to our team

See how D-API fits into your product. Support in English, and we reply within 1 business day.

Short answer

## How do you send bulk WhatsApp messages on the official channel?

On the official channel, bulk messaging uses the official WhatsApp API (Meta Cloud API) with templates approved by Meta. D-API is a provider of this channel, supports template submission and sends from the same platform that runs SMS and IVR. That way, whoever does not reply on WhatsApp can be reached by SMS or by phone call in the same flow.

The problem

## You shouldn't be solving this.

Problems D-API takes off your plate.

1.  ### A single channel leaves people out
    
    Not every contact opens or replies on WhatsApp. Without SMS and IVR as backup, you simply do not reach a large part of the audience you need to reach.
    
2.  ### Without an official channel, the campaign is limited
    
    Notices and campaigns at scale call for a verified channel with approved templates. Without the official API, you have no predictability or backing for volume.
    
3.  ### Each channel with a different vendor
    
    WhatsApp in one place, SMS in another, IVR in another. Separate integrations, scattered reports and no single view of the flow.
    

How it works

## From zero to production in five steps.

1.  ### Talk to sales and pick the channels
    
    We map your flow and define which channels come in: the official WhatsApp API for verified sends, SMS and IVR for recovery.
    
2.  ### Activate the official API and templates
    
    We set up your official channel (Meta Cloud API) and the approved templates the campaign needs to send at scale.
    
3.  ### Integrate in minutes
    
    Connect via documented REST, the official Node.js SDK or the official n8n node and start sending.
    
    [Read the docs](https://docs.d-api.cloud/)
    
4.  ### Send and track
    
    Run your campaigns and track delivery, reads and replies in real time on each channel.
    
5.  ### Recover whoever did not reply
    
    Turn on SMS and IVR as backup layers to automatically reach contacts who did not engage on WhatsApp.
    

Node.jscURLPythonPHP

```
import { DApi } from 'd-api-sdk'

const dapi = new DApi({ apiKey: process.env.DAPI_API_KEY })

await dapi.sessions.create({
  sessionId: 'customer-42',
  webhookUrl: 'https://your-app.com/webhooks/whatsapp',
})

const { qrCodeImage } = await dapi.sessions.getQRCode('customer-42')

// once the number scans the QR code
await dapi.messages.sendText({
  sessionId: 'customer-42',
  to: '14155550123',
  text: 'Your order is confirmed!',
})
```

```
curl -X POST https://api.d-api.cloud/api/v1/sessions \
  -H "Authorization: $DAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"sessionId": "customer-42", "webhookUrl": "https://your-app.com/webhooks/whatsapp"}'

curl https://api.d-api.cloud/api/v1/sessions/customer-42/qr \
  -H "Authorization: $DAPI_API_KEY"

# once the number scans the QR code
curl -X POST https://api.d-api.cloud/api/v1/messages/send/text \
  -H "Authorization: $DAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"sessionId": "customer-42", "to": "14155550123", "text": "Your order is confirmed!"}'
```

```
import os
import requests

API = "https://api.d-api.cloud/api/v1"
HEADERS = {"Authorization": os.environ["DAPI_API_KEY"]}

requests.post(f"{API}/sessions", headers=HEADERS, timeout=10, json={
    "sessionId": "customer-42",
    "webhookUrl": "https://your-app.com/webhooks/whatsapp",
})

qr = requests.get(f"{API}/sessions/customer-42/qr", headers=HEADERS, timeout=10).json()

# once the number scans the QR code
requests.post(f"{API}/messages/send/text", headers=HEADERS, timeout=10, json={
    "sessionId": "customer-42",
    "to": "14155550123",
    "text": "Your order is confirmed!",
})
```

```
<?php
use GuzzleHttp\Client;

$dapi = new Client([
    'base_uri' => 'https://api.d-api.cloud/api/v1/',
    'headers'  => ['Authorization' => getenv('DAPI_API_KEY')],
    'timeout'  => 10,
]);

$dapi->post('sessions', ['json' => [
    'sessionId'  => 'customer-42',
    'webhookUrl' => 'https://your-app.com/webhooks/whatsapp',
]]);

$qr = json_decode($dapi->get('sessions/customer-42/qr')->getBody(), true);

// once the number scans the QR code
$dapi->post('messages/send/text', ['json' => [
    'sessionId' => 'customer-42',
    'to'        => '14155550123',
    'text'      => 'Your order is confirmed!',
]]);
```

### Works with the tools you already use

-   Official WhatsApp API
-   SMS
-   IVR
-   n8n
-   Datacrazy CRM

What you get

## Multichannel bulk messaging: official WhatsApp, SMS and IVR in a single flow.

-   ### Official WhatsApp API provider
    
    D-API acts as an official API provider (Meta Cloud API), sending through approved templates, so you run bulk messaging on a verified channel.
    
-   ### Bulk SMS
    
    SMS arrives even without an app installed, with universal reach. Use it as the backup layer of the flow so no contact goes without the message.
    
-   ### IVR for collections and voice
    
    Automate collections, confirmations and surveys by phone. IVR reaches people who do not open messages and closes the loop on the campaign.
    
-   ### Combined multichannel strategy
    
    Official WhatsApp as the main channel, SMS and IVR as recovery layers for whoever did not reply. All orchestrated in one place.
    
-   ### Programmable sending via API
    
    Run campaigns via documented REST, the official Node.js SDK or the official n8n node, with Make, Zapier and Datacrazy CRM integrated.
    
-   ### Real-time reports
    
    Track delivery, reads and replies live on each channel to act before a problem becomes a loss.
    

FAQ

## Frequently asked questions.

### Is D-API an official WhatsApp API provider?

Yes. D-API acts as an official WhatsApp API provider (Meta Cloud API), sending through approved templates, for anyone who needs an official, verified channel for bulk messaging.

### Can I use SMS and IVR together with WhatsApp?

Yes. The combined strategy uses official WhatsApp as the main channel and SMS and IVR as recovery layers. SMS reaches people even without an app installed, and IVR handles collections, confirmations and surveys by phone for whoever did not reply.

### Do I need approved templates to send in bulk?

On the official WhatsApp channel, yes: campaigns at scale use templates approved by Meta. D-API helps with submitting and sending through those templates, and orchestrates SMS and IVR in the same flow.

### How does the integration work?

You integrate through a REST API documented in Swagger (OpenAPI 3), the official Node.js SDK or the official n8n community node. There are also ready-made integrations with Make, Zapier and Datacrazy CRM. Check the [API docs](https://docs.d-api.cloud/) to get started.

### How is multichannel messaging billed?

The cost depends on the channels in the flow and the volume on each one. Talk to sales to design the multichannel strategy and align the billing model with your operation.

## Related guides

-   [Official WhatsApp API](https://d-api.cloud/en/official-whatsapp-api)
-   [SMS API](https://d-api.cloud/en/sms-api)
-   [IVR and voice calls](https://d-api.cloud/en/ivr-voice-calls-api)
-   [Official vs unofficial](https://d-api.cloud/en/official-vs-unofficial-whatsapp-api)

## Ready to go to production?

3-day free trial with full access. No credit card, no lock-in.

[Talk to sales](https://d-api.cloud/#lead)[See pricing](https://d-api.cloud/en/pricing)
