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 (Chatbot Flow atau CS AI) menjawab tanpa admin. Halaman ini membawamu dari nol sampai bot membalas chat pelanggan.

Alur lengkap dalam 5 langkah

  1. Buat akun gateway — daftar, lalu buka portal gateway dan isi nama bisnis. Satu akun gateway = satu tenant, datanya terisolasi dari tenant lain.
  2. Hubungkan device — scan QR (jalur hemat) atau pasang kredensial WhatsApp Cloud API resmi Meta. Status device harus connected sebelum bisa kirim.
  3. Ambil API key — dari halaman API Keys di portal.
  4. Kirim pesan pertama — satu POST /v1/messages.
  5. 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://api.wardia.id/v1

Setiap request wajib membawa API key di header:

Authorization: Bearer wrd_live_xxxxxxxxxxxx

Alternatifnya, header X-API-Key: wrd_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 wrd_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://api.wardia.id/v1/devices
Authorization: Bearer wrd_live_xxx
Content-Type: application/json

{ "label": "toko-sari-admin" }

→ 201 { "device_uuid": "388d0f3a-...", "status": "provisioned" }

Lalu polling QR sampai device tersambung:

GET https://api.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://api.wardia.id/v1/messages \
  -H "Authorization: Bearer wrd_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://api.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://api.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 Chatbot Flow 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.

Unduh Postman collection (JSON)