Dokumentasi Fitur & REST API Waply
Waply adalah platform WhatsApp Gateway & Customer Engagement multi-tenant berperforma tinggi. Waply dilengkapi kemampuan pengiriman pesan otomatis (OTP & invoice), kampanye broadcast anti-ban dengan throttling pintar, rotasi multi-device otomatis, auto-reply bot, pustaka template spintax, serta webhook event real-time.
Integrasi dengan Flutter, Laravel, Node.js, Python, atau Golang?
Dapatkan boilerplate client siap salin & contoh kode pengiriman lengkap untuk bahasa pemrograman favorit Anda.
http://localhost:3001Struktur Base URL & Direktori Endpoint
Gabungkan Host Server dengan Endpoint Path tujuan
Base URL adalah alamat host domain utama server Anda (http://localhost:3001). Saat melakukan request dari aplikasi (Axios, cURL, Fetch, PHP), sambungkan Base URL dengan Endpoint Path fitur terkait:
| Method | Endpoint Path | Full URL Contoh | Fungsi Utama |
|---|---|---|---|
| POST | /api/v1/messages/send | http://localhost:3001/api/v1/messages/send | Kirim pesan teks, media, atau template |
| GET | /api/v1/templates | http://localhost:3001/api/v1/templates | Ambil daftar shortcode template milik akun |
| POST | /api/broadcast | http://localhost:3001/api/broadcast | Buat kampanye broadcast pesan massal |
| POST | /api/broadcast/{id}/start | http://localhost:3001/api/broadcast/{id}/start | Mulai/jalankan pengiriman broadcast |
| GET | /api/contacts | http://localhost:3001/api/contacts | Ambil atau simpan data kontak penerima |
| GET | /api/gateway/sessions | http://localhost:3001/api/gateway/sessions | Cek status koneksi perangkat WhatsApp |
Kirim pesan teks, media, atau template
http://localhost:3001/api/v1/messages/sendAmbil daftar shortcode template milik akun
http://localhost:3001/api/v1/templatesBuat kampanye broadcast pesan massal
http://localhost:3001/api/broadcastMulai/jalankan pengiriman broadcast
http://localhost:3001/api/broadcast/{id}/startAmbil atau simpan data kontak penerima
http://localhost:3001/api/contactsCek status koneksi perangkat WhatsApp
http://localhost:3001/api/gateway/sessions2. Autentikasi & API Key
Setiap request ke REST API Waply wajib menyertakan API Key pada Header HTTP dengan format standar:
Authorization: Bearer snd_live_948f928c2e1739f8bc20aX-API-Key: snd_live_948f928c2e1739f8bc20a3. WhatsApp Device & Multi-Device Rotasi
Waply menghubungkan nomor WhatsApp bisnis Anda secara langsung menggunakan engine socket berkecepatan tinggi tanpa memerlukan emulator.
Buka WhatsApp di HP > Perangkat Tertaut > Scan QR di menu Devices.
Memantau status koneksi CONNECTED, PAIRING, atau DISCONNECTED.
Kirim dengan deviceId: "auto_rotate" untuk rotasi Round-Robin.
4. Warmup Device & Panduan Anti-Ban
Nomor WhatsApp baru atau nomor yang baru saja didaftarkan sangat rentan diblokir oleh algoritma WhatsApp jika langsung mengirim ribuan pesan. Gunakan fitur Device Warmup untuk membangun reputasi nomor secara bertahap:
Fokus interaksi 2 arah dan pesan penting. Pengiriman dibatasi 10% kuota harian dengan safety delay 8-15s untuk membangun skor trust Meta.
Peningkatan volume bertahap ke 30% kuota harian. Mulai interaksi ke pelanggan umum dan gunakan Spintax Engine dengan jeda delay alami.
Nomor dinilai stabil oleh sistem telemetri. Batas kuota dinaikkan ke 60% kuota harian untuk broadcast dan otomatisasi skala menengah.
Nomor telah memiliki reputasi kuat. Kampanye broadcast skala penuh aktif sesuai limit kuota paket dengan Smart Throttling.
5. Kirim Pesan (Direct Send API)
POST /api/v1/messages/sendEndpoint utama untuk mengirim pesan WhatsApp transaksional (OTP, notifikasi pesanan, invoice tagihan) ke nomor pelanggan secara otomatis.
Tidak perlu ditulis di kode. Nomor pengirim otomatis ditentukan dari akun WhatsApp yang telah Anda scan di menu Devices. Cukup gunakan deviceId: "auto_rotate".
to)Wajib DinamisWajib diisi dengan nomor WhatsApp pelanggan Anda secara dinamis dari database/aplikasi Anda (format internasional diawali 628... tanpa spasi atau simbol +).
curl -X POST http://localhost:3001/api/v1/messages/send \
-H "Content-Type: application/json" \
-H "Authorization: Bearer snd_live_YOUR_API_KEY" \
-d '{
"to": "6281234567890",
"message": "{Halo|Hai|Selamat siang} {{name}}, pesanan Anda {{order_id}} sedang diproses!",
"deviceId": "auto_rotate",
"variables": {
"name": "Budi Santoso",
"order_id": "INV-2026-9812"
}
}'Spesifikasi Parameter Request (JSON Body):
| Parameter | Tipe Data | Status | Keterangan & Contoh |
|---|---|---|---|
| to | string | Wajib | Nomor WhatsApp Penerima (Pelanggan). Wajib format internasional (contoh: 6281234567890). Diisi variabel dinamis dari database/sistem Anda. |
| message | string | Wajib | Isi pesan WhatsApp. Mendukung Spintax {Halo|Hai} dan variabel {{name}}. |
| deviceId | string | Opsional | ID WhatsApp Device pengirim. Gunakan "auto_rotate" (rekomendasi) agar Waply otomatis merotasi nomor WhatsApp aktif Anda. |
| variables | object | Opsional | Key-Value pasangan data pengganti tag variabel (contoh: {"name": "Budi", "order_id": "INV-001"}). |
toWajibNomor Penerima (Pelanggan). Format internasional 628... dari database/aplikasi Anda.
messageWajibIsi teks pesan. Mendukung Spintax {Halo|Hai} & variabel {{name}}.
deviceIdOpsionalDevice pengirim. Rekomendasi: "auto_rotate" untuk rotasi otomatis.
variablesOpsionalData dinamis untuk mengganti placeholder variabel di dalam teks pesan.
Contoh Kasus Integrasi Nyata:
Kirim kode 6-digit ke nomor yang diinput user saat login:
const res = await axios.post(
"http://localhost:3001/api/v1/messages/send",
{
to: req.body.phone,
message: "Kode OTP Anda: *{{otp}}*.",
deviceId: "auto_rotate",
variables: { otp: "492810" }
},
{
headers: {
Authorization: "Bearer " + API_KEY
}
}
);Kirim tagihan otomatis setelah checkout dari database toko:
$res = Http::withToken($apiKey)->post(
"http://localhost:3001/api/v1/messages/send",
[
"to" => $order->customer_phone,
"message" => "Halo {{name}}, tagihan Rp {{total}} terbit.",
"deviceId" => "auto_rotate",
"variables" => [
"name" => $order->customer_name,
"total" => "150.000",
"inv" => (string)$order->id
]
]
);6. Spintax Engine & Variabel Dinamis
Spintax adalah teknik variasi kata acak untuk mencegah sistem spam WhatsApp mendeteksi kesamaan teks:
{Halo|Hai|Selamat siang} {{name}}, pesanan #{order_id} Anda {sedang diproses|sudah dikemas}!"Halo Budi Santoso, pesanan #INV-01 Anda sedang diproses!"
"Selamat siang Siti Rahma, pesanan #INV-02 Anda sudah dikemas!"
7. Broadcast Campaigns & Anti-Ban Throttling
POST /api/broadcastKirim pesan massal ke ribuan penerima dengan aman menggunakan sistem Safety Throttling dan Batch Cooldown bawaan Waply:
Jeda acak antar pesan (misal 4 - 8 detik) sehingga pola pengiriman mirip manusia asli.
Setelah mengirim 1 batch (misal 10 pesan), sistem istirahat selama 30 - 60 detik.
Nomor yang terdaftar di Blacklist dilewati otomatis (SKIPPED_BLACKLIST) tanpa gagal.
Tersedia kontrol Pause, Resume, dan Cancel saat kampanye berjalan di background.
curl -X POST http://localhost:3001/api/broadcast \
-H "Content-Type: application/json" \
-H "Authorization: Bearer snd_live_YOUR_API_KEY" \
-d '{
"name": "Promo Weekend Spesial 30%",
"messageTemplate": "{Halo|Hai|Selamat siang} {{name}}, dapatkan diskon 30% hari ini dengan kode {{kode}}!",
"batchSize": 10,
"batchDelaySec": 60,
"minDelaySec": 4,
"maxDelaySec": 8,
"recipients": [
{ "phoneNumber": "6281234567890", "name": "Budi Santoso", "variables": { "kode": "WAPLY30" } },
{ "phoneNumber": "6285712345678", "name": "Siti Rahma", "variables": { "kode": "WAPLY30" } }
]
}'8. Buku Kontak & Segmentasi Grup
Kelola database pelanggan Anda di menu Buku Kontak:
- Import Bulk (CSV/Excel): Masukkan ratusan nomor sekaligus via endpoint
/api/contacts/import. - Grup Kontak: Segmentasikan pelanggan menjadi grup seperti Pelanggan VIP, Leads Baru, Reseller.
- Custom Variables: Tambahkan variabel dinamis per kontak (kota, saldo, invoice, resi).
9. Pustaka Template Pesan & Integrasi API
POST /api/v1/messages/sendSimpan format pesan siap pakai di menu Templates. Client dapat langsung memanggil template di aplikasi backend mereka menggunakan Shortcode tanpa perlu menulis ulang seluruh isi pesan di kode program.

Kotak merah pada gambar di atas menunjukkan Shortcode (tpl_order_notif) yang digunakan sebagai nilai parameter "template" pada payload JSON API di bawah ini.
- Buka menu Templates di dashboard dan buat template (misal Shortcode:
tpl_order_notif). - Tulis pesan dengan Spintax
{Halo|Hai}dan variabel{{name}},{{order_id}}. - Pada aplikasi backend Anda, panggil endpoint
/api/v1/messages/senddengan parametertemplate: "tpl_order_notif"dan masukkan nilai objekvariables. - Jika sewaktu-waktu redaksi pesan diubah di dashboard, pesan API akan otomatis terupdate tanpa perlu mengubah kode aplikasi Anda.
Parameter Request Body:
toWajibNomor WhatsApp tujuan (contoh: 6281234567890).
templateShortcodeShortcode template dari dashboard (contoh: "tpl_order_notif").
variablesObjek JSONData key-value untuk mengisi placeholder (misal: name, order_id).
deviceIdOpsionalID Device atau "auto_rotate" untuk rotasi acak.
curl -X POST http://localhost:3001/api/v1/messages/send \
-H "Content-Type: application/json" \
-H "Authorization: Bearer snd_live_YOUR_API_KEY" \
-d '{
"to": "6281234567890",
"template": "tpl_order_notif",
"deviceId": "auto_rotate",
"variables": {
"name": "Budi Santoso",
"order_id": "INV-2026-9812",
"eta": "Besok Siang"
}
}'Aplikasi client dapat melakukan request GET http://localhost:3001/api/v1/templates dengan header Authorization: Bearer YOUR_API_KEY untuk mengambil daftar template aktif yang tersimpan di akun mereka.
10. Auto-Reply & Bot Otomatisasi
POST /api/autoreplyKonfigurasi bot balasan otomatis WhatsApp berbasis kata kunci di menu Auto Reply. Engine kami mengevaluasi setiap pesan masuk secara real-time, menyisipkan variabel kontak dinamis, mengacak kalimat melalui Spintax, dan mensimulasikan jeda pengetikan (typing presence) agar nomor tetap aman dari banned.
5 Tipe Pencocokan Kata Kunci (Match Types)
Merespons jika pesan memuat kata kunci di mana saja dalam kalimat (tidak peduli posisi awal, tengah, atau akhir).
Pesan dari pengirim harus sama persis tanpa tambahan kata lain. Sangat cocok untuk navigasi menu angka atau satu kata.
Merespons jika kalimat pesan dimulai dengan salah satu kata kunci yang ditentukan.
Validasi pola teks khusus seperti format kode transaksi, nomor invoice, atau kombinasi opsi tertentu.
Dieksekusi saat tidak ada satupun aturan lain yang cocok dengan pesan pelanggan. Sangat ideal untuk menampilkan menu utama atau memberikan kontak Customer Service.
Sisipkan tag variabel berikut ke dalam isi pesan balasan untuk personalisasi otomatis:
| Tag Variabel | Keterangan | Contoh Output |
|---|---|---|
| {{name}} | Nama kontak WhatsApp pengirim | Budi Santoso |
| {{phone}} | Nomor WhatsApp pengirim | 6281234567890 |
| {{time}} | Waktu pesan diterima (WIB) | 14:30 |
| {{date}} | Tanggal pesan diterima | 09/09/2026 |
Gunakan tanda kurung kurawal {opsi1|opsi2|opsi3} agar bot mengacak susunan kalimat di setiap balasan:
Atur nilai delaySec (1–3 detik). Bot akan menampilkan status "sedang mengetik..." di WhatsApp pelanggan sebelum pesan dikirim.
Buat Aturan Auto-Reply via REST API
curl -X POST http://localhost:3001/api/autoreply \
-H "Content-Type: application/json" \
-H "Authorization: Bearer snd_live_YOUR_API_KEY" \
-d '{
"name": "Info Pricelist",
"matchType": "CONTAINS",
"keywords": ["harga", "paket"],
"replyMessage": "{Halo|Hai} Kak {{name}}! Paket mulai Rp99rb.",
"delaySec": 2,
"isActive": true
}'| Method | Endpoint Path | Deskripsi Fungsi |
|---|---|---|
| GET | /api/autoreply | Mengambil seluruh daftar aturan auto-reply aktif akun Anda. |
| POST | /api/autoreply | Membuat aturan auto-reply baru dengan kata kunci dan pesan balasan. |
| PUT | /api/autoreply/:id | Memperbarui konfigurasi aturan (nama, kata kunci, template balasan, delay). |
| PATCH | /api/autoreply/:id | Mengubah status aktif / nonaktif aturan secara instan. |
| DELETE | /api/autoreply/:id | Menghapus aturan auto-reply dari database. |
| POST | /api/autoreply/test | Menguji simulasi respon teks masuk di lingkungan sandbox sebelum live. |
11. Blacklist & Auto Opt-Out DND
Patuhi privasi pelanggan dan hindari blokir nomor dengan manajemen Blacklist:
Saat pelanggan membalas kata kunci seperti STOP, BERHENTI, atau UNSUBSCRIBE, sistem Waply otomatis memasukkan nomor tersebut ke daftar Blacklist dan melewati pengiriman pesan selanjutnya.
12. Webhooks & HMAC Signature
POST /api/webhooksWebhook memungkinkan server backend aplikasi Anda menerima notifikasi instan secara real-time saat ada pesan WhatsApp masuk, status centang terkirim/dibaca, atau saat perangkat WhatsApp terputus.
Apa itu HMAC Signature & Mengapa Wajib Digunakan?
Standar otentikasi kriptografi SHA-256 untuk memvalidasi keaslian pengirim webhook
URL endpoint webhook Anda berada di domain publik. Tanpa verifikasi signature, siapa saja / hacker dapat menembak URL Anda dengan data transaksi atau pesan palsu.
HMAC-SHA256 mengunci isi pesan (*payload*). Jika ada pihak ketiga di jaringan yang memodifikasi 1 karakter data saja, hasil kalkulasi hash akan berbeda dan request langsung ditolak.
Metode ini merupakan standar keamanan baku yang sama persis digunakan oleh raksasa teknologi seperti GitHub, Stripe, Shopify, dan Midtrans.
- Saat ada event WhatsApp, server Waply mengenkripsi data Raw JSON Body menggunakan Secret Key webhook akun Anda dengan algoritma HMAC-SHA256.
- Hasil hash disertakan pada HTTP Header request:
X-Waply-Signature: sha256=<hash_hex>. - Server Anda membaca raw body pesan dan menghitung ulang hash dengan Secret Key yang sama.
- Jika kedua hash cocok (*match*), proses data dan kembalikan
200 OK. Jika tidak cocok, tolak dengan401 Unauthorized.
Daftar Event Webhook yang Didukung
| Event ID | Kapan Dipicu | Contoh Kegunaan |
|---|---|---|
| message.received | Pesan WhatsApp baru masuk dari pelanggan | Chatbot AI, ticketing CS, simpan riwayat chat |
| message.sent | Pesan berhasil dikirim keluar dari HP gateway | Update status antrean CRM ke TERKIRIM |
| message.delivered | Pesan telah sampai di HP penerima (centang dua abu-abu) | Konfirmasi penerimaan OTP / invoice |
| message.read | Pesan telah dibuka dan dibaca penerima (centang biru) | Analisis tingkat keterbacaan kampanye marketing |
| device.connected | Nomor WhatsApp berhasil terhubung ke server | Notifikasi status sistem online |
| device.disconnected | Koneksi WhatsApp HP terputus atau logout | Kirim alert darurat via email ke admin server |
Contoh Kode Verifikasi HMAC-SHA256:
import express from "express";
import crypto from "crypto";
const app = express();
app.use(express.json());
app.post("/webhook/waply", (req, res) => {
const signature = req.headers["x-waply-signature"];
const webhookSecret = process.env.WAPLY_WEBHOOK_SECRET;
// 1. Verifikasi HMAC-SHA256 signature
const expectedSignature = crypto
.createHmac("sha256", webhookSecret)
.update(JSON.stringify(req.body))
.digest("hex");
if (signature !== expectedSignature && signature !== `sha256=${expectedSignature}`) {
return res.status(401).json({ error: "Invalid signature" });
}
const { event, data } = req.body;
console.log("Event diterima:", event);
// 2. Tangani event pesan masuk
if (event === "message.received") {
console.log(`Chat masuk dari ${data.sender?.number}: ${data.text}`);
}
// 3. Selalu respon 200 OK
return res.status(200).json({ status: "received" });
});13. Billing, Paket Langganan & Voucher
Kelola status paket langganan dan upgrade kuota di menu Billing & Paket:
Mendukung GoPay, QRIS, Virtual Account (BCA/Mandiri/BNI/BRI), dan Kartu Kredit via Midtrans Snap.
Masukkan kode promo voucher saat checkout untuk potongan harga langsung.
Kuota pesan dan kapasitas multi-device bertambah otomatis saat pembayaran sukses.
14. Pusat Bantuan (Support Tickets)
Jika mengalami kendala teknis atau pertanyaan seputar gateway, buat tiket bantuan di menu Bantuan & Support. Tim teknis Waply akan membalas langsung di room chat tiket Anda.
15. Rate Limits & Kuota Paket
Sesuai konfigurasi paket aktif Waply| Paket | Batas Request / Menit | Maksimal Devices | Kuota Pesan |
|---|---|---|---|
| Memuat data paket... | - | - | - |
16. Error Codes & Solusi
| Status Code | Penyebab Error | Solusi |
|---|---|---|
| 400 Bad Request | Format nomor salah atau parameter wajib kosong. | Pastikan format nomor diawali kode negara seperti 62812xxx. |
| 401 Unauthorized | API Key tidak valid atau header authorization hilang. | Periksa kembali API Key di dashboard Waply. |
| 404 Not Found | Tidak ada WhatsApp device aktif yang terhubung. | Scan QR Code di menu WhatsApp Devices pada dashboard. |
| 429 Rate Limit | Melampaui batas kecepatan request paket Anda. | Tambahkan jeda request atau upgrade paket Anda. |
