Dokumentasi API

Referensi endpoint publik untuk mengirim satu pesan WhatsApp lewat perangkat yang tertaut. Untuk mengirim dari panel, masuk ke dashboard.

Kirim satu pesan

POST https://hiwa.my.id/api/v1/messages

Header: Accept: application/json, Content-Type: application/json

Body JSON

{
  "token_device": "YOUR_DEVICE_TOKEN_HERE",
  "to": "6281234567890",
  "message": "Halo dari API HiWA"
}
  • token_device (string, wajib) — Token kirim perangkat dari alur Perangkat (ditampilkan sekali saat perangkat pertama kali terhubung, atau setelah dibuat ulang).
  • to (string, wajib) — Penerima dalam format angka internasional, atau JID lengkap @c.us. Nomor Indonesia boleh diawali 0 (diubah ke 62).
  • message (string, wajib, maks. 4096) — Isi teks biasa.

Respons sukses 200

{
  "ok": true,
  "message_id": "true_6281234567890@c.us_ABC123",
  "quota": {
    "messages_remaining": 99,
    "messages_limit_per_month": 100
  }
}

Objek `quota` berisi `messages_remaining` (turun satu setiap pengiriman sukses) dan `messages_limit_per_month` dari paket layanan akun. Isi ulang bulanan dari proses Anda sendiri; bila perlu bisa memakai `php artisan users:reset-monthly-message-quotas`.

Kuota bulanan di respons API

Respons sukses dan sebagian besar error menyertakan objek `quota` untuk pengguna pemilik perangkat: `messages_remaining` dan `messages_limit_per_month`. Setelah sukses, nilai remaining sudah dikurangi untuk pesan yang baru dikirim.

401 `token_device` tidak valid — hanya `ok` dan `message`, tanpa `quota`. 403 akun tidak aktif — ada `quota` (nol jika perangkat tanpa pemilik). 422 — validasi Laravel memakai `errors` dan `message`; perangkat belum terhubung, nomor tidak valid, kuota bulanan habis, dan banyak kegagalan gateway tetap menyertakan `quota` agar counter di aplikasi Anda bisa diperbarui. 404 / 409 / 5xx — gateway atau server; field `message` menjelaskan bila tersedia dan `quota` sering tetap ada setelah gagal kirim yang mengembalikan reservasi kuota.

Contoh — kuota bulanan habis (422)

{
  "ok": false,
  "message": "Kuota pesan bulanan paket Anda sudah habis. Coba lagi bulan depan atau naikkan paket.",
  "quota": {
    "messages_remaining": 0,
    "messages_limit_per_month": 100
  }
}

Respons error

  • 401 — token_device tidak valid atau tidak dikenal. Respons ini tidak menyertakan field `quota`.
  • 403 — Akun Anda tidak aktif. Hubungi administrator untuk mengaktifkan akun.
  • 422 — Body tidak valid (error validasi Laravel), perangkat tidak terhubung, penerima tidak valid, atau WhatsApp menolak pengiriman. Periksa pesan JSON (dan field errors jika validasi gagal).
  • 422 — Kuota pesan bulanan habis; respons memuat objek quota yang sama dengan messages_remaining bernilai 0.
  • 404 / 409 — Gateway hulu: sesi WhatsApp belum termuat di Node atau belum terhubung. Restart wa-gateway (npm start) setelah pembaruan kode dan pastikan perangkat tampil terhubung di aplikasi.
  • 4xx/5xx lainnya — Kegagalan gateway atau server; field message menjelaskan masalah bila tersedia.

Contoh cURL

curl -X POST "https://hiwa.my.id/api/v1/messages" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d "{\"token_device\":\"YOUR_DEVICE_TOKEN_HERE\",\"to\":\"6281234567890\",\"message\":\"Halo\"}"