Panduan
Mulai di sini
Wardia menghubungkan nomor WhatsApp bisnismu ke sistem yang sudah kamu punya: kirim pesan lewat REST API, terima pesan masuk lewat webhook, dan biarkan balasan otomatis (auto-reply atau CS AI) menjawab tanpa admin. Halaman ini membawamu dari nol sampai bot membalas chat pelanggan.
Alur lengkap dalam 5 langkah
- Buat akun gateway — daftar, lalu buka portal gateway dan isi nama bisnis. Satu akun gateway = satu tenant, datanya terisolasi dari tenant lain.
- Hubungkan device — scan QR (jalur hemat) atau pasang kredensial WhatsApp Cloud API resmi Meta. Status device harus
connectedsebelum bisa kirim. - Ambil API key — dari halaman API Keys di portal.
- Kirim pesan pertama — satu
POST /v1/messages. - Terima pesan masuk — daftarkan webhook, atau nyalakan balasan otomatis supaya bot yang menjawab.
1. Base URL & autentikasi
Semua endpoint API ada di bawah prefix /v1:
https://wardia.id/v1
Setiap request wajib membawa API key di header:
Authorization: Bearer ardw_live_xxxxxxxxxxxx
Alternatifnya, header X-API-Key: ardw_live_xxx juga diterima — pilih salah satu, jangan dua-duanya. Semua respons selalu JSON, termasuk error validasi (tidak pernah redirect HTML).
2. Mendapatkan API key
Buka Portal → Gateway → API Keys, beri nama key (mis. server-produksi), lalu klik buat.
Key ditampilkan sekali saja. Kami hanya menyimpan hash-nya — kalau hilang, tidak bisa dilihat lagi, harus buat key baru dan cabut yang lama. Simpan di environment variable server kamu, jangan di kode frontend atau repo.
Key mengikuti format ardw_live_ + string acak. Kalau key bocor, tekan "Cabut" di halaman yang sama — key langsung mati (401 invalid_api_key) tanpa mengganggu key lain.
3. Menghubungkan device
Cara termudah lewat portal: Portal → Gateway → Devices → "Tambah device" → scan QR yang muncul dengan WhatsApp di HP (Perangkat Tertaut). Kalau ingin menampilkan QR di aplikasimu sendiri, jalur API-nya:
POST https://wardia.id/v1/devices
Authorization: Bearer ardw_live_xxx
Content-Type: application/json
{ "label": "toko-sari-admin" }
→ 201 { "device_uuid": "388d0f3a-...", "status": "provisioned" }
Lalu polling QR sampai device tersambung:
GET https://wardia.id/v1/devices/388d0f3a-.../qr
→ 202 { "qr": null } # QR belum siap, coba lagi ~2 detik
→ 200 { "qr": "data:image/png;base64,..." } # tampilkan, berlaku ~90 detik
→ 409 { "error": "already_connected" } # sudah tersambung, selesai
QR berumur pendek (~90 detik). Jangan cache di sisi klien — ambil ulang dari endpoint ini kalau kedaluwarsa. Untuk WhatsApp Cloud API resmi Meta (tanpa QR, tanpa risiko banned), lihat Referensi API → Devices.
4. Kirim pesan pertama
Header Idempotency-Key wajib — isi dengan ID unik per pesan logis dari sistemmu (mis. order-1042-resi). Kalau request-mu timeout dan kamu retry dengan key yang sama, pesan tidak akan terkirim dua kali.
curl -X POST https://wardia.id/v1/messages \
-H "Authorization: Bearer ardw_live_xxx" \
-H "Idempotency-Key: order-1042-resi" \
-H "Content-Type: application/json" \
-d '{
"device_uuid": "388d0f3a-...",
"to": "6281290008646",
"type": "text",
"body": "Halo Budi, pesanan #1042 sudah dikirim. Resi: JX123456789"
}'
→ 202 { "id": 42, "status": "queued", "wa_message_id": null, ... }
202 berarti diterima dan diantrikan, bukan "sudah sampai di HP pelanggan". Status sesungguhnya datang belakangan lewat webhook message.status atau polling GET /v1/messages/42.
Endpoint ini dibatasi per menit sesuai paketmu (Starter 10/menit) — respons membawa X-RateLimit-Remaining, dan kalau lewat batas kamu dapat 429 dengan header Retry-After. Detailnya di Referensi API → Messages.
Versi PHP:
$response = Http::withToken(env('WARDIA_API_KEY'))
->withHeaders(['Idempotency-Key' => 'order-1042-resi'])
->post('https://wardia.id/v1/messages', [
'device_uuid' => env('WARDIA_DEVICE_UUID'),
'to' => '6281290008646',
'type' => 'text',
'body' => 'Halo Budi, pesanan #1042 sudah dikirim.',
]);
5. Terima pesan masuk
Daftarkan URL milikmu sekali saja:
POST https://wardia.id/v1/webhooks
{ "url": "https://tokomu.example.com/wa-webhook",
"events": ["message.received", "message.status", "device.status"] }
→ 201 { "id": 7, "secret": "simpan-string-ini-sekarang-juga" }
secret juga hanya muncul sekali — dipakai memverifikasi tanda tangan tiap event yang kami kirim. Detail verifikasi, retry, dan bentuk payload: halaman Webhook.
6. Biarkan bot yang menjawab
Kalau tujuanmu chat pelanggan terjawab otomatis 24 jam tanpa admin, kamu tidak perlu menulis kode webhook sama sekali — cukup nyalakan auto-reply keyword/jam kerja di portal, atau sambungkan CS AI. Lanjut ke Balas otomatis & CS AI.
Coba cepat lewat Postman
Semua endpoint di atas sudah dikemas siap import — variabel base_url, api_key, dan device_uuid tinggal diisi sekali di level collection.