The WhatsApp API ready to embed in your SaaS.
You want to sell WhatsApp as a feature of your SaaS without turning your product team into an infrastructure team. D-API delivers WhatsApp API infrastructure ready to scale per customer, so your engineers focus on what matters.
- Uptime: 99.9%
- Integration: 1 day
- Billing: Per instance
You shouldn't be solving this.
Problems D-API takes off your plate.
Engineering turning into infrastructure
Your product team stopped shipping features to babysit QR codes and reconnections.
Customers taking each other down
When one number drops, the others drop too, because everything runs on the same server.
Unpredictable billing
Per-message pricing becomes a variable cost that is hard to pass on to your end customer.
From zero to production in five steps.
Open the docs
Explore every endpoint with JSON request and response examples, and test right in the browser.
docs.d-api.cloudIntegrate via REST or SDK
Call the API directly from any language or use d-api-sdk in Node/TypeScript for ready-made typings.
Provision per customer
Create an isolated instance per tenant with a single POST, all managed through the API.
Listen for events
Receive messages and statuses via webhooks with automatic retries for unacknowledged events.
Scale predictably
The more customers, the lower the cost per instance, with no message limits.
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
- REST + Swagger
- Node.js SDK
- Webhooks with retries
- RabbitMQ
- Amazon S3 & MinIO
WhatsApp as a feature of your product, not a headache.
REST API with Swagger
Test endpoints and generate collections right in the browser with our interactive docs.
Any language
Standard REST authenticated by API key: it works with Node, Python, Go, PHP, Ruby, .NET or any stack that speaks HTTP.
Native multi-tenancy
Provision an isolated instance per customer via API, without mixing data or queues.
Webhooks with automatic retries
Automatic retries with exponential backoff for events your endpoint does not acknowledge.
Node.js SDK (optional)
d-api-sdk with full typings, automatic retries and webhook helpers for teams already in the Node ecosystem.
99.9% uptime
Self-healing and real isolation: one customer's outage does not take down the others.
Dedicated proxy
Each connection gets a proxy with its own IP, managed automatically by D-API, reducing the risk of your customers' numbers being banned.
Per-instance billing
Predictable, tiered cost: the more instances, the lower the unit price.
Dedicated onboarding
We set up a WhatsApp group with your team to answer questions and follow the implementation, with support in English. If you need more time, we extend the trial, all at no cost.
Unlimited instances. Pay only for what you use.
For SaaS, $9.90 per connection from the very first one, and the price drops on its own as your customer base grows.
- SaaS deal1 to 10 connections$15.00$9.90per connection/month
Even with fewer than 10 connections, when you sign with our sales team
- 11 to 50 connections$8.75per connection/month
- Over 50 connectionsTalk to sales
The price per connection keeps dropping. We build the deal around your volume.
Everything included in every connection
Unlimited instances, no per-message fees and discounts applied automatically as you grow.
Connection
- Unofficial WhatsApp API (QR code)
- Official WhatsApp API (Meta Cloud API), templates billed by Meta
- Dedicated IP per connection
- Per-instance isolation with self-healing
- 99.9% uptime
Messages
- Text, image, audio, video and documents
- Buttons, lists and carousels
- Polls, location, contacts and reactions
- No per-message fees
WhatsApp features
- WhatsApp voice calls (VoIP): make and receiveBonus
- Group and participant management
- Contacts, labels and WhatsApp number check
- Channels (newsletter) and product catalog
- Chat history
Integration and support
- Webhooks with retries and RabbitMQ
- REST with Swagger, Node SDK and n8n
- Create connections through the API
- Support in English via WhatsApp
Frequently asked questions.
Do I have to use the Node.js SDK?
Where can I find the API docs?
Can I provision instances via API?
Does the price scale with the number of customers?
How do I keep data separate between customers?
What does onboarding look like for SaaS?
Ready to go to production?
3-day free trial with full access. No credit card, no lock-in.
