Panduan Jalinara

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
  1. 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."}'

  2. Untuk beberapa nomor sekaligus, isi target dengan daftar. Tambahkan header Idempotency-Key agar 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."}'

  3. Baca responsnya, lalu simpan nilai id untuk 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.

  1. Kirim POST /validate dengan target berisi nomor yang dicek:

    curl -X POST https://app.jalinara.id/validate -H "Authorization: Bearer TOKEN_ANDA" -H "Content-Type: application/json" -d '{"target": "6280000000110"}'

  2. Baca results. Setiap nomor punya number dan exists. Nilai true berarti 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
  1. Panggil status pesan, dengan ID_PESAN diganti nilai id dari respons POST /send:

    curl https://app.jalinara.id/api/gateway/messages/ID_PESAN -H "Authorization: Bearer TOKEN_ANDA"

  2. Baca nilai status di respons, lalu cocokkan dengan tabel di atas.

  3. 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.

    Log Pesan berisi satu pesan keluar ke nomor tujuan yang dikirim lewat API 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.

  1. Kirim POST /api/gateway/schedules dengan header Authorization: Bearer TOKEN_ANDA. Contoh pengingat pembayaran sekali kirim (ganti send_at dengan 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"}'

  2. Di sidebar, klik Kirim Pesan ①, lalu klik Pengingat 1 Nomor ②.

    Sidebar dengan kelompok Kirim Pesan terbuka dan menu Pengingat 1 Nomor Perbesar
  3. Cari jadwal Anda di tabel. Pastikan status Antri ①, jam di kolom Kirim pada ② sudah benar, dan kolom Ulang ③ sesuai recurrence.

    Tabel Pengingat 1 Nomor berisi satu jadwal berstatus Antri dengan kolom Ulang Sekali Perbesar
  4. 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.

  1. Buat satu kunci unik untuk setiap pesan bisnis, misalnya gabungan nomor pesanan dan jenis pesan: pesanan-NARA-0925-001.

  2. Sertakan kunci itu di header Idempotency-Key pada POST /send, seperti contoh dua nomor di atas.

  3. 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.