WA Gateway

Messages

Send text, images, documents and audio, and read a Device's Message history.

Send a Message

POST /v1/devices/{id}/messages

{id} is the Device that sends the Message. It must be connected.

Body fieldRequiredMeaning
toyesThe recipient's number with its country code, digits only: 9665XXXXXXXX (no +, spaces or leading zero).
typeyestext, image, document or audio.
textfor textThe message text.
media_urlfor image, document, audioA public http or https link to the file. We download it once, when you send.
captionnoText shown under an image or document.
curl -X POST https://api.wa.goupdev.net/v1/devices/7/messages \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"to": "9665XXXXXXXX", "type": "text", "text": "Your order has shipped."}'

Answer 201:

{ "id": 1042, "status": "queued" }

queued means we accepted the Message. Messages from one Device are sent one at a time, a few seconds apart, so a long queue takes a while. To follow a Message, keep its id: your Webhook receives message.status_changed when it is delivered and read.

Files

  • Images: up to 5 MB. Documents and audio: up to 16 MB.
  • The link must be reachable from the internet. Links to private networks (such as localhost or 192.168.x.x) are refused.

Errors

ErrorWhy
400 {"error": "to and type are required"}to or type is missing.
400 {"error": "text is required for type=text"}A text Message without text.
400 {"error": "media_url is required for media types"}A file Message without media_url.
400 {"error": "Unsupported type: video"}type isn't one of the four types.
400 {"error": "Failed to download media: 404"}We couldn't download the file (the text says why).
402 {"error": "No active Subscription"}Your Tenant has no active Subscription.
404 {"error": "Device not found"}No Device with this id in your Tenant.
409 {"error": "Device is not connected"}The Device isn't connected. Link it again.
413 {"error": "Media exceeds 5242880 byte limit for type image"}The file is too big.
429 {"error": "Monthly Message Quota reached"}Your Plan's monthly Quota is used up.
429 {"error": "Rate limit exceeded (hourly cap: 60)"}This Device reached a Send Cap. Try later.

Both 429 answers mean "not now", for different reasons. Tell them apart by the error text.

List a Device's Messages

GET /v1/devices/{id}/messages?limit=50

limit is 1 to 200 (default 50). Answer 200: the Messages the Device sent, newest first. Incoming Messages are not stored: they reach you only through your Webhook (message.received).

[
  {
    "id": 1042,
    "direction": "out",
    "to_number": "9665XXXXXXXX",
    "from_number": null,
    "type": "text",
    "content": "Your order has shipped.",
    "status": "read",
    "error": null,
    "created_at": "2026-10-08T09:40:00.000Z"
  }
]
FieldMeaning
directionout (sent by the Device).
statusqueued, sent, delivered, read or failed. See statuses.
contentThe text, or the file's link for a file you sent.
errorWhy it failed, for failed Messages.

On this page