Skip to content

Sesi WhatsApp

Panduan lengkap menghubungkan nomor WhatsApp ke gateway, melihat daftar grup, dan mengelola sesi.

Apa itu Sesi?

Sesi adalah koneksi aktif antara sebuah nomor WhatsApp dan gateway. Anggap saja seperti "menghubungkan WhatsApp Web" — gateway bertindak sebagai perangkat kedua yang terhubung ke akun WhatsApp Anda.

Setelah sesi terhubung, gateway bisa:

  • Mengirim pesan atas nama nomor tersebut
  • Menerima pesan masuk dan meneruskannya ke webhook Anda

Pairing — Hubungkan Nomor WhatsApp

Proses menghubungkan nomor ke gateway disebut pairing. Caranya adalah memindai QR code, seperti saat Anda menghubungkan WhatsApp Web di komputer.

Langkah 1 — Mulai Proses Pairing

bash
curl -X POST https://api.example.com/v1/sessions/onboard \
  -H "Authorization: Bearer wag_xxxxxxxxxxxx"

Response:

json
{
  "onboard_id": "onb_9c1f...",
  "status": "pending"
}

Simpan onboard_id — dipakai untuk mengambil QR code di langkah berikutnya.

Langkah 2 — Ambil QR Code

Panggil endpoint ini berulang setiap 2-3 detik sampai status menjadi qr:

bash
curl https://api.example.com/v1/onboard/onb_9c1f... \
  -H "Authorization: Bearer wag_xxxxxxxxxxxx"

Response saat QR siap:

json
{
  "status": "qr",
  "qr": "2@abc123def456..."
}

Field qr berisi string payload yang perlu dirender menjadi gambar QR code. Contoh sederhana dengan JavaScript di browser:

html
<!-- Gunakan library qrcode.js -->
<script src="https://cdn.jsdelivr.net/npm/qrcode/build/qrcode.min.js"></script>
<canvas id="qr"></canvas>
<script>
  QRCode.toCanvas(document.getElementById('qr'), '2@abc123def456...')
</script>

Langkah 3 — Pindai dari WhatsApp

Di ponsel Anda, buka WhatsApp → tiga titik (⋮) → Perangkat Tertaut → Tautkan Perangkat, lalu pindai QR code yang muncul.

QR code berlaku terbatas

QR code kedaluwarsa sekitar 60 detik. Jika Anda terlambat memindai, panggil ulang endpoint poll untuk mendapat QR baru.

Langkah 4 — Tunggu Konfirmasi

Setelah dipindai, status berubah ke paired:

json
{
  "status": "paired",
  "session_id": "6281200000000@s.whatsapp.net"
}

Simpan session_id — ini adalah identitas sesi yang dipakai di semua request pengiriman pesan.

Status Pairing

StatusArtinya
pendingProses baru dimulai, QR belum siap
qrQR code siap dipindai
pairedBerhasil terhubung, session_id tersedia
errorGagal (QR kedaluwarsa, koneksi bermasalah, dll)

List Grup

Setelah sesi terhubung, Anda bisa mengambil daftar semua grup WhatsApp yang diikuti oleh nomor tersebut. Data ini berguna untuk mengetahui JID grup sebelum mengirim pesan ke grup.

Apa itu JID Grup? Setiap grup punya kode unik seperti 120363123456789@g.us. Kode ini yang dipakai sebagai tujuan (to) saat kirim pesan ke grup.

Request

bash
curl "https://api.example.com/v1/sessions/6281200000000%40s.whatsapp.net/groups" \
  -H "Authorization: Bearer wag_xxxxxxxxxxxx"

Kenapa %40?

Karakter @ dalam URL harus ditulis sebagai %40. Jadi 6281200000000@s.whatsapp.net menjadi 6281200000000%40s.whatsapp.net di URL.

Sebagian besar HTTP client (axios, fetch, Guzzle, curl dengan opsi --data-urlencode) melakukan ini otomatis. Jika Anda merakit URL secara manual, pastikan encode karakter @-nya.

Response

json
{
  "groups": [
    {
      "jid": "120363123456789@g.us",
      "name": "Tim Marketing"
    },
    {
      "jid": "120363987654321@g.us",
      "name": "Flash Sale July"
    }
  ]
}

Setiap entri dalam groups:

FieldKeterangan
jidID unik grup — pakai ini sebagai nilai to saat kirim pesan ke grup
nameNama grup sesuai yang terlihat di WhatsApp

Butuh koneksi aktif

Endpoint ini mengambil data langsung dari WhatsApp. Sesi harus dalam keadaan online dan terhubung. Jika sesi offline, akan dikembalikan 409 Conflict.

Contoh — Kirim Pesan ke Grup

Setelah mendapat JID:

bash
curl -X POST https://api.example.com/v1/messages \
  -H "Authorization: Bearer wag_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: grup-promo-juli-001" \
  -d '{
    "session_id": "6281200000000@s.whatsapp.net",
    "to": "120363123456789@g.us",
    "text": "Halo Tim Marketing, update terbaru sudah tersedia!"
  }'

Status Sesi

Sesi bisa dalam beberapa kondisi:

StatusArtinyaTindakan
TerhubungSesi aktif, siap kirim/terima
ReconnectingSedang mencoba terhubung kembaliTunggu, otomatis pulih
OfflineKoneksi terputusCek log, mungkin perlu pairing ulang
Logged OutNomor di-logout dari perangkat tertautLakukan pairing ulang

Gateway secara otomatis mencoba reconnect saat koneksi terputus — Anda tidak perlu melakukan apa-apa selama nomor WhatsApp masih aktif.


Logout Sesi (Segera Hadir)

Fitur untuk melepas koneksi sesi dan menghapusnya dari gateway akan tersedia dalam waktu dekat.

Dokumentasi WhatsApp Gateway