SIM Swap
SIM Swap (pergantian kartu SIM) adalah proses menghubungkan nomor telepon pengguna dengan kartu SIM baru. Hal ini biasanya terjadi pada situasi berikut: melaporkan kehilangan dan mengganti kartu, meningkatkan kartu SIM, porting nomor ke jaringan lain, mengaktifkan layanan multi-SIM, atau pengguna baru mewarisi nomor yang sebelumnya digunakan oleh orang lain.
Penyerang dapat menggunakan SIM Swap untuk membajak nomor telepon orang lain, mencegat kode verifikasi SMS, dan kemudian mereset kata sandi serta mengambil alih akun. SIM Swap API dapat mendeteksi secara real-time apakah nomor telepon yang ditentukan telah mengalami pergantian kartu SIM, membantu bisnis mengidentifikasi potensi risiko pembajakan SIM pada proses penting seperti verifikasi SMS OTP, dan mengurangi kemungkinan pengambilalihan akun.
Catatan: Saat ini, pengecekan SIM Swap hanya didukung untuk nomor di negara/wilayah berikut: Brasil, Indonesia.
API ini menyediakan dua endpoint independen:
- Retrieve Date: Menanyakan waktu terjadinya SIM Swap terakhir untuk nomor telepon yang ditentukan
- Check: Mendeteksi apakah SIM Swap telah terjadi pada nomor telepon yang ditentukan dalam N jam terakhir
Verifikasi Pemanggilan
Kedua endpoint ini menggunakan metode verifikasi HTTP Basic Auth, dengan menambahkan Authorization di HTTP Header:
Authorization: Basic ${base64_auth_string}
Algoritma pembuatan ${base64_auth_string} adalah: base64(dev_key:dev_secret).
Untuk detail lebih lanjut, silakan merujuk ke Verifikasi Pemanggilan untuk mempelajari cara melakukan autentikasi API.
Retrieve Date
Menanyakan waktu terjadinya SIM Swap terakhir untuk nomor telepon yang ditentukan.
URL Pemanggilan
POST https://otp.api.engagelab.cc/v1/sim-swap/retrieve-date
Contoh Request
Objek request diekspresikan dalam format JSON, sehingga header request harus menyertakan Content-Type: application/json.
Header Request
POST /v1/sim-swap/retrieve-date HTTP/1.1
Content-Type: application/json
Authorization: Basic ${base64_auth_string}
Body Request
{
"phone_number": "+381692223535"
}
Parameter Request
| Parameter | Tipe | Opsi | Keterangan |
|---|---|---|---|
phone_number |
String | Wajib | Nomor telepon target yang akan ditanyakan, disarankan menggunakan format E.164 |
Parameter Response
Respons Sukses
| Field | Tipe | Opsi | Deskripsi |
|---|---|---|---|
request_id |
String | Wajib | ID catatan permintaan saat ini |
latest_sim_change |
String / null | Wajib | Waktu SIM Swap terakhir, format RFC3339; mengembalikan waktu aktivasi pertama jika kartu belum pernah diganti; bernilai null jika data tidak dapat dikembalikan karena batasan regulasi privasi |
Contoh respons sukses:
{
"request_id": "2055136570436075520",
"latest_sim_change": "2026-05-01T15:00:00Z"
}
Respons Gagal
HTTP Status Code adalah 4xx atau 5xx, dan body respons berisi field berikut:
| Field | Tipe | Opsi | Deskripsi |
|---|---|---|---|
code |
int | Wajib | Kode error, lihat penjelasan Kode Error untuk detailnya |
message |
String | Wajib | Detail error |
Contoh respons gagal yang umum:
Contoh parameter error:
{
"code": 3002,
"message": "invalid phone_number"
}
Contoh saldo tidak cukup:
{
"code": 3005,
"message": "balance not enough"
}
Contoh nomor di luar jangkauan layanan:
{
"code": 5101,
"message": "phone number is not in sim swap service coverage"
}
Contoh kegagalan umum:
{
"code": 5100,
"message": "failed to retrieve sim swap date"
}
Check
Mendeteksi apakah SIM Swap telah terjadi pada nomor telepon yang ditentukan dalam N jam terakhir.
URL Pemanggilan
POST https://otp.api.engagelab.cc/v1/sim-swap/check
Contoh Request
Objek request diekspresikan dalam format JSON, dan header request juga harus menyertakan Content-Type: application/json.
Header Request
POST /v1/sim-swap/check HTTP/1.1
Content-Type: application/json
Authorization: Basic ${base64_auth_string}
Body Request
{
"phone_number": "+381692223535",
"max_age": 400
}
Parameter Request
| Parameter | Tipe | Opsi | Keterangan |
|---|---|---|---|
phone_number |
String | Wajib | Nomor telepon target yang akan ditanyakan, disarankan menggunakan format E.164 |
max_age |
Integer | Wajib | Jendela waktu pengecekan, dalam jam, rentang nilai 1 ~ 2400 |
Parameter Response
Respons Sukses
| Field | Tipe | Opsi | Deskripsi |
|---|---|---|---|
request_id |
String | Wajib | ID catatan permintaan saat ini |
swapped |
Boolean | Wajib | Apakah SIM Swap telah terjadi dalam jendela waktu yang ditentukan |
Contoh respons sukses:
{
"request_id": "2055136570293469184",
"swapped": true
}
Respons Gagal
Strukturnya sama dengan endpoint Retrieve Date. Contoh respons gagal khusus:
Parameter error (max_age di luar rentang):
{
"code": 3002,
"message": "max_age must be between 1 and 2400"
}
Kode Error
| Kode Error | HTTP Code | Keterangan |
|---|---|---|
1000 |
500 | Error internal |
2001 |
401 | Autentikasi gagal, tidak menyertakan token yang benar |
2002 |
401 | Autentikasi gagal, token telah kedaluwarsa atau dinonaktifkan |
2004 |
403 | Tidak ada izin untuk memanggil API ini |
3001 |
400 | Format parameter request tidak valid, silakan periksa apakah konten JSON sesuai dengan format parameter |
3002 |
400 | Parameter request salah, silakan periksa apakah parameter request memenuhi persyaratan |
3005 |
400 | Saldo tidak cukup |
5100 |
400 | Kegagalan umum SIM Swap |
5101 |
400 | Nomor ini tidak berada dalam jangkauan layanan SIM Swap, termasuk negara, operator, dan segmen nomor yang saat ini tidak didukung, atau nomor tidak dapat dikenali |










