API Documentation
A simple REST API to send WhatsApp messages and check device and message status.
Authentication
Every request carries the device token in the Authorization header. Find it in the dashboard under Device. A rotator token can be used to spread sending across several devices.
Authorization: TOKEN
Base URL: https://synerwa.net · Body: application/x-www-form-urlencoded, multipart/form-data, or application/json
POST /send
Sends a text or attachment message to one or many numbers. Messages are queued and sent in order.
| Parameter | Required | Description |
|---|---|---|
target | required | Destination number(s), comma separated. Use number|name|var1|var2|var3 for personalisation. Prefixes 08 / 62 / +62 are accepted. |
message | required* | Message text. Supports {name}, {var1}–{var3}. *Optional when sending a file. |
url | optional | Public file URL (http/https) sent as an attachment. |
file | optional | Upload a file directly (multipart/form-data). |
filename | optional | File name shown to the recipient. |
delay | optional | Delay between targets in seconds, e.g. 5 or random 2-8. |
schedule | optional | Unix timestamp (seconds) for scheduled sending. |
countryCode | optional | Default country code for numbers starting with 0. Default 62. |
curl -X POST https://synerwa.net/send \
-H "Authorization: TOKEN" \
-d "target=081234567890|Budi" \
-d "message=Hi {name}, your order has shipped."
Success response:
{
"status": true,
"detail": "success! message in queue",
"id": ["128"],
"process": "pending",
"target": ["6281234567890"],
"type": "text",
"attachment": false
}
Attachment type is detected from the file extension: image, video, audio, document. Attachment messages use the attachment quota, separate from the text quota.
POST /device
Device info: connection status, package, remaining quota and expiry.
curl -X POST https://synerwa.net/device -H "Authorization: TOKEN"
{ "status": true, "device": "6281200000000", "device_status": "connected",
"package": "Super", "quota": 9840, "media_quota": 9975, "expired": "2026-10-23 08:00:00" }
POST /status
Check a single message by the id returned by /send.
curl -X POST https://synerwa.net/status -H "Authorization: TOKEN" -d "id=128"
{ "status": true, "data": { "id": 128, "target": "6281234567890", "type": "text",
"status": "sent", "error": null, "created_at": "2026-09-23 08:00:00" } }
Status values: pending, sending, sent, failed.
Webhook
Set a Webhook URL in the device settings to receive incoming messages as JSON. See the full format in the webhook guide.
Errors
Failed requests return HTTP 400 with {"status": false, "reason": "..."}.
| reason | Meaning |
|---|---|
| invalid token | Wrong token or deleted device |
| target invalid | Empty target |
| quota tidak cukup | Text quota exhausted |
| kuota attachment tidak cukup | Attachment quota exhausted or not included in the plan |
| package expired | Plan has expired |
Code samples
PHP · Node.js & Python · OTP
Try Synerwa for free
Sign up, scan the QR and send your first 1,000 messages at no cost.
Create a free account