Dokumentasi API SMS Gateway
REST API sederhana berbasis HTTP untuk kirim SMS single & bulk, cek status delivery, kelola node/SIM, dan menerima webhook — siap dipanggil dari bahasa pemrograman apa pun.
Otentikasi & Base URL
Semua endpoint API memakai header X-API-Key. Kunci API dibuat otomatis untuk setiap tenant dan bisa dilihat di dashboard — simpan seperti layaknya password, jangan pernah menaruhnya di kode sisi klien yang publik. Ganti <BASE_URL_API> pada contoh di halaman ini dengan base URL API yang tertera di dashboard akun Anda.
Kirim SMS — Single
Endpoint utama: POST /api/v1/sms/send dengan Content-Type application/json. Prioritas HIGH untuk OTP/transaksional (didahulukan), LOW untuk campaign/promosi.
Kirim SMS — Bulk / Massal
Untuk blast massal, kirim array messages dalam satu request. Setiap pesan tetap diproses individual: spintax dimutasi berbeda per nomor, nomor masuk blacklist otomatis ditolak, dan antrean dikirim bertahap dengan pacing aman per SIM.
Cek Status Pesan
GET /api/v1/sms/status/:id mengembalikan status antrean (PENDING/QUEUED/SENT/FAILED) dan status delivery report (dr_status) dari operator hingga delivered.
Referensi Endpoint Lain
- GET /api/v1/nodes — daftar node (HP Android) beserta telemetri baterai & status online.
- GET /api/v1/nodes/:id — detail satu node dan SIM terpasang.
- GET /api/v1/sims — daftar SIM: operator, kuota harian, sisa pulsa.
- POST /api/v1/sims/:id/check-balance — trigger cek pulsa USSD untuk SIM.
- POST /api/v1/blacklists — tambah nomor ke blacklist (unsubscribe).
- DELETE /api/v1/blacklists/:phone — hapus nomor dari blacklist.
Webhook SMS Masuk
SMS yang diterima SIM node Anda diforward ke webhook URL yang Anda set di pengaturan tenant. Pengiriman webhook di-retry hingga 3x dengan backoff bila endpoint Anda sedang tidak tersedia — pastikan endpoint membalas 2xx dengan cepat.
Spintax & Personalisasi
Template pesan mendukung spintax nested: {Halo|Hai|Selamat Pagi} dipilih acak berbeda untuk setiap penerima. Pada campaign dashboard, kolom tambahan kontak (nama, kota, dst.) otomatis menjadi variabel {nama}, {kota} untuk personalisasi massal — placeholder tanpa nilai akan dibuang sehingga teks {nama} mentah tidak pernah terkirim.
Catatan Penting
- Nomor tujuan dalam blacklist otomatis ditolak (HTTP 403) — gunakan ini untuk menghormati permintaan berhenti berlangganan.
- Pacing per SIM dibatasi dan diberi jitter agar nomor Anda tetap sehat — jangan mengharapkan burst ribuan SMS per menit dari satu SIM.
- SMS gagal kirim otomatis di-retry hingga 3x ke node/SIM lain sebelum status FAILED, lalu biaya layanannya di-refund penuh ke wallet.