Kirim Pesan
Lima endpoint di bawah mengirim satu pesan WhatsApp lewat perangkat pemilik kunci API pada header Api-Key. Semuanya butuh field target dalam format yang sama.
Format target
Nomor pribadi: kode negara diikuti nomor, tanpa 0 atau + di depan, diakhiri @s.whatsapp.net. Grup: ID numerik grup diakhiri @g.us.
- Benar:
628123456789@s.whatsapp.net - Salah:
08123456789@s.whatsapp.net(pakai0lokal, bukan kode negara) - Salah:
+628123456789@s.whatsapp.net(tanpa+)
/chat/send-textPesan Teks
| Nama | Tipe | Wajib | Keterangan |
|---|---|---|---|
| target | string | Ya | JID tujuan, lihat format di atas. |
| message | string | Ya | Isi pesan, minimal 3 karakter. |
| is_forwarded | boolean | Tidak | Tandai sebagai pesan diteruskan. Default false. |
curl -X POST https://api.wangsaf.com/v1/chat/send-text \
-H "Api-Key: <API_KEY_PERANGKAT>" \
-H "Content-Type: application/json" \
-d '{
"target": "628123456789@s.whatsapp.net",
"message": "Halo dari Wangsaf!"
}'{
"status": 200,
"message": "Message sent successfully.",
"data": {
"type": "Text",
"action": "Sent",
"chat_id": "3EB0C767D097B3B0F1C9",
"timestamp": 1758012345
}
}action berisi teks status apa adanya dari gateway pengirim dan boleh berubah sewaktu-waktu, jangan dijadikan dasar logic. Field yang stabil untuk dicek: type, chat_id, dan timestamp.
/chat/send-templatePesan Template
Mengirim pesan dari template pesan milik perangkat tersebut (dibuat lewat dashboard). Placeholder di isi template ditulis {nama_variabel} dan diisi lewat objek variable.
| Nama | Tipe | Wajib | Keterangan |
|---|---|---|---|
| target | string | Ya | JID tujuan, lihat format di atas. |
| template | string | Ya | Nama template tersimpan. Huruf, angka, dan garis bawah saja. |
| variable | object | Ya | Pasangan kunci-nilai untuk mengisi placeholder template, nilai berupa teks. |
| is_forwarded | boolean | Tidak | Tandai sebagai pesan diteruskan. Default false. |
curl -X POST https://api.wangsaf.com/v1/chat/send-template \
-H "Api-Key: <API_KEY_PERANGKAT>" \
-H "Content-Type: application/json" \
-d '{
"target": "628123456789@s.whatsapp.net",
"template": "konfirmasi_pesanan",
"variable": { "nama": "Budi", "kode": "INV-2026-0912" }
}'{
"status": 200,
"message": "Message sent successfully.",
"data": {
"type": "Template",
"action": "Sent",
"chat_id": "3EB0C767D097B3B0F1C9",
"timestamp": 1758012345,
"template": "konfirmasi_pesanan"
}
}Kegagalan khusus template (HTTP 400):
- Template tidak ditemukan untuk perangkat ini: "Message template was not found for this device."
- Ada placeholder di template tanpa nilai di
variable: "The :key variable is required in the variable payload." - Hasil setelah placeholder diisi kurang dari 3 karakter: "Substituted text must be at least 3 characters long."
action berisi teks status apa adanya dari gateway pengirim dan boleh berubah sewaktu-waktu, jangan dijadikan dasar logic. Field yang stabil untuk dicek: type, chat_id, dan timestamp.
/chat/send-imagePesan Gambar
Body dikirim sebagai multipart/form-data, bukan JSON, karena ada berkas gambar di dalamnya.
| Nama | Tipe | Wajib | Keterangan |
|---|---|---|---|
| target | string | Ya | JID tujuan, lihat format di atas. |
| message | string | Ya | Keterangan gambar, minimal 3 karakter. |
| image | file | Ya | JPEG/PNG/JPG, maksimal 5 MB. |
| is_forwarded | boolean | Tidak | Tandai sebagai pesan diteruskan. Default false. |
curl -X POST https://api.wangsaf.com/v1/chat/send-image \
-H "Api-Key: <API_KEY_PERANGKAT>" \
-F "target=628123456789@s.whatsapp.net" \
-F "message=Katalog produk terbaru" \
-F "image=@katalog.jpg"{
"status": 200,
"message": "Message sent successfully.",
"data": {
"type": "Image",
"action": "Sent",
"chat_id": "3EB0C767D097B3B0F1C9",
"timestamp": 1758012345
}
}action berisi teks status apa adanya dari gateway pengirim dan boleh berubah sewaktu-waktu, jangan dijadikan dasar logic. Field yang stabil untuk dicek: type, chat_id, dan timestamp.
/chat/send-documentPesan Dokumen
Sama seperti pesan gambar, dikirim sebagai multipart/form-data.
| Nama | Tipe | Wajib | Keterangan |
|---|---|---|---|
| target | string | Ya | JID tujuan, lihat format di atas. |
| document | file | Ya | PDF, Word, Excel, atau PowerPoint, maksimal 10 MB. |
| is_forwarded | boolean | Tidak | Tandai sebagai pesan diteruskan. Default false. |
curl -X POST https://api.wangsaf.com/v1/chat/send-document \
-H "Api-Key: <API_KEY_PERANGKAT>" \
-F "target=628123456789@s.whatsapp.net" \
-F "document=@invoice-INV-2026-0912.pdf"{
"status": 200,
"message": "Message sent successfully.",
"data": {
"type": "Document",
"action": "Sent",
"chat_id": "3EB0C767D097B3B0F1C9",
"timestamp": 1758012345
}
}action berisi teks status apa adanya dari gateway pengirim dan boleh berubah sewaktu-waktu, jangan dijadikan dasar logic. Field yang stabil untuk dicek: type, chat_id, dan timestamp.
/chat/send-locationPesan Lokasi
| Nama | Tipe | Wajib | Keterangan |
|---|---|---|---|
| target | string | Ya | JID tujuan, lihat format di atas. |
| message | string | Ya | Label lokasi, minimal 3 karakter. |
| latitude | number | Ya | Garis lintang. |
| longitude | number | Ya | Garis bujur. |
| is_forwarded | boolean | Tidak | Tandai sebagai pesan diteruskan. Default false. |
curl -X POST https://api.wangsaf.com/v1/chat/send-location \
-H "Api-Key: <API_KEY_PERANGKAT>" \
-H "Content-Type: application/json" \
-d '{
"target": "628123456789@s.whatsapp.net",
"message": "Gudang Utama",
"latitude": -7.797068,
"longitude": 110.370529
}'{
"status": 200,
"message": "Message sent successfully.",
"data": {
"type": "Location",
"action": "Sent",
"chat_id": "3EB0C767D097B3B0F1C9",
"timestamp": 1758012345
}
}action berisi teks status apa adanya dari gateway pengirim dan boleh berubah sewaktu-waktu, jangan dijadikan dasar logic. Field yang stabil untuk dicek: type, chat_id, dan timestamp.
