Kirim-OTP-Kustom
Jika Anda ingin membuat kode verifikasi sendiri alih-alih menggunakan platform EngageLab, Anda dapat menggunakan API ini.
API ini khusus untuk mengirim kode verifikasi yang sudah Anda buat sebelumnya dan tidak akan menghasilkan kode secara otomatis. Setelah kode dikirim, Anda tidak perlu lagi memanggil API verifikasi untuk validasi.
Jika Anda ingin kode verifikasi dihasilkan oleh platform EngageLab, silakan gunakan EngageLab OTP Send API.
Endpoint
POST https://otp.api.engagelab.cc/v1/codes
Autentikasi
Menggunakan HTTP Basic Authentication. Tambahkan Authorization pada HTTP Header:
Authorization: Basic ${base64_auth_string}
Algoritma pembuatan base64_auth_string: base64(dev_key:dev_secret)
Contoh Permintaan
Header Permintaan
POST /v1/codes HTTP/1.1
Content-Type: application/json
Authorization: Basic amlndWFuZ2RldjpkZXZfc2VjcmV0
Body Permintaan
{
"to": "+8618701235678",
"code": "398210",
"template":{
"id":"test-template-1",
"language": "default",
"params": {
"key1": "value1",
"key2": "value2"
}
}
}
Parameter Permintaan
Objek permintaan dalam format JSON, pastikan header permintaan menyertakan Content-Type: application/json.
| Parameter | Tipe | Wajib/Opsional | Deskripsi |
|---|---|---|---|
| to | String | Wajib | Target, bisa nomor ponsel atau email, contoh: +8613800138000, support@engagelab.com |
| code | String | Wajib | Kode verifikasi yang Anda tentukan sendiri |
| template | JSON Object | Wajib | Informasi template, dengan sub-parameter di bawah ini |
| |_ id | String | Wajib | ID Template |
| |_ language | String | Opsional | Bahasa template, pilihan: default (Bahasa default) zh_CN (Mandarin Sederhana) zh_HK (Mandarin Tradisional) en (Inggris) ja (Jepang) th (Thailand) es (Spanyol) Jika tidak diisi, akan menggunakan "default". |
| |_ params | JSON Object | Opsional | Nilai variabel kustom pada template. Jika Anda menyesuaikan variabel saat membuat template, masukkan nilainya di sini. Jika tidak diisi, kunci variabel akan dikirimkan apa adanya, misal: {{var}} |
Catatan tentang params
- Untuk template dengan field seperti from_id, jika param_vars tidak diisi, pesan akan menggunakan from_id yang diatur pada template.
- Jika param_vars diisi, misal
param_vars:{"from_id":"12345"}, maka saat pengiriman, from_id pada template akan diganti dengan 12345. - Untuk variabel kustom pada isi template, tetapkan nilainya melalui param_vars, misal untuk template
Hi {{name}}, kode verifikasi Anda adalah {{code}}, isiparam_vars:{"name":"Bob"}.
Parameter Respons
Respons Berhasil
| Field | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| message_id | String | Ya | ID pesan, identitas unik pesan |
| send_channel | String | Ya | Saluran pengiriman saat ini: whatsapp/sms/email/voice |
{
"message_id": "1725407449772531712",
"send_channel": "sms"
}
Perlu diperhatikan, nilai send_channel yang dikembalikan bukan saluran akhir ke pengguna, melainkan saluran pada tahap saat ini. Misal, jika strategi template diatur fallback WhatsApp ke SMS, API awalnya mengembalikan whatsapp, dan jika gagal, sistem akan mengirim ulang via SMS.
Respons Gagal
Kode status HTTP 4xx atau 5xx, body respons berisi field berikut:
| Field | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| code | int | Ya | Kode error, lihat Kode Error untuk detailnya |
| message | String | Ya | Detail error |
{
"code": 5001,
"message": "gagal mengirim sms"
}
Kode Error
| Kode Error | HTTP Code | Deskripsi |
|---|---|---|
| 1000 | 500 | Kesalahan internal |
| 2001 | 401 | Autentikasi gagal, token salah atau tidak ada |
| 2002 | 401 | Autentikasi gagal, token kedaluwarsa atau dinonaktifkan |
| 2004 | 403 | Tidak memiliki izin untuk memanggil API ini |
| 3001 | 400 | Format parameter permintaan tidak valid, cek format JSON |
| 3002 | 400 | Parameter permintaan salah, cek kembali kebutuhan |
| 3003 | 400 | Parameter salah, validasi bisnis gagal, cek pesan error |
| 3004 | 400 | Melebihi batas frekuensi, tidak bisa kirim ulang ke template & user yang sama dalam masa berlaku OTP |
| 4001 | 400 | Resource tidak ditemukan, misal template tidak ada |
| 5001 | 400 | Pengiriman kode verifikasi gagal, cek field message untuk detail |










