---
title: "Unofficial WhatsApp API | D-API"
description: "D-API's unofficial WhatsApp API: direct connection, isolated numbers with dedicated proxies, no Meta approval and no per-message fees. Billed per instance."
url: https://d-api.cloud/en/unofficial-whatsapp-api
---

Solution · Unofficial WhatsApp API

# Unofficial WhatsApp API to scale without limits

You get stuck on templates, Meta approval queues and fees that grow with every message you send. With D-API's unofficial WhatsApp API you connect real numbers in minutes and pay per instance, not per volume.

-   Billing: Per instance
-   Uptime: 99.9%
-   Meta approval: Not required

## Talk to our team

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

Short answer

## When should you use an unofficial WhatsApp API?

An unofficial WhatsApp API connects a real WhatsApp number through a QR code, with no Meta approval and no templates, and fits automation and support that need freedom in the content. At D-API each number runs in an isolated instance with a dedicated proxy, and billing is per active instance, not per message. When the operation requires a verified channel, the official API runs on the same platform.

The problem

## You shouldn't be solving this.

Problems D-API takes off your plate.

1.  ### Approvals and templates hold up your launch
    
    The official API requires Meta review, pre-approved templates and conversation windows that box in any creative automation.
    
2.  ### Per-message fees eat your margin
    
    Every send becomes a variable, unpredictable cost. As volume grows, the bill explodes and the ROI of the operation disappears.
    
3.  ### One blocked number takes down the whole operation
    
    Without isolation and a dedicated IP, a ban on one number spills over to the rest, and you have no plan B to keep conversations running.
    

How it works

## From zero to production in four steps.

1.  ### Talk to sales
    
    Tell us your use case and get dedicated onboarding in a WhatsApp group to launch your operation with direct support.
    
2.  ### Connect your numbers
    
    Create one instance per number and scan the QR code. Each connection comes up with a dedicated proxy and its own IP.
    
3.  ### Integrate with the REST API
    
    Use your API key to send messages and native CTAs and to receive webhooks from any language or from the Node.js SDK.
    
    [Read the docs](https://docs.d-api.cloud/)
    
4.  ### Scale and monitor
    
    Track delivery, reads, response rate and number health, adding new instances as demand grows.
    
    [See pricing](https://d-api.cloud/en/pricing)
    

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

-   Node.js SDK
-   n8n
-   HTTPS/AMQP webhooks
-   Datacrazy CRM
-   Amazon S3/MinIO

What you get

## Connect straight to WhatsApp, with no Meta approval and no per-message fees.

-   ### Multiple numbers in parallel
    
    Run several isolated WhatsApp numbers, one instance per number, all active at the same time without interfering with each other.
    
-   ### Dedicated proxy with its own IP
    
    Each connection gets a dedicated proxy with an exclusive IP, reducing the risk of your numbers being banned.
    
-   ### Real per-instance isolation
    
    A problem on one number does not affect the others: each instance is independent, so a single failure never turns into a domino effect.
    
-   ### High availability 24/7
    
    Continuous self-healing and infrastructure with 99.9% uptime keep your connections up without manual babysitting.
    
-   ### Webhooks with automatic retries
    
    Exponential backoff retries over HTTPS or AMQP/RabbitMQ keep events from getting lost. See the payloads in [our Swagger](https://docs.d-api.cloud/).
    
-   ### No per-message fees
    
    Billing per active instance, with no volume fees: send as much as you need with a predictable monthly cost.
    
-   ### REST API in any language
    
    REST API authenticated by API key and documented in [Swagger (OpenAPI 3)](https://docs.d-api.cloud/), with an official Node.js SDK and an n8n community node.
    

FAQ

## Frequently asked questions.

### What is an unofficial WhatsApp API?

It is an API that connects directly to WhatsApp without going through Meta approval or using approved templates. You control real numbers, send messages freely and receive events by webhook, without the windows and restrictions of the official API.

### Are there per-message fees?

No. Billing is per active instance, that is, per connected number. You can send the volume you need with no per-message fee, keeping costs predictable regardless of scale.

### Can I connect multiple WhatsApp numbers?

Yes. Each number runs in an isolated instance, with a dedicated proxy and its own IP, all in parallel. A problem on one number does not affect the others, so you scale safely.

### How do I reduce the risk of bans?

Each connection uses a dedicated proxy with an exclusive IP and real per-instance isolation. On top of that there is 24/7 self-healing and quick number swaps without redoing the integration, to keep the operation running if a number goes down.

### Which language do I integrate with?

Any of them. The API is REST, authenticated by API key and documented in Swagger, so it works with any stack. There is also an official Node.js SDK and an n8n community node. Check the endpoints in [Swagger](https://docs.d-api.cloud/).

## Related guides

-   [Official vs unofficial](https://d-api.cloud/en/official-vs-unofficial-whatsapp-api)
-   [How to avoid bans](https://d-api.cloud/en/avoid-whatsapp-ban)
-   [QR code connection](https://d-api.cloud/en/whatsapp-api-qr-code)
-   [Evolution API alternative](https://d-api.cloud/en/evolution-api-alternative)

## 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)[Read the docs](https://docs.d-api.cloud/)
