Hantar daripada aplikasi anda sendiri — OTP, kemas kini pesanan, peringatan — melalui REST API yang dibina supaya tamat masa rangkaian di pihak anda tidak boleh mengecaj anda dua kali.
Klien HTTP anda ada had masa. Rangkaian kami juga ada rangkaian. Lambat-laun permintaan anda akan tamat masa selepas kami mencipta mesej tetapi sebelum anda menerima respons — dan logik cubaan semula anda akan menghantarnya sekali lagi. Tanpa perlindungan, itu bermakna caj berganda dan dua SMS kepada setiap penerima, dan kedua-duanya tidak boleh dipulangkan kerana telco sudah mengecaj kedua-duanya.
Setiap penghantaran menerima pengepala Idempotency-Key. Cuba semula permintaan yang sama seberapa banyak yang anda mahu:
panggilan pertama melakukan kerja, setiap panggilan seterusnya memulangkan respons yang sama termasuk ID mesej yang sama, dan tiada
apa-apa yang dicaj dua kali.
curl https://hantarsms.com/api/v1/messages \
-H "X-API-Key: $HANTARSMS_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-48213-reminder" \
-d '{"to":["60123456789"],"text":"Pesanan #48213 anda sedia untuk diambil."}'
Jumlah keseluruhan tidak banyak membantu apabila kempen tidak menjadi. API memulangkan keputusan bagi setiap nombor, dan ia membezakan dua keadaan yang digabungkan oleh ramai penyedia:
| Status | Maksud | Dicaj |
|---|---|---|
delivered | Telco mengesahkan telefon menerimanya | Ya |
undelivered | Diterima telco, tidak sampai ke telefon | Ya |
rejected | Tidak pernah diserahkan — nombor tidak sah atau kandungan disekat | Tidak, dikreditkan semula |
sent | Sudah diserahkan, resit akhir belum tiba | Ya |
Menggabungkan rejected ke dalam undelivered menjadikan invois anda mustahil diimbangkan, kerana satu
dicaj dan satu lagi tidak.
insufficient_balance dan content_blocked, bukan ayat yang perlu dipadankan.Endpoint, parameter, setiap kod ralat dan contoh yang berfungsi dalam PHP, Python, Node.js dan Java ada dalam dokumentasi API (bahasa Inggeris). Ia boleh dibaca tanpa akaun — berbaloi disemak sebelum mendaftar untuk memastikan ia sesuai dengan cara sistem anda dibina. Menggunakan WordPress? Plugin WordPress kami menyambungkan OTP, SMS pesanan WooCommerce dan kempen tanpa kod.
Tiada. API dicaj sama setiap segmen seperti menghantar daripada konsol web, tanpa yuran platform, tanpa jumlah minimum dan tanpa pelan API berasingan. Anda membayar mesej sahaja.
Jika anda menghantar pengepala Idempotency-Key, tiada apa-apa berlaku — cubaan semula memulangkan respons asal dan ID mesej yang sama, dan anda dicaj sekali. Tanpa pengepala itu, cubaan semula dianggap mesej baharu, jadi hantar pengepala tersebut pada setiap permintaan.
Boleh, dan itu salah satu kegunaan utamanya. Mesej dihantar daripada kod pendek 5 digit kongsi, format pengirim yang dijangka pengguna untuk kata laluan sekali guna. Lihat SMS OTP Malaysia untuk kos dan cara menyediakannya.
Tinjau endpoint mesej untuk ringkasan, atau endpoint penerima untuk pecahan setiap nombor. Status dikemas kini daripada telco apabila anda membacanya. Webhook dalam perancangan; tinjauan (polling) ialah kaedah yang disokong buat masa ini.
Dokumentasi ada contoh lengkap dalam curl, PHP, Python, Node.js dan Java. Ia REST API biasa dengan JSON, jadi mana-mana klien HTTP boleh digunakan — tiada SDK untuk dipasang.
Daftar, jana kunci daripada konsol, tuntut kredit percubaan RM1 melalui WhatsApp dan hantar ujian ke telefon anda sendiri.