Your WhatsApp number, as an API

Link a WhatsApp number by scanning a QR code. Then send messages, media and polls over HTTP, and get every reply and read receipt on your webhook.

Works with WhatsApp and WhatsApp BusinessSeveral numbers on one account
send a message
curl -X POST "$APISAPP/v1/messages" \
  -H "Authorization: Bearer wat_••••••••" \
  -d '{"recipient": "14155550132",
       "message": "Your order has shipped 📦"}'

# → 200
{ "ok": true, "wa_message_id": "3EB0CB97F37F91F563B0" }
Your order has shipped 📦14:32
Webhook received
message.read · 3EB0CB97F37F…

Everything your number can do in WhatsApp

One HTTP API for sending, receiving and keeping track of conversations.

Text messages

Send to any phone number or group, with the delivery status of each message.

type: "text"

Images, video and files

Upload once, then send the same file to as many chats as you need.

POST /v1/media

Polls, lists and buttons

Ask a question with 2 to 12 options, or offer a menu people tap instead of type.

type: "poll"

Webhooks

Incoming messages, deliveries, reads and connection changes, each signed so you know it came from us.

message.received

Chats and history

Look up chats, contacts and past messages, and catch up on events you missed.

GET /v1/chats

Contacts

Look up the people this number knows, by name or phone, and the chats they are in.

GET /v1/contacts

Live in a few minutes

No phone to host and no app to install. Your number stays on your phone.

First

Create an account

Sign up with your email and confirm it.

Then

Add a number

Give it a name, like “Sales line”.

Then

Scan the QR code

In WhatsApp: Settings → Linked devices → Link a device.

Done

Call the API

Use the number's API token in your code or automation tool.

Built for developers

Plain JSON over HTTPS with one bearer token per number.

  • Each number has its own API token, and you can replace it at any time.
  • Webhook calls carry a signature header you check with your secret.
  • Numbers are fully separated: one number's token never reaches another's data.
POST /v1/messages
{
  "recipient": "14155550132",
  "type": "poll",
  "question": "Which day suits you?",
  "options": ["Monday", "Tuesday", "Wednesday"]
}

Connect your first number

Create an account, add a number, scan the code.

Create account