Integrasi & API
Cara Mengirim dan Menjadwalkan Pesan lewat API
Contoh permintaan API untuk mengirim teks, gambar, atau lokasi, memeriksa status, menjadwalkan kiriman, dan mencegah pesan terkirim dua kali.
Lewat API, website atau aplikasi Anda bisa mengirim WhatsApp ke satu atau banyak nomor lewat Jalinara. Halaman ini berisi contoh permintaan dan arti responsnya.
Siapkan dulu API token dan satu perangkat berstatus Terhubung. Contoh memakai alamat dasar https://app.jalinara.id, TOKEN_ANDA sebagai pengganti token asli, dan nomor fiktif. Belum pernah mencoba? Mulai dari Cara Menguji API untuk Pertama Kali.
Cara mengirim pesan lewat API
Pesan dikirim dengan POST /send. Isi permintaannya (format JSON):
| Kolom | Isi |
|---|---|
target |
Wajib. Satu nomor, beberapa nomor dipisah koma, atau daftar (maks 200) |
message (atau text) |
Isi pesan. Untuk media, menjadi caption |
type |
text (bawaan), image, video, audio, document, atau location |
url atau base64 |
Alamat atau isi file media. Dokumen juga perlu filename |
latitude, longitude |
Koordinat, untuk lokasi |
device |
ID perangkat. Kosong berarti memakai perangkat yang tersambung |
-
Kirim permintaan dengan header
Authorization: Bearer TOKEN_ANDA. Contoh gambar produk dengan caption:curl -X POST https://app.jalinara.id/send -H "Authorization: Bearer TOKEN_ANDA" -H "Content-Type: application/json" -d '{"target": "6280000000110", "type": "image", "url": "https://contoh-tokonara.id/foto/kopi-arabika.jpg", "message": "Kopi Arabika Nara 250 g Rp65.000, siap kirim."}' -
Untuk beberapa nomor sekaligus, isi
targetdengan daftar. Tambahkan headerIdempotency-Keyagar aman diulang (lihat bagian terakhir):curl -X POST https://app.jalinara.id/send -H "Authorization: Bearer TOKEN_ANDA" -H "Content-Type: application/json" -H "Idempotency-Key: pesanan-NARA-0925-001" -d '{"target": ["6280000000110", "6280000000120"], "message": "Info Toko Nara: pesanan Anda sudah kami proses."}' -
Baca responsnya, lalu simpan nilai
iduntuk memeriksa status pesan.{"status": true, "detail": "message queued", "id": ["msg_xxx"], "queued": 1, "failed": 0, "total": 1}
Cara mengecek nomor terdaftar WhatsApp
Cek dulu nomor tujuan agar pesan tidak terbuang ke nomor tanpa WhatsApp. Permintaan ini tidak memakai kuota pesan.
-
Kirim
POST /validatedengantargetberisi nomor yang dicek:curl -X POST https://app.jalinara.id/validate -H "Authorization: Bearer TOKEN_ANDA" -H "Content-Type: application/json" -d '{"target": "6280000000110"}' -
Baca
results. Setiap nomor punyanumberdanexists. Nilaitrueberarti nomor terdaftar di WhatsApp.
Cara memeriksa status pesan
Respons queued hanya berarti pesan masuk antrean, bukan sudah sampai. Arti nilai status:
| Nilai di API | Label di Log Pesan | Artinya |
|---|---|---|
queued |
Antri | Masih di antrean |
sent |
Terkirim | Sudah keluar dari nomor bisnis |
delivered |
Sampai | Sudah sampai di HP penerima |
read |
Dibaca | Sudah dibaca penerima |
failed |
Gagal | Gagal terkirim. Baca isian error |
-
Panggil status pesan, dengan
ID_PESANdiganti nilaiiddari responsPOST /send:curl https://app.jalinara.id/api/gateway/messages/ID_PESAN -H "Authorization: Bearer TOKEN_ANDA" -
Baca nilai
statusdi respons, lalu cocokkan dengan tabel di atas. -
Untuk memantau banyak pesan, panggil
GET /api/gateway/messages(daftar pesan beserta statusnya). Bisa juga buka Laporan › Log Pesan, ketik nomor tujuan, lalu cari baris ① berarah Keluar.
Perbesar
Cara menjadwalkan pesan lewat API
Jadwal yang dibuat lewat API ikut tampil di menu Pengingat 1 Nomor. Selain target dan message, isi send_at (waktu kirim) dan recurrence (pengulangan: none, daily, weekly, atau monthly). Tulis zona waktu di send_at, misalnya +07:00 untuk WIB, supaya jam tidak bergeser. Waktu kirim harus di masa depan. Untuk bulanan, pilih tanggal 1–28.
-
Kirim
POST /api/gateway/schedulesdengan headerAuthorization: Bearer TOKEN_ANDA. Contoh pengingat pembayaran sekali kirim (gantisend_atdengan waktu yang masih di masa depan):curl -X POST https://app.jalinara.id/api/gateway/schedules -H "Authorization: Bearer TOKEN_ANDA" -H "Content-Type: application/json" -d '{"target": "6280000000110", "message": "Halo Kak, pengingat: pembayaran pesanan Toko Nara sebesar Rp160.000 segera jatuh tempo. Abaikan bila sudah membayar.", "send_at": "2026-11-05T09:00:00+07:00", "recurrence": "none"}' -
Di sidebar, klik Kirim Pesan ①, lalu klik Pengingat 1 Nomor ②.
Perbesar -
Cari jadwal Anda di tabel. Pastikan status Antri ①, jam di kolom Kirim pada ② sudah benar, dan kolom Ulang ③ sesuai
recurrence.
Perbesar -
Batalkan jadwal bila perlu dengan
DELETE /api/gateway/schedules/ID_JADWAL. ID jadwal ada di respons saat jadwal dibuat.curl -X DELETE https://app.jalinara.id/api/gateway/schedules/ID_JADWAL -H "Authorization: Bearer TOKEN_ANDA"
Hanya jadwal yang masih Antri yang bisa dibatalkan. Daftar jadwal ada di GET /api/gateway/schedules.
Cara mencegah pesan terkirim dua kali
Bila koneksi putus sebelum respons diterima, aplikasi tidak tahu apakah pesan sudah masuk antrean. Mengirim ulang begitu saja bisa membuat pelanggan menerima pesan dobel. Solusinya: kirim ulang dengan Idempotency-Key yang sama.
-
Buat satu kunci unik untuk setiap pesan bisnis, misalnya gabungan nomor pesanan dan jenis pesan:
pesanan-NARA-0925-001. -
Sertakan kunci itu di header
Idempotency-KeypadaPOST /send, seperti contoh dua nomor di atas. -
Bila respons tidak datang, kirim ulang permintaan yang sama persis dengan kunci yang sama.
| Keadaan saat dikirim ulang | Hasilnya |
|---|---|
| Permintaan pertama sudah selesai | Respons yang sama dikembalikan, tanpa mengirim pesan lagi |
| Kunci sama, isi permintaan berbeda | Ditolak dengan kode 409 |
| Permintaan pertama masih diproses | Kode 409. Tunggu sebentar, lalu ulangi |
Ulangi hanya untuk kode 429, kode 409 "sedang diproses", atau gangguan jaringan, selalu dengan kunci yang sama. Jangan mengulang kode 400, 401, 402, 403, atau 404 sebelum penyebabnya diperbaiki (arti tiap kode).
Belum ketemu jawabannya? Buka menu Bantuan di dashboard Jalinara dan kirim tiket ke tim kami.