API and webhooks
WADOG API keys, endpoints for sending messages and checking WhatsApp, per-number webhooks and event types, for technical teams.
5 min read
WADOG offers a simple API for sending WhatsApp messages from your own software or tools like Zapier/Make, and webhooks that report events on your numbers to outside systems. This article is for technical teams such as your website, booking software or data team. Only account admins can create API keys.
Create an API key
- In the WADOG left menu, open Ayarlar & API (Settings & API).
- On the API anahtarları (API keys) card, click Anahtar oluştur (Create key) and enter an Anahtar adı (Key name, e.g. "Website form", so you remember where it's used).
- Copy the API adresi (API address) at the bottom of the card; all requests go to this address.
Once created, the key is shown in a window:
- Read the warning at the top: the key is shown only once.
- Copy the key (it starts with
wdg_) and store it somewhere safe (a password manager). - Click Kopyaladım, kapat (I've copied it, close).
The list shows the first characters of each key, when it was Son kullanım (last used) and when it was created. To delete a key, click the bin icon in its row; every integration using that key stops immediately and this can't be undone.
Heads up
An API key lets anyone send messages from your numbers. Don't put it in a web page's source code, in JavaScript that runs in the browser or in shared documents; use it on the server side only. If you suspect it has leaked, delete it and create a new one.
Authentication
Add this header to every request:
Authorization: Bearer wdg_...
If the key is missing or invalid, the API returns 401.
Send a message
POST /v1/messages
curl -X POST https://YOUR_API_ADDRESS/v1/messages \
-H "Authorization: Bearer wdg_..." \
-H "Content-Type: application/json" \
-d '{ "to": "+447700900123", "text": "{Hi|Hello}, your consultation is confirmed." }'
| Field | Required | Description |
|---|---|---|
to | Yes | Recipient phone with country code (e.g. +447700900123). |
text | One of text, mediaUrl or template | Message text. Spintax ({A|B}) and contact fields ({{contact.first_name}}) are supported. |
mediaUrl | Link to an image, video or document; .mp3/.ogg is sent as a voice note. | |
template | Name of a template saved in the Message builder. | |
from | Which number to send from: the number's panel name or phone. If empty, it's chosen by the routing rules (the number already used with the patient first, then the default number). | |
record | Send false to not write the message to Conversations. Default: written to the contact's chat if the contact exists. |
Response: { "id": "…", "status": "queued" }. The message isn't sent instantly; it joins the number's bulk lane (a 3–6 second wait for text, 7–10 seconds for media). Track the result in WADOG's Mesaj Geçmişi (Message history) or through the number webhook.
WhatsApp check and number list
POST /v1/check— body:{ "numbers": ["+905551112233", "..."], "from": "..." }. Returns whether each number uses WhatsApp. Up to 50 numbers per request.GET /v1/numbers— lists the account's numbers with name, phone and status. No body needed.
Important
Scanning large lists with /v1/check is also behaviour that attracts WhatsApp's attention. Only check people you'll actually message, and at reasonable intervals. See Bulk sending and number safety.
Number webhooks
If you want events on a number (incoming message, read, disconnection…) reported to your own system:
- On the Numaralar (Numbers) page, click the Ayarlar (Settings) icon on the number's card.
- Enter your address, starting with
https://, in Webhook adresi (isteğe bağlı) (Webhook URL, optional). - Click Kaydet (Save).
All events for that number are sent to this address as JSON POST requests. Every request includes event, instance (the number's internal name) and at (timestamp); the other fields depend on the event:
event | When | Main fields |
|---|---|---|
message_received | A message came in to the number | contactId, phone, message, attachments, isNewContact, assignedTo |
message_sent | A message was sent on WhatsApp | contactId, phone, message |
message_delivered | A message was delivered | contactId, phone |
message_read | A message was read | contactId, phone |
message_failed | A send failed | contactId, phone, error |
button_reply | The patient tapped a button/list row | selectedId, selectedText |
group_message | A message was written in a synced group | groupName, sender, message |
call_received | A WhatsApp call came in | phone, video |
number_connected | The number connected or the connection came back | — |
number_disconnected | The connection dropped and didn't come back quickly | disconnectedAt |
Webhooks are sent on a "best effort" basis: if your address doesn't return a success (2xx) response within 10 seconds, the request is not retried. Set up your receiving side to respond quickly, and do critical checks in Mesaj Geçmişi as well, so important events aren't missed.
Example: connect the number_disconnected event to your clinic's internal alert channel, and the team will know within minutes when a coordinator's line drops and can rescan the QR.
Automation triggers and actions
WADOG events (message received, button reply, number disconnected…) and actions (send WhatsApp message, send template, check for WhatsApp, send to group) can also be connected to MedicalGrow automations. The automation builder isn't included in your plan; our team can configure the flow you need during setup. Message our support team on WhatsApp.
Related articles

Didn't solve your problem?
Ask the assistant or message our support team.