The WhatsApp API for automation that does not break mid-flow.
You build flows in n8n, Make or Zapier that need to run 24/7 in production. D-API is the stable WhatsApp API infrastructure that delivers messages and events without waking you up at night.
- Official node: n8n
- Events: In real time
- Protocols: REST + AMQP
You shouldn't be solving this.
Problems D-API takes off your plate.
Workflows breaking halfway
An unstable API makes n8n fail in production and you lose messages without noticing.
Unstructured events
Poorly formatted webhooks force your flow into manual parsing all the time.
Unofficial nodes
Community-maintained integrations break every time the API changes.
From zero to production in four steps.
Install the node
In n8n Settings → Community Nodes, add the official n8n-nodes-d-api package.
npmjs.com/package/n8n-nodes-d-apiConnect the credential
Paste your instance API key and you are done: sending and triggers work right away.
Build your flow
Use the send, chat listing and webhook trigger nodes with typed fields.
Scale or migrate
Switch to REST, the SDK or RabbitMQ as your flow grows, with the same API key authentication.
docs.d-api.cloud
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
- n8n
- Make
- Zapier
- RabbitMQ
- Claude and OpenAI
The stable API your n8n, Make and Zapier flows were missing.
Official n8n community node
The n8n-nodes-d-api package is maintained by D-API and kept in sync with our public API.
Webhooks with automatic retries
Structured message, status and connection events delivered over HTTPS or AMQP, with exponential backoff retries for anything not acknowledged.
Low latency
Sending and receiving with millisecond latency, with no intermediate queue slowing things down.
Dedicated proxy
Each connection gets a proxy with its own IP, managed automatically by D-API, reducing the risk of bans.
Routing by type
Split events into different queues using RabbitMQ routing keys.
AI-ready
Plug in Claude, OpenAI or n8n AI agents with typed conversation context.
Documented REST
Explore every endpoint in the Swagger docs, with JSON request and response examples ready to test in the browser.
Delivery monitoring
Message status exposed via webhook (sent, delivered, read, failed) so your flow reacts in real time.
Dedicated onboarding
We set up a WhatsApp group with your team to answer questions and unblock your flow implementation, all at no cost.
Frequently asked questions.
Where can I find the API docs?
What is the difference between the n8n node and REST?
Can I make sure messages are delivered?
Does it work with Make and Zapier?
Ready to go to production?
3-day free trial with full access. No credit card, no lock-in.
