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¶
Full API reference — every endpoint (chats, contacts, tags, templates, media, users): WhatsApp Integration API.
Embed the inbox UI — drop a ready-made, white-labelable chat UI into your product: see Embed & white-label the inbox.
Self-host / open source — the frontend is open source and ships as a Docker image: see Self-host the open-source frontend.
Provision instances programmatically — see the get.chat Partner API in APIs.