WhatsApp: your own number, for your agent
DMWire links your own WhatsApp number the same way WhatsApp Web links a browser. Your agent can then read and answer the chats on that number.
This is not the official WhatsApp Business API. It is unofficial, and WhatsApp can disconnect or ban a number that is used for unsolicited messages. Use a number you are ready to risk, answer people who wrote to you, and stay well inside the limits below.
Link a number
Ask your agent to "connect my WhatsApp number +31...". Behind that, the agent calls connect_whatsapp with the number. The answer has a connect_url: a page on api.dmwire.ai that shows the QR code, valid for a short time. Real response (the token is hidden):
curl \
-X POST https://api.dmwire.ai/v1/channels/whatsapp-web/connections \
-H "X-API-Key: $DMWIRE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"phone_number": "+447700900123"}'{
"success": true,
"phone_number": "+447700900123",
"session_id": "<redacted>-+447700900123",
"status": "qr_pending",
"connect_url": "https://api.dmwire.ai/v1/channels/whatsapp-web/connect?token=<redacted>",
"connect_url_expires_at": 1792210956000,
"poll_qr_path": "/v1/channels/whatsapp-web/connections/%2B447700900123/qr",
"poll_status_path": "/v1/channels/whatsapp-web/connections/%2B447700900123/status"
}On your phone: open WhatsApp, go to Linked devices (under Settings on iPhone, in the three dots menu on Android), tap Link a device and scan the code.
Pairing code instead of a QR code: ask your agent for a pairing code (link_method: "pairing_code"). You get an 8 character code. On your phone, open Linked devices, Link a device, Link with phone number instead, and type it.
While you scan, the status is connecting:
curl https://api.dmwire.ai/v1/channels/whatsapp-web/connections/%2B447700900123/status \
-H "X-API-Key: $DMWIRE_API_KEY"{
"success": true,
"phone_number": "+447700900123",
"status": "connecting",
"has_qr": true,
"qr_expires_at": null,
"last_activity": "2026-10-17T03:52:36.535Z",
"message_count": 0,
"proxy": null,
"live": true
}list_accounts shows the number with its limits from the first moment:
curl https://api.dmwire.ai/v1/accounts \
-H "X-API-Key: $DMWIRE_API_KEY"{
"accounts": [
{
"id": "+447700900123",
"channel": "whatsapp_web",
"identifier": "+447700900123",
"status": "connecting",
"connected_at": null,
"limits": {
"sends_today": 0,
"sends_cap": 50,
"new_contacts_today": 0,
"new_contacts_cap": 10,
"ramp_day": 1
}
}
]
}When the phone confirms, the status becomes connected, and if you use webhooks you get account.connected.
Unlink a number
Ask your agent to disconnect it (disconnect_whatsapp), or remove DMWire under Linked devices on your phone. Real response:
curl \
-X DELETE https://api.dmwire.ai/v1/channels/whatsapp-web/connections/%2B447700900123 \
-H "X-API-Key: $DMWIRE_API_KEY"{
"success": true,
"phone_number": "+447700900123",
"status": "removed"
}Sending
- Address a person by phone number in international format (
+31612345678) or bycontact_id. A new phone number creates the contact. - Text up to 4,096 characters, plus at most one
media_url(an https link to a photo, video, audio file or document). send_messageanswers202with a message id right away. The message then goes out through your linked number.get_messageshowssent,delivered,readorfailedwith the reason, for example "The recipient is not on WhatsApp".
Limits on WhatsApp
| Limit | Value |
|---|---|
| Messages you send per day (early access) | 50 |
| New contacts per day (early access) | 10 |
| New contacts on a freshly linked number | 0 on its first two active days, then about one more each day, up to the cap |
| Messages to one person who has not replied | 3, then DMWire waits for their reply |
| Same first message to people who never wrote | more than 5 within 30 minutes stops sending on the account |
A new contact is someone who has never written to this number. Replying to people who wrote first does not use the new contact allowance. The warm up exists because brand new numbers that start chats with strangers are the first ones WhatsApp bans. So: link the number, let people message you, and answer them.
When a limit is hit, send_message is refused with a clear error_code and, for daily limits, retry_after_s (seconds until the next UTC day). See Limits and account safety for every code.
Keeping the number safe
- Answer people who wrote first, or people who asked you to contact them.
- Do not send the same opening message to many strangers. DMWire stops the account when it sees that pattern, before WhatsApp stops the number.
- When someone replies STOP, DMWire blocks further messages to them from that account (
contact_do_not_disturb). - Keep your phone online now and then; WhatsApp logs out linked devices of phones that stay offline for a long time.
- If a number is restricted or banned, that is WhatsApp's decision about your number. You get
account.restrictedoraccount.disconnectedby webhook.
What is not available yet
The official WhatsApp Business API (templates, green tick) is not part of DMWire today.
Last checked against the live service on 2026-10-17.