Quickstart: Send your first WhatsApp message

get.chat puts a clean REST API in front of the WhatsApp Business API (WABA), so you can send and receive WhatsApp messages without dealing with WABA’s raw payloads, media handling, or its single-webhook limitation.

This guide takes you from zero to a sent — and received — message in about five minutes using nothing but curl.

What you’ll need

  • A get.chat instance (your stack name) and a user with API access (username + password).

  • A terminal with curl, or any HTTP client.


1. Find your base URL

Every get.chat instance has its own host. Replace YOUR_STACK_NAME with the identifier in your inbox/admin URL:

https://YOUR_STACK_NAME.inbox.getchat.360dialog.io/

All API endpoints live under /api/v1/ on that host.

Quick sanity check — this endpoint needs no auth:

curl https://YOUR_STACK_NAME.inbox.getchat.360dialog.io/api/v1/status/health/

2. Get an API token

Exchange your username and password for a token:

curl -X POST \
  https://YOUR_STACK_NAME.inbox.getchat.360dialog.io/api/v1/auth/token/ \
  -H "Content-Type: application/json" \
  -d '{"username": "peter", "password": "your-password"}'

Response:

{ "token": "9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b" }

Send this token on every authenticated request using the Token prefix:

Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b

3. Send a message

Send a text message with a single POST to /api/v1/messages/. wa_id is the recipient’s WhatsApp number in international format, without +:

curl -X POST \
  https://YOUR_STACK_NAME.inbox.getchat.360dialog.io/api/v1/messages/ \
  -H "Authorization: Token YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
        "wa_id": "48123123123",
        "type": "text",
        "text": { "body": "Hello from the get.chat API!" }
      }'

Sending media works the same way — just change the type:

{
  "wa_id": "48123123123",
  "type": "image",
  "image": {
    "link": "https://YOUR_STACK_NAME.inbox.getchat.360dialog.io/api/v1/media/image.jpg",
    "caption": "Here is the picture. Thanks!"
  }
}

Heads up — the 24-hour window. WhatsApp only lets you send free-form messages within 24 hours of the user’s last message. Outside that window, send an approved template instead (see GET /api/v1/templates/ in the API reference).

Here’s the same send call in JavaScript:

const BASE = "https://YOUR_STACK_NAME.inbox.getchat.360dialog.io";

await fetch(`${BASE}/api/v1/messages/`, {
  method: "POST",
  headers: {
    Authorization: "Token YOUR_TOKEN",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    wa_id: "48123123123",
    type: "text",
    text: { body: "Hello from the get.chat API!" },
  }),
});

4. Receive messages with webhooks

WhatsApp’s official API lets you register only one webhook per number. get.chat removes that limit: it receives the WABA webhook and fans events out to multiple per-user webhooks that you control.

Register and manage your webhooks under:

GET  /api/v1/webhooks/waba/            # list your webhooks
GET  /api/v1/webhooks/waba/{id}/       # inspect one
PUT  /api/v1/webhooks/waba/{id}/       # update its target URL
GET  /api/v1/webhooks/waba/{id}/test/  # send a test event

Once configured, every inbound message and status update is POSTed to your endpoint as JSON, so your app can react in real time. See Multiple webhooks for WhatsApp for why this matters and how the fan-out works.

5. Where to go next