SNSOTP OTP API
API REST untuk verifikasi SMS. Pesan nomor untuk salah satu dari 182 layanan di salah satu dari 154 negara, baca kode satu kali dari pesanan, dan dapatkan kembali harga penuh jika tidak ada kode yang tiba dalam 20 menit.
Setiap endpoint menerima parameter sebagai parameter query (GET) atau sebagai field form atau JSON (POST). Jawaban berupa JSON; uang dalam string USD dengan dua desimal dan waktu dalam format ISO 8601 UTC.
https://snsotp.com/api/v1
Kunci API Anda dari konsol, dikirim sebagai Authorization: Bearer sok_...
Autentikasi
Buat kunci di halaman API di konsol. Kunci dimulai dengan sok_ dan hanya ditampilkan sekali, jadi simpan di variabel lingkungan. Mengganti kunci akan menghentikan kunci lama segera. Panggilan ke /services, /countries, dan /prices bekerja tanpa kunci.
Authorization: Bearer sok_your_key_here
Kunci juga dapat dikirim sebagai parameter query atau field form key, yang membantu alat yang tidak dapat mengatur header.
Mulai cepat
Pesan nomor, berikan ke aplikasi, lalu polling pesanan hingga kode tersedia. Alur yang sama dalam empat bahasa:
# 1. Order a number for whatsapp in US
curl -X POST https://snsotp.com/api/v1/orders \
-H "Authorization: Bearer $SNSOTP_KEY" \
-d service=whatsapp -d country=us
# 2. Read the code (poll every 3 to 5 seconds)
curl https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB \
-H "Authorization: Bearer $SNSOTP_KEY"GET/services
Setiap layanan dengan kode dan harga terendah · tidak ada kunci
Setiap layanan yang dapat dipesan, dengan kodenya (gunakan sebagai service dalam panggilan lain), kategorinya, dan harga terendah di seluruh negara. Tidak perlu kunci.
curl https://snsotp.com/api/v1/services
{
"services": [
{ "code": "whatsapp", "name": "WhatsApp", "category": "social", "from": "0.09" },
{ "code": "telegram", "name": "Telegram", "category": "social", "from": "0.03" }
]
}GET/countries
Setiap negara dengan kode dan kode dial · tidak ada kunci
Setiap negara dengan kodenya (ISO 3166 alpha-2 dalam huruf kecil, gunakan sebagai country) dan kode dialnya. Tidak perlu kunci.
curl https://snsotp.com/api/v1/countries
{
"countries": [
{ "code": "us", "name": "United States", "dial_code": "1" },
{ "code": "gb", "name": "United Kingdom", "dial_code": "44" }
]
}GET/prices
Harga untuk layanan, negara, atau keduanya · tidak ada kunci
Harga per pesanan untuk satu layanan di setiap negara, satu negara untuk setiap layanan, atau satu pasangan. Kirim setidaknya satu filter. Tidak perlu kunci.
Parameter
servicestring
Kode layanan, misalnya whatsapp
countrystring
Kode negara, misalnya us
curl "https://snsotp.com/api/v1/prices?service=whatsapp&country=us"
{
"prices": [
{ "service": "whatsapp", "country": "us", "price": "0.93" }
]
}GET/balance
Saldo Anda dalam USD · kunci diperlukan
Saldo Anda dalam USD.
curl https://snsotp.com/api/v1/balance \ -H "Authorization: Bearer $SNSOTP_KEY"
{
"balance": "42.50",
"currency": "USD"
}POST/orders
Pesan nomor untuk layanan dan negara · kunci diperlukan
Memesan nomor dan membebankan harganya. Jawaban berisi nomor lengkap (phone) dan tanpa kode dial (number). Pesanan tetap terbuka selama 20 menit; jika tidak ada kode yang tiba dalam waktu tersebut, harga akan kembali ke saldo Anda secara otomatis. Jawaban status 201.
Parameter
servicestringdiperlukan
Kode layanan dari GET /services
countrystringdiperlukan
Kode negara dari GET /countries
curl -X POST https://snsotp.com/api/v1/orders \ -H "Authorization: Bearer $SNSOTP_KEY" \ -d service=whatsapp -d country=us
{
"order": {
"id": "OT-7K2M9QX4PB",
"service": "whatsapp",
"country": "us",
"phone": "+13475550182",
"number": "3475550182",
"dial_code": "1",
"price": "0.93",
"status": "waiting",
"code": null,
"sms": null,
"codes": [],
"expires_at": "2026-11-03T12:20:00.000Z"
},
"window_minutes": 20
}GET/orders/{id}
Status, kode, dan teks SMS dari satu pesanan · kunci diperlukan
Satu pesanan dengan statusnya, kode terbaru, teks SMS terbaru, dan setiap kode yang diterima sejauh ini. Polling setiap 3 hingga 5 detik selama statusnya waiting.
Parameter
idpathdiperlukan
ID pesanan dari POST /orders
curl https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB \ -H "Authorization: Bearer $SNSOTP_KEY"
{
"order": {
"id": "OT-7K2M9QX4PB",
"service": "whatsapp",
"country": "us",
"phone": "+13475550182",
"number": "3475550182",
"price": "0.93",
"status": "received",
"code": "284913",
"sms": "Your WhatsApp code is 284913",
"expires_at": "2026-11-03T12:20:00.000Z"
}
}GET/orders
Pesanan terbuka Anda (atau semua dengan status=all) · kunci diperlukan
Pesanan terbuka Anda, yang terbaru pertama. Tambahkan status=all untuk pesanan terbaru dalam setiap status.
Parameter
statusstring
open (default) atau all
limitnumber
1 hingga 100, default 50
curl "https://snsotp.com/api/v1/orders?status=open" \ -H "Authorization: Bearer $SNSOTP_KEY"
{
"orders": [
{ "id": "OT-7K2M9QX4PB", "service": "whatsapp", "status": "received", "code": "284913" }
]
}POST/orders/{id}/resend
Kode lain di nomor yang sama · kunci diperlukan
Meminta kode lain pada nomor yang sama setelah kode pertama, dalam jendela waktu, tanpa biaya tambahan. Kemudian picu SMS baru di aplikasi; waiting_for_resend adalah true hingga SMS tiba.
Parameter
idpathdiperlukan
ID pesanan
curl -X POST https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB/resend \ -H "Authorization: Bearer $SNSOTP_KEY"
{
"order": { "id": "OT-7K2M9QX4PB", "status": "received", "waiting_for_resend": true }
}POST/orders/{id}/finish
Tutup pesanan setelah menggunakan kode · kunci diperlukan
Menutup pesanan yang telah menerima kode setelah Anda menggunakannya. Menyelesaikan bersifat opsional: pesanan terbuka akan ditutup sendiri saat jendela waktu berakhir.
Parameter
idpathdiperlukan
ID pesanan
curl -X POST https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB/finish \ -H "Authorization: Bearer $SNSOTP_KEY"
{
"order": { "id": "OT-7K2M9QX4PB", "status": "finished" }
}POST/orders/{id}/cancel
Batalkan sebelum kode, pengembalian dana penuh · kunci diperlukan
Membatalkan pesanan sebelum kode tiba dan mengembalikan harga penuh ke saldo Anda segera. Setelah kode tiba, pembatalan akan menjawab has_code.
Parameter
idpathdiperlukan
ID pesanan
curl -X POST https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB/cancel \ -H "Authorization: Bearer $SNSOTP_KEY"
{
"order": { "id": "OT-7K2M9QX4PB", "status": "canceled", "refunded": "0.93" }
}Status pesanan
waitingNomor sudah siap dan belum ada SMS yang tiba. Pembatalan masih mungkin.receivedSetidaknya satu kode telah tiba. code dan sms berisi yang terbaru.finishedDitutup setelah kode tiba, dengan finish atau saat jendela waktu berakhir.refundedTidak ada kode yang tiba dalam 20 menit. Harga penuh telah kembali ke saldo Anda.canceledDibatalkan sebelum kode tiba. Harga penuh telah kembali ke saldo Anda.
Kesalahan
Kesalahan menggunakan status HTTP dan body dengan kode stabil dan pesan yang dapat dibaca.
- 400
missing_filter, bad_jsonNilai yang diperlukan hilang atau body tidak dapat dibaca. - 401
no_key, bad_keyKunci hilang, salah, atau dihapus. - 402
no_balanceSaldo tidak cukup untuk pesanan ini. Tambahkan saldo di konsol. - 404
unknown_service, unknown_country, not_sold, not_foundKode atau pesanan tidak ada, atau pasangan tidak dijual. - 409
too_many_open, has_code, not_ready, no_numbersTindakan tidak sesuai dengan status pesanan, atau tidak ada nomor yang tersedia saat ini (tidak ada yang dibebankan). - 429
rate_limitedLebih dari 300 permintaan dalam satu menit dengan satu kunci.
{
"error": {
"code": "no_balance",
"message": "Not enough credit. Add credit in the console."
}
}Batas kecepatan
- 300 permintaan per menit per kunci. Di atas itu API akan menjawab 429 rate_limited selama sisa menit tersebut.
- Hingga 20 pesanan terbuka per akun. Selesaikan atau batalkan satu untuk membuka yang lain.
- Polling order setiap 3 hingga 5 detik; kode biasanya tiba dalam satu menit.
Format aktivasi SMS
Skrip yang ditulis untuk format handler_api.php umum bekerja dengan kunci API yang sama: ubah alamat dasar ke https://snsotp.com/stubs/handler_api.php dan pertahankan tindakannya. Kode layanan dan negara sama seperti di REST API.
getBalanceACCESS_BALANCE:42.50
getServicesListDaftar layanan JSON
getCountriesPeta negara JSON
getPricesservice, country (opsional)JSON {country: {service: {cost, count}}}
getNumberservice, countryACCESS_NUMBER:<id>:<phone>
getStatusidSTATUS_WAIT_CODE, STATUS_OK:<code>, STATUS_WAIT_RETRY:<code>, STATUS_CANCEL
setStatusid, status 1 / 3 / 6 / 8ACCESS_READY, ACCESS_RETRY_GET, ACCESS_ACTIVATION, ACCESS_CANCEL
curl "https://snsotp.com/stubs/handler_api.php\ ?api_key=$SNSOTP_KEY&action=getNumber\ &service=telegram&country=gb" ACCESS_NUMBER:OT-3QF8ZK2W7M:447700900182
nilai setStatus: 1 siap, 3 kode lain, 6 selesai, 8 batalkan dengan pengembalian dana penuh.