WhatsApp connection as a service · API 2026-08

Your WhatsApp number, driven by a clean REST API.

Pair any number by QR code, send every message type, receive everything as webhooks, manage groups and keep hosted history — on infrastructure that reconnects itself.

  • No Meta verification
  • No per-message fees
  • Multi-tenant
  • Auto-reconnect
  • 43 endpoints
session acmemain
connected
  1. POST /start?clientId=acmemain0.00 s
    { "status": "initializing" }
  2. GET /qr?clientId=acmemain1.9 s
    { "status": "qr", "qr": "data:image/png;…" }
  3. GET /qr?clientId=acmemain14.2 s
    { "status": "connected" }
  4. POST /send-message15.1 s
    { "status": "sent", "messageId": "3EB0…" }
webhook ← message.received · "See you Saturday!" · 27.4 s
Send a message
curl -X POST "https://api.meowsapp.com/send-message" \
  -H "Authorization: Bearer $SN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "clientId": "acmemain",
    "to": "+60123456789",
    "body": "Hi Jane — your viewing is confirmed for Saturday, 3 pm.",
    "metaData": { "fromAI": false, "userId": "agent_7" }
  }'

# → { "status": "sent", "messageId": "3EB0A1B2C3D4E5F6" }
…and receive the reply on your webhook
{
  "event": "message.received",
  "type": "text",
  "clientId": "acmemain",
  "chatRoomId": "acmemain-60111111111111-123456789012345",
  "clientLid": "123456789012345",
  "remoteName": "Jane Lim",
  "remotePhone": "60123456789",
  "fromMe": false,
  "messageId": "3EB0C4D5E6F7",
  "body": "See you Saturday!",
  "quoted": { "messageId": "3EB0A1B2C3D4E5F6", "type": "text" },
  "timestamp": "2026-08-28T05:22:55Z"
}

What you get

Everything WhatsApp Web can do, as an API

Built for CRMs, AI agents, support desks and notification pipelines that need a real WhatsApp number behind them.

Pair any number in minutes

QR code or 8-digit phone code. No Meta business verification, no template approvals, no per-message fees — the number you already own, driven by API.

Every message type

Text, replies, mentions, images, video, documents, voice notes, stickers, polls, buttons, reactions, edits, locations and contact cards — send and receive.

Webhooks, not polling

Every inbound message, vote, button tap, reaction, edit and delete is POSTed to your URL as one normalised JSON event, with retries and a bearer token.

Groups

List, create and manage groups, add or promote members, mint invite links — and opt in to receiving group traffic per session.

Hosted inbox (optional)

Turn on history and we store every chat, copy media to permanent public links, resolve profile pictures and expose it all over read endpoints.

Built to stay connected

Sessions auto-resume after every deploy or crash, a heartbeat reconnects dropped sessions every two minutes, and terminal states raise alerts instead of silent failures.

How it works

Live this afternoon, not next quarter

  1. 01

    Get a token

    One bearer token for your whole account. Hand out per-session secrets to your own customers later.

  2. 02

    Start a session

    POST /start with a clientId you choose and the webhook URL that should receive messages.

  3. 03

    Scan the QR

    Poll GET /qr, show the image, and watch the status flip to connected.

  4. 04

    Send and receive

    POST /send-message to talk; your webhook receives every reply as JSON.

Ready to put a WhatsApp number behind your product?

Get a token, pair a number, and send your first message before your coffee cools.