Beranda/Dokumentasi Fitur & REST API
Panduan Lengkap Platform

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.

Host / Base URL:http://localhost:3001
Format Data:application/json
Kecepatan Gateway:< 1 detik / pesan
URL

Struktur Base URL & Direktori Endpoint

Gabungkan Host Server dengan Endpoint Path tujuan

Full URL = Base URL + Endpoint Path

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:

POST/api/v1/messages/send

Kirim pesan teks, media, atau template

http://localhost:3001/api/v1/messages/send
GET/api/v1/templates

Ambil daftar shortcode template milik akun

http://localhost:3001/api/v1/templates
POST/api/broadcast

Buat kampanye broadcast pesan massal

http://localhost:3001/api/broadcast
POST/api/broadcast/{id}/start

Mulai/jalankan pengiriman broadcast

http://localhost:3001/api/broadcast/{id}/start
GET/api/contacts

Ambil atau simpan data kontak penerima

http://localhost:3001/api/contacts
GET/api/gateway/sessions

Cek status koneksi perangkat WhatsApp

http://localhost:3001/api/gateway/sessions

2. Autentikasi & API Key

Setiap request ke REST API Waply wajib menyertakan API Key pada Header HTTP dengan format standar:

Header Authorization (Standar):
Authorization: Bearer snd_live_948f928c2e1739f8bc20a
Alternatif Custom Header:
X-API-Key: snd_live_948f928c2e1739f8bc20a
Keamanan Multi-Tenant: API Key Anda terenkripsi dengan SHA-256 dan terikat strictly ke akun Anda. Anda dapat membuat beberapa API Key terpisah untuk staging dan production di menu Dashboard > API Keys.

3. WhatsApp Device & Multi-Device Rotasi

Waply menghubungkan nomor WhatsApp bisnis Anda secara langsung menggunakan engine socket berkecepatan tinggi tanpa memerlukan emulator.

1. Scan QR Instan

Buka WhatsApp di HP > Perangkat Tertaut > Scan QR di menu Devices.

2. Status Real-Time

Memantau status koneksi CONNECTED, PAIRING, atau DISCONNECTED.

3. Multi-Device Rotation

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:

Hari 1-3Cold Number
10% kuota harian

Fokus interaksi 2 arah dan pesan penting. Pengiriman dibatasi 10% kuota harian dengan safety delay 8-15s untuk membangun skor trust Meta.

Hari 4-7Warm Number
30% kuota harian

Peningkatan volume bertahap ke 30% kuota harian. Mulai interaksi ke pelanggan umum dan gunakan Spintax Engine dengan jeda delay alami.

Hari 8-14Active Number
60% kuota harian

Nomor dinilai stabil oleh sistem telemetri. Batas kuota dinaikkan ke 60% kuota harian untuk broadcast dan otomatisasi skala menengah.

Hari 15+Mature Number
100% kuota penuh

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/send

Endpoint utama untuk mengirim pesan WhatsApp transaksional (OTP, notifikasi pesanan, invoice tagihan) ke nomor pelanggan secara otomatis.

Nomor PengirimOtomatis

Tidak perlu ditulis di kode. Nomor pengirim otomatis ditentukan dari akun WhatsApp yang telah Anda scan di menu Devices. Cukup gunakan deviceId: "auto_rotate".

Nomor Penerima (to)Wajib Dinamis

Wajib diisi dengan nomor WhatsApp pelanggan Anda secara dinamis dari database/aplikasi Anda (format internasional diawali 628... tanpa spasi atau simbol +).

send_message.sh
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):

toWajib

Nomor Penerima (Pelanggan). Format internasional 628... dari database/aplikasi Anda.

messageWajib

Isi teks pesan. Mendukung Spintax {Halo|Hai} & variabel {{name}}.

deviceIdOpsional

Device pengirim. Rekomendasi: "auto_rotate" untuk rotasi otomatis.

variablesOpsional

Data dinamis untuk mengganti placeholder variabel di dalam teks pesan.

Contoh Kasus Integrasi Nyata:

1. Pengiriman Kode OTP Login (Node.js)

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 
    } 
  }
);
2. Notifikasi Tagihan Pesanan (PHP)

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}!
Variasi Hasil 1:

"Halo Budi Santoso, pesanan #INV-01 Anda sedang diproses!"

Variasi Hasil 2:

"Selamat siang Siti Rahma, pesanan #INV-02 Anda sudah dikemas!"

7. Broadcast Campaigns & Anti-Ban Throttling

POST /api/broadcast

Kirim pesan massal ke ribuan penerima dengan aman menggunakan sistem Safety Throttling dan Batch Cooldown bawaan Waply:

Random Message Delay

Jeda acak antar pesan (misal 4 - 8 detik) sehingga pola pengiriman mirip manusia asli.

Batch Cooldown Delay

Setelah mengirim 1 batch (misal 10 pesan), sistem istirahat selama 30 - 60 detik.

Auto Blacklist Filter

Nomor yang terdaftar di Blacklist dilewati otomatis (SKIPPED_BLACKLIST) tanpa gagal.

Real-time Controls

Tersedia kontrol Pause, Resume, dan Cancel saat kampanye berjalan di background.

broadcast_campaign.sh
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/send

Simpan 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.

OTP Verifikasi
Notifikasi Order
Promo Diskon
CS Support
Contoh Pengaturan Shortcode & Variabel di Menu Templates:Dashboard > Templates
Contoh Pengisian Shortcode Template Pesan di Dashboard Waply

Kotak merah pada gambar di atas menunjukkan Shortcode (tpl_order_notif) yang digunakan sebagai nilai parameter "template" pada payload JSON API di bawah ini.

Cara Kerja Pemanggilan Template di Code Client
  1. Buka menu Templates di dashboard dan buat template (misal Shortcode: tpl_order_notif).
  2. Tulis pesan dengan Spintax {Halo|Hai} dan variabel {{name}}, {{order_id}}.
  3. Pada aplikasi backend Anda, panggil endpoint /api/v1/messages/send dengan parameter template: "tpl_order_notif" dan masukkan nilai objek variables.
  4. Jika sewaktu-waktu redaksi pesan diubah di dashboard, pesan API akan otomatis terupdate tanpa perlu mengubah kode aplikasi Anda.

Parameter Request Body:

toWajib

Nomor WhatsApp tujuan (contoh: 6281234567890).

templateShortcode

Shortcode template dari dashboard (contoh: "tpl_order_notif").

variablesObjek JSON

Data key-value untuk mengisi placeholder (misal: name, order_id).

deviceIdOpsional

ID Device atau "auto_rotate" untuk rotasi acak.

template_send.sh
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"
    }
  }'
Fetch Daftar Template via API (Untuk Dropdown CRM / Web Client)GET /api/v1/templates

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/autoreply

Konfigurasi 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.

Alur Eksekusi Balasan Otomatis:
1. Pesan MasukGateway server menangkap teks dari pengirim.
2. Evaluasi AturanPencocokan bertingkat (Exact $\rightarrow$ Starts $\rightarrow$ Contains $\rightarrow$ Regex $\rightarrow$ Fallback).
3. Dynamic & SpintaxSubstitusi {{name}} & acak variasi {Halo|Hai}.
4. Typing & KirimSimulasi status "mengetik..." 1–3 detik lalu kirim.

5 Tipe Pencocokan Kata Kunci (Match Types)

CONTAINSPaling Populer
Mengandung Kata Kunci

Merespons jika pesan memuat kata kunci di mana saja dalam kalimat (tidak peduli posisi awal, tengah, atau akhir).

Kata Kunci: harga, pricelist, ongkir
✓ "Halo min minta info harga paket"
EXACTMenu Angka
Pencocokan Persis 100%

Pesan dari pengirim harus sama persis tanpa tambahan kata lain. Sangat cocok untuk navigasi menu angka atau satu kata.

Kata Kunci: 1, 2, 3, halo, menu
✓ "1"   |   ✗ "halo min"
STARTS_WITHPerintah / Format
Awalan Kalimat

Merespons jika kalimat pesan dimulai dengan salah satu kata kunci yang ditentukan.

Kata Kunci: order, daftar, cek
✓ "order paket bulanan B"
REGEXPola Lanjutan
Ekspresi Reguler (Pattern)

Validasi pola teks khusus seperti format kode transaksi, nomor invoice, atau kombinasi opsi tertentu.

Pola: ^INV-\d{4}
✓ "INV-2026"   |   ✗ "INV"
FALLBACKCadangan Otomatis
Pesan Default Saat Kata Kunci Tidak Dikenal

Dieksekusi saat tidak ada satupun aturan lain yang cocok dengan pesan pelanggan. Sangat ideal untuk menampilkan menu utama atau memberikan kontak Customer Service.

Contoh Respon:
"Halo Kak! Perintah tidak dikenal. Ketik MENU untuk melihat daftar opsi layanan kami."
Variabel Dinamis (Placeholders)

Sisipkan tag variabel berikut ke dalam isi pesan balasan untuk personalisasi otomatis:

Tag VariabelKeteranganContoh Output
{{name}}Nama kontak WhatsApp pengirimBudi Santoso
{{phone}}Nomor WhatsApp pengirim6281234567890
{{time}}Waktu pesan diterima (WIB)14:30
{{date}}Tanggal pesan diterima09/09/2026
Format Spintax Anti-Spam

Gunakan tanda kurung kurawal {opsi1|opsi2|opsi3} agar bot mengacak susunan kalimat di setiap balasan:

Format Penulisan:
{Halo|Hai|Selamat datang} Kak {{name}}! {Ada yang bisa kami bantu?|Ada perlu apa hari ini?}
Jeda Pengetikan (Human Typing Delay):

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

autoreply_rule.sh
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
  }'
Direktori Endpoint API Auto-Reply
MethodEndpoint PathDeskripsi Fungsi
GET/api/autoreplyMengambil seluruh daftar aturan auto-reply aktif akun Anda.
POST/api/autoreplyMembuat aturan auto-reply baru dengan kata kunci dan pesan balasan.
PUT/api/autoreply/:idMemperbarui konfigurasi aturan (nama, kata kunci, template balasan, delay).
PATCH/api/autoreply/:idMengubah status aktif / nonaktif aturan secara instan.
DELETE/api/autoreply/:idMenghapus aturan auto-reply dari database.
POST/api/autoreply/testMenguji 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:

Auto Unsubscribe Detection:

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/webhooks

Webhook 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

1. Anti-Spoofing & Fake Data

URL endpoint webhook Anda berada di domain publik. Tanpa verifikasi signature, siapa saja / hacker dapat menembak URL Anda dengan data transaksi atau pesan palsu.

2. Integritas Data 100%

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.

3. Standar Industri Global

Metode ini merupakan standar keamanan baku yang sama persis digunakan oleh raksasa teknologi seperti GitHub, Stripe, Shopify, dan Midtrans.

Alur Kerja Verifikasi Signature:
  1. Saat ada event WhatsApp, server Waply mengenkripsi data Raw JSON Body menggunakan Secret Key webhook akun Anda dengan algoritma HMAC-SHA256.
  2. Hasil hash disertakan pada HTTP Header request: X-Waply-Signature: sha256=<hash_hex>.
  3. Server Anda membaca raw body pesan dan menghitung ulang hash dengan Secret Key yang sama.
  4. Jika kedua hash cocok (*match*), proses data dan kembalikan 200 OK. Jika tidak cocok, tolak dengan 401 Unauthorized.

Daftar Event Webhook yang Didukung

Event IDKapan DipicuContoh Kegunaan
message.receivedPesan WhatsApp baru masuk dari pelangganChatbot AI, ticketing CS, simpan riwayat chat
message.sentPesan berhasil dikirim keluar dari HP gatewayUpdate status antrean CRM ke TERKIRIM
message.deliveredPesan telah sampai di HP penerima (centang dua abu-abu)Konfirmasi penerimaan OTP / invoice
message.readPesan telah dibuka dan dibaca penerima (centang biru)Analisis tingkat keterbacaan kampanye marketing
device.connectedNomor WhatsApp berhasil terhubung ke serverNotifikasi status sistem online
device.disconnectedKoneksi WhatsApp HP terputus atau logoutKirim alert darurat via email ke admin server

Contoh Kode Verifikasi HMAC-SHA256:

webhook_handler.ts
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:

Pembayaran Otomatis

Mendukung GoPay, QRIS, Virtual Account (BCA/Mandiri/BNI/BRI), dan Kartu Kredit via Midtrans Snap.

Kode Voucher Diskon

Masukkan kode promo voucher saat checkout untuk potongan harga langsung.

Aktivasi Instan

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
PaketBatas Request / MenitMaksimal DevicesKuota Pesan
Memuat data paket...---

16. Error Codes & Solusi

Status CodePenyebab ErrorSolusi
400 Bad RequestFormat nomor salah atau parameter wajib kosong.Pastikan format nomor diawali kode negara seperti 62812xxx.
401 UnauthorizedAPI Key tidak valid atau header authorization hilang.Periksa kembali API Key di dashboard Waply.
404 Not FoundTidak ada WhatsApp device aktif yang terhubung.Scan QR Code di menu WhatsApp Devices pada dashboard.
429 Rate LimitMelampaui batas kecepatan request paket Anda.Tambahkan jeda request atau upgrade paket Anda.