One request sends the message.

Your phones are already linked. Send the key, the number, and the text.

Open the API docs

POST /api/messages

{
  "to": "+254712345678",
  "text": "Your order is ready."
}
202 queued

Three steps. Then it sends.

One account key covers every workspace you run, and each workspace already has its phone.

Link the phone

Sign in at dashboard.deltamsg.live and scan the code once.

Copy the key

Create one account key. It works for every workspace you own or manage, including new ones.

POST the text

One call queues the message. Delivery stays paced with that phone’s other sends.

Authorization

One key for all your numbers.

Bearer dm_live_your_key on https://api.deltamsg.live/api/messages. A 202 means the message is queued. Read it back from the same path. Keys made for a single workspace keep working.

Authorization

Bearer dm_live_your_key
Every workspace you manage

POST /api/messages

{
  "to": "+254712345678",
  "text": "Your order is ready.",
  "instances": ["<sales id>", "<support id>"]
}
202 queued · soonest in the list

Several numbers

Choose the number, or a shortlist.

Leave the instance out and the message goes from your main number, which you pick on the API keys page. Pass one instance to use that number, or a list and each message goes from whichever can send it soonest, while a customer stays on the number they already talk to. If a number drops or falls behind, waiting messages move to another in the list. Copy instance ids from the API keys page.

Bulk

Many recipients, one paced queue.

POST /api/messages/batch with a text and a list of phones. It sends from your main number, or is shared across the instances you list, faster and emptier ones taking more. Each share sends in the background with that number’s gap and daily limit. Poll /api/campaigns/{id}/queue for progress.

POST /api/messages/batch

{
  "text": "Your order is ready.",
  "phones": ["+254712345678", "+254798765432"]
}
202 queued · spread · paced

Built so your numbers don’t get flagged.

WhatsApp bans numbers that people block or report. Every API send is checked first, across all your numbers.

Risky sends are refused

Anyone who replies STOP is never messaged again until they reply START. The same text to the same person twice in a day is refused. Someone who hasn’t written to you gets at most 3 messages a day.

New numbers warm up

A freshly linked number starts at 20 messages a day, then 50 from day 3, 150 from day 7 and 300 from day 14. Your plan’s full limit applies from day 21. You can end it early for a number with a history, or start it again, from the dashboard or the API. Every send waits a random gap.

Your part

Message only people who asked to hear from you. Say who you are, put their name or order in the text, retry with an idempotency_key, and back off on 429.

A laptop on a desk with code on the screen

Replies

Replies come back to you.

Point one webhook at your server for all your numbers, or only the ones you pick. Events are message.sent, message.delivered, message.read, message.failed, message.inbound, and session.status, and each says which number it came from. Each one is signed and retried for about a day until you answer. Photos and documents your customers send can be downloaded too.

Full reference

Start with the phone you already use.

Get started