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

  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://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.

Unduh Postman collection (JSON)