API

API Documentation

WA Platform exposes an HTTP API for sending WhatsApp messages and reading device status. Authenticate with your device API key from the dashboard.

Authentication

Every request (except /health) requires your device API key. Create a device in the panel and copy the key from the device screen.

HeaderTypeDescription
Authorization string Bearer API_key — 40-character hex key from the device page
Authorization: Bearer API_key

POSTSend Simple Text Message

Send a text message to a WhatsApp number (international format) or a group.

POST /api/send-message
Authorization: Bearer API_key
Content-Type: application/json

{
  "phone": "9665XXXXXXXX",
  "message": "Hello from WA Platform",
  "isGroup": false
}
ParameterRequiredDescription
phoneYesRecipient phone (international) or group id when isGroup is true
messageYesText body
isGroupNoSet true when sending to a group (appends @g.us if needed)

POSTSend Media

Send an image or document by public URL.

POST /api/send-media
Authorization: Bearer API_key
Content-Type: application/json

{
  "phone": "9665XXXXXXXX",
  "type": "document",
  "url": "https://example.com/file.pdf",
  "caption": "Invoice attached",
  "fileName": "invoice.pdf",
  "isGroup": false
}
ParameterRequiredDescription
phoneYesRecipient phone or group id
typeYesimage or document
urlYesPublic http(s) media URL
captionNoOptional caption
fileNameNoSuggested file name for documents
isGroupNoSet true for groups

GETDevice Info

Connection status, linked phone, and remaining message quota.

GET /api/device/info
Authorization: Bearer API_key

GETDevice Scan QR

Poll QR status for a device while connecting WhatsApp. Use the panel scan page or the scan endpoint.

GET /scanqr/{api-key}

{
  "status": true,
  "message": "qr",
  "id": "deviceId",
  "src": "data:image/png;base64,..."
}

Possible message values: qr, connecting, ready, or an error string. Pass ?reset=1 to force a new QR session. (Bearer alternative: GET /api/device/scan.)

Webhooks

Configure a webhook URL on the device to receive inbound messages (text, image, document, video, audio, location, groups).

POST https://your-server.com/webhook
Content-Type: application/json

{
  "event": "message.received",
  "deviceId": "your-device-id",
  "timestamp": "2026-07-14T12:00:00.000Z",
  "isGroup": false,
  "groupId": null,
  "message": {
    "id": "wa-message-id",
    "from": "9665XXXXXXXX",
    "from_jid": "9665XXXXXXXX@s.whatsapp.net",
    "from_name": "Customer",
    "type": "text",
    "text": "Customer reply",
    "isGroup": false,
    "groupId": null
  }
}
FieldDescription
deviceIdSource device id that received the message
isGrouptrue when the message is from a group
groupIdGroup JID (...@g.us) when isGroup is true; otherwise null
message.fromSender phone (in groups: the participant, not the group)
message.typetext, image, document, video, audio, location, …
message.textBody text or caption when available

Need a live token?

Register, create a device, then copy the API key from the device details page.

Register