Kurir-WA
BerandaDokumentasi API
PENGIRIM PESAN · WHATSAPP

Pesan yang tepat,
dari akun yang tepat.

Hubungkan aplikasi Anda melalui API untuk mengirim pesan ke nomor tujuan. Atur akun WhatsApp, antrean, jadwal, dan status pengiriman dari satu dashboard.

Pelajari API →
01 Token per pengguna02 Paket pribadi & bersama03 Riwayat terpisah
✦   ANTREAN PESAN ● ● ●
✉
Pemberitahuan terjadwalHalo, janji temu Anda besok pukul 09.00.
✓
Token API pengguna→WhatsApp sesuai paket
TERJADWAL09:00 WIB
SATU ALUR, BANYAK AKUN

Pengiriman pesan yang tertata.

Mulai dari satu nomor hingga banyak penerima yang ditentukan aplikasi Anda.

01 /

Data per pengguna

Antrean dan riwayat tersimpan pada akun pemiliknya. Daftar kontak di dashboard bersifat opsional.

02 /

Pengirim sesuai paket

Paket Pribadi memakai WhatsApp pengguna. Paket Bersama memakai nomor bersama yang dipilih Admin atau Super Admin.

03 /

Otomatis lewat API

Kirim nomor tujuan dan isi pesan dengan Bearer token pengguna. Pantau hasilnya dengan ID pesan.

SIAP MENGHUBUNGKAN SISTEM ANDA?

Satu permintaan API untuk satu pesan.

Token menentukan pemilik pesan dan akun WhatsApp pengirim secara otomatis.

Lihat contoh permintaan ↗
PANDUAN PENGEMBANG

Dokumentasi API

Aplikasi eksternal menentukan nomor tujuan, isi pesan, dan jadwal; token API menentukan akun WhatsApp pengirim. Data bisnis tetap berada di aplikasi eksternal.

MulaiAkun pengirimKirim pesanPython, PHP & Node.jsLampiran gambarMedia, lokasi & grupKirim massalKampanye AdminCek statusRespons & error
01 / MULAI

Siapkan token API

Masuk sebagai pengguna yang akan mengirim, lalu buka Akun Saya → Token API saya dan buat token baru. Simpan saat ditampilkan karena token hanya muncul sekali. Jangan menaruh token pada halaman web publik.

Base URL aplikasiAlamat contoh mengikuti lokasi halaman ini. Untuk akses dari server lain, gunakan alamat HTTPS yang dapat dijangkau aplikasi pemanggil.

Semua permintaan memakai Authorization: Bearer TOKEN_API_PENGGUNA. Body pengiriman memakai JSON. Aplikasi eksternal boleh langsung mengirim nomor to dan isi message tanpa menyimpan kontak di dashboard ini.

02 / PENGIRIM

Token menentukan akun pengirim

Setiap token terikat ke satu pengguna. Paket Pribadi mengirim dari WhatsApp pengguna itu. Paket Bersama mengirim dari nomor bersama yang dipilih Admin atau Super Admin. Kuota dan riwayat tetap mengikuti pemilik token.

Bearer token→Pengguna & paket→WhatsApp pengirim

Periksa identitas dan paket token:

GET /api/v1/account

Respons menampilkan username, senderMode, senderName, status langganan, dan izin API. Pengiriman perlu izin role Kirim pesan serta paket aktif dengan akses API.

API pesan biasa selalu memakai akun pemilik token. Admin memakai endpoint kampanye terpisah untuk mengirim ke seluruh kontak pelanggan yang dipilih.

03 / KIRIM

Kirim satu pesan

Isi to dengan nomor internasional, misalnya 628123456789, dan message dengan teks hingga 4.096 karakter. scheduledAt opsional; tanpa itu pesan masuk antrean sekarang. Untuk menjadwalkan, kirim waktu ISO 8601 dengan zona, seperti YYYY-MM-DDTHH:mm:ss+07:00.

cURL · POST /api/v1/messages
PowerShell

Gunakan Idempotency-Key unik untuk setiap pesan baru dan pakai lagi kunci yang sama saat mengulang permintaan tersebut. Nomor akan dinormalkan ke format internasional.

03A / CONTOH KODE

Gunakan bahasa aplikasi Anda

Contoh berikut mengirim satu pesan melalui aplikasi sisi server. Simpan token pengguna pada variabel lingkungan KURIR_WA_TOKEN. Ganti nomor, isi pesan, dan Idempotency-Key untuk setiap pesan baru; gunakan kunci yang sama ketika mengulang permintaan yang hasil HTTP-nya belum jelas. Respons 202 hanya berarti pesan sudah masuk antrean.

Python 3 · pustaka standar
PHP 8 · ekstensi cURL
Node.js 22+ · fetch bawaan

Untuk pengiriman massal, gunakan pola request yang sama ke POST /api/v1/messages/bulk dan ubah to menjadi array nomor. Untuk gambar, unggah berkas biner sekali ke POST /api/v1/images, lalu sertakan imageId hasil unggahan pada body pesan. Pantau id dari respons dengan GET /api/v1/messages/:id.

03B / GAMBAR

Kirim gambar dengan caption

Unggah JPG atau PNG maksimal 5 MB sebagai body biner ke POST /api/v1/images dengan Bearer token pengguna. Respons berisi imageId. Sertakan ID itu bersama message saat memanggil endpoint pesan biasa atau massal. Untuk 10 penerima, unggah sekali dan pakai ID yang sama: server menyimpan satu file. HTML tidak didukung; editor dashboard mengubah tebal, miring, dan coret menjadi format teks WhatsApp.

Unggah gambar + kirim massal

Admin yang mengirim kampanye pelanggan mengunggah ke POST /api/v1/customers/:id/images, lalu mengisi imageId pada POST /api/v1/campaigns. ID gambar hanya dapat dipakai oleh akun pemiliknya. File dibersihkan otomatis tujuh hari setelah seluruh job selesai; pesan yang masih antre tetap menyimpan file.

03C / JENIS PESAN

Media, lokasi, dan grup

Paket menentukan izin allowImage, allowMedia, allowLocation, dan allowGroups. Periksa melalui GET /api/v1/account. Teks biasa selalu tersedia bagi langganan aktif.

Media: unggah file biner sekali ke POST /api/v1/media dengan header Content-Type dan X-File-Name (nama file URL encoded). Format: PDF, DOCX, XLSX, MP3, OGG, WAV, MP4, atau WebM; maksimal 20 MB. Respons memberi mediaId. Kirim dengan {"messageType":"media","mediaId":"...","to":"628...","message":"Keterangan opsional"}. File yang sama dapat dipakai untuk beberapa tujuan dan dibersihkan tujuh hari setelah seluruh pengirimannya selesai.

Unggah PDF

Lokasi: gunakan messageType: "location" dan location berisi latitude, longitude, nama, dan alamat. Grup: lihat daftar grup nomor pengirim melalui GET /api/v1/groups, lalu gunakan recipientType: "group" dan to berupa ID grup. Endpoint bulk menerima array ID grup. Pada paket Bersama, Admin perlu memilih grup pelanggan melalui Langganan → Atur grup; pelanggan hanya melihat dan memakai grup yang dipetakan untuknya.

Contoh lokasi dan grup

List dengan pilihan yang dapat diketuk belum tersedia lewat integrasi WhatsApp Web ini. Pengiriman messageType: "list" ditolak; fitur itu memerlukan integrasi WhatsApp Business Platform tersendiri. Sequence Message tidak tersedia sesuai pengaturan aplikasi ini.

04 / MASSAL

Kirim ke banyak kontak

Isi to dengan array nomor, atau "all" untuk seluruh kontak milik pengguna token. Setiap penerima mendapat job dan status sendiri.

POST /api/v1/messages/bulk

Pengiriman diproses berurutan per akun WhatsApp. Paket dapat membatasi jumlah pesan per bulan.

05 / KAMPANYE ADMIN

Kirim ke seluruh kontak pelanggan

Token Admin atau Super Admin dengan izin kampanye dapat mengirim ke satu pelanggan yang dipilih melalui POST /api/v1/campaigns. Isi customerId dengan ID pelanggan dan message dengan isi pesan; scheduledAt opsional. Paket, kuota, dan akun WhatsApp pelanggan menentukan pengiriman. Respons memberi batchId dan count.

Dapatkan ID pelanggan melalui GET /api/v1/customers?limit=100&offset=0:

GET /api/v1/customers
POST /api/v1/campaigns

Pesan mendukung {nama_kontak}, {tanggal}, dan {jam}. Anda juga dapat mengirim templateId sebagai pengganti message. Pratinjau dengan POST /api/v1/customers/:id/preview; body berisi message atau templateId, serta scheduledAt opsional. Daftar kampanye tersedia di GET /api/v1/customers/:id/campaign-batches. Detail batch di GET /api/v1/customers/:id/batches/:batchId. Untuk menjeda, melanjutkan, membatalkan sisa antrean, atau mencoba ulang pesan gagal, gunakan POST /api/v1/customers/:id/batches/:batchId/:action dengan action pause, resume, cancel, atau retry. Setiap job mencatat requestedByUserId.

06 / PEMANTAUAN

Cek status pesan

Respons kirim memberi id dan status awal queued. HTTP 202 berarti pesan diterima ke antrean, belum berarti terkirim.

GET /api/v1/messages/:id

Untuk bulk akun sendiri, pakai GET /api/v1/batches/:batchId?limit=100&offset=0. Untuk kampanye pelanggan, pakai endpoint batch pelanggan. Status akhir: sent, failed, canceled, atau unknown. Status unknown berarti hasil kirim belum dapat dipastikan; periksa chat WhatsApp sebelum mengirim ulang. Jika pesan sudah terkirim, konfirmasi melalui tombol di Riwayat.

07 / RESPONS

Respons dan error

KodeArti
202Pesan masuk antrean.
200Retry dengan Idempotency-Key yang sama mengembalikan hasil awal.
400Nomor, pesan, atau jadwal tidak valid.
401Token API tidak valid.
403Role atau paket tidak mengizinkan, atau langganan tidak aktif.
409Kunci dipakai untuk isi berbeda, atau pengirim tidak aktif.
429Batas pesan bulanan tercapai.

Contoh respons sukses:

JSON · HTTP 202
Kurir-WAKelola pesan, kontak, dan pengirim dalam satu tempat.

PUSAT PESAN

Kurir-WA

Masuk untuk mengatur kontak, pesan, dan koneksi WhatsApp Web.

← Kembali ke beranda
Kurir-WA
WORKSPACE
BerandaDokumentasi API
Memeriksa koneksi…
DASHBOARD

Ringkasan

PUSAT PESAN

Semua pesan, dalam satu tempat.

Hubungkan akun WhatsApp, atur pengiriman, lalu pantau statusnya.

✓   Pesan terkirim
◷   Besok, 09.00
✦
Total kontak0tersimpan
Menunggu kirim0dalam antrean
Terkirim0pesan berhasil
Perlu perhatian0gagal / tidak pasti

Koneksi WhatsApp

Status akun yang digunakan untuk mengirim pesan.

Belum ditautkan

Kode QR untuk menghubungkan WhatsApp

Buka WhatsApp di ponsel → Perangkat tertaut → Tautkan perangkat, lalu pindai kode ini.

Masukkan kode ini di WhatsApp ponsel melalui Perangkat tertaut → Tautkan perangkat → Tautkan dengan nomor telepon.

Tekan Tautkan akun WhatsApp untuk memulai.

Aktivitas terbaru

Lima pesan terakhir dari dashboard dan API.

Buat pesan

Kirim sekarang atau atur waktu kirim sesuai kebutuhan.

Jenis pesan

List interaktif yang dapat diketuk belum tersedia pada koneksi WhatsApp Web ini.

Gunakan kode negara tanpa tanda +. Contoh: 628123456789.

Pilih kontak yang akan menerima pesan yang sama.

0 kontak dipilih

Grup berasal dari nomor WhatsApp pengirim paket Anda.

0/4096
PDF, DOCX, XLSX, MP3, OGG, WAV, MP4, WebM.
✧

Pesan yang jelas

Pastikan isi dan nomor tujuan sesuai data dari sistem Anda.

Pesan untuk beberapa nomor masuk antrean masing-masing. Anda dapat memantau status tiap nomor di Riwayat.

Kontak saya

Kontak di sini hanya milik akun yang sedang login.

Tambah kontak

Kontak tersimpan

0 kontak

Kampanye pelanggan

Pilih pelanggan tujuan. Paketnya menentukan WhatsApp pengirim dan kuota.

Kirim ke seluruh kontak pelanggan

Variabel: {nama_kontak}, {tanggal}, {jam}. Tanggal dan jam memakai WIB.

Aktivitas pelanggan

Pesan terbaru

Template pesan

Pengingat berulang

Memakai pesan atau template yang dipilih pada formulir kampanye di atas. Kontak dibaca ulang pada setiap jadwal.

Tambah kontak pelanggan

Kontak pelanggan

0 kontak

Riwayat pesan

Status pengiriman pesan terbaru.

Geser tabel ke samping untuk melihat semua kolom →

AkunPengirimTujuanPesanJadwalStatus
Halaman 1

Akun saya

Edit profil

Nomor ini dipakai bila API mengirim pesan tanpa nomor tujuan.

Ganti kata sandi login saya

Token API login saya

Token lama langsung tidak berlaku setelah diganti. Simpan token baru saat ditampilkan.

Pengaturan pengguna

Super Admin dapat membuat Admin dan Pelanggan. Admin hanya dapat membuat dan mengelola Pelanggan.

Tambah pengguna

Pilih Belum berlangganan jika paket akan ditetapkan nanti.

Pengguna

Edit pengguna

Langganan & pengirim

Admin mengaktifkan paket secara manual. Role menentukan izin menu; paket menentukan sumber WhatsApp, akses API, dan batas pesan.

Pengirim default

Dipakai untuk pelanggan Bersama baru. Pengirim yang sudah ditetapkan untuk pelanggan lain tidak berubah.

Tambah paket

Izin fitur pengiriman untuk pelanggan dalam paket ini:

Nomor WhatsApp bersama

Tambah nomor, lalu tekan Tautkan akun untuk menampilkan QR. Setiap nomor mempunyai sesi WhatsApp sendiri.

QR WhatsApp pengirim terpilih

Di ponsel nomor ini, buka WhatsApp → Perangkat tertaut → Tautkan perangkat.

Masukkan kode ini pada WhatsApp ponsel nomor terpilih.

Daftar paket

Langganan pengguna

Uji beban & biaya

Ukur lalu lintas aplikasi dan pengiriman WhatsApp dari nomor yang terhubung.

Uji HTTP sintetis

Permintaan dari browser ini melewati Nginx dan autentikasi aplikasi. Tidak mengirim WhatsApp. Maksimal 2.000 permintaan per uji.

Uji kirim WhatsApp nyata

Kirim pesan penanda uji ke nomor tujuan. Satu pengirim mengirim berurutan; beberapa pengirim bekerja bersamaan. Antrean biasa pada nomor terpilih menunggu sampai uji selesai.

Maksimal 100 pesan per uji. Hentikan akan mencegah pesan berikutnya; pesan yang sedang dikirim tetap dapat selesai.

Hasil pengujian

Jalankan salah satu skenario untuk melihat hasilnya.

Waktu pengiriman nyata · 7 hari

Waktu dihitung dari jadwal sampai WhatsApp mengakui pesan. Konfirmasi tiba di perangkat tujuan hanya diukur pada uji WhatsApp jika tanda terimanya tersedia.

Perkiraan biaya

Isi biaya dari tagihan Anda. Estimasi membagi biaya server menurut volume bulanan dan menambahkan tarif trafik keluar. Trafik HTTP sintetis berbeda dari trafik WhatsApp terenkripsi.

Riwayat uji

Role & izin

Pilih akses menu dan aksi untuk setiap role.

Daftar role

Tambah role

Kelola menu & aksi

Menu tambahan muncul di navigasi setelah izin Lihat diberikan. Aksi tambahan dapat dipilih di pengaturan role.

Tambah menu

Tambah jenis aksi

Aksi baru menjadi izin role. Agar melakukan pekerjaan tertentu, kode fitur atau endpoint harus memakai izin ini.

Daftar menu dan aksi

Halaman menu khusus

Token API baru

Simpan sekarang. Token ini hanya ditampilkan sekali.