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.

ParameterRequiredDescription
targetrequiredDestination number(s), comma separated. Use number|name|var1|var2|var3 for personalisation. Prefixes 08 / 62 / +62 are accepted.
messagerequired*Message text. Supports {name}, {var1}–{var3}. *Optional when sending a file.
urloptionalPublic file URL (http/https) sent as an attachment.
fileoptionalUpload a file directly (multipart/form-data).
filenameoptionalFile name shown to the recipient.
delayoptionalDelay between targets in seconds, e.g. 5 or random 2-8.
scheduleoptionalUnix timestamp (seconds) for scheduled sending.
countryCodeoptionalDefault 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": "..."}.

reasonMeaning
invalid tokenWrong token or deleted device
target invalidEmpty target
quota tidak cukupText quota exhausted
kuota attachment tidak cukupAttachment quota exhausted or not included in the plan
package expiredPlan 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