SNSOTP OTP API
API REST untuk pengesahan SMS. Pesan nombor untuk salah satu daripada 182 perkhidmatan di salah satu daripada 154 negara, baca kod sekali guna daripada pesanan, dan dapatkan harga penuh kembali jika tiada kod tiba dalam 20 minit.
Setiap endpoint menerima parameter sebagai parameter pertanyaan (GET) atau sebagai medan borang atau JSON (POST). Jawapan adalah JSON; wang adalah rentetan USD dengan dua perpuluhan dan masa adalah ISO 8601 dalam UTC.
https://snsotp.com/api/v1
Kunci API anda dari konsol, dihantar sebagai Authorization: Bearer sok_...
Pengesahan
Buat kunci pada halaman API di konsol. Ia bermula dengan sok_ dan ditunjukkan sekali sahaja, jadi simpan dalam pembolehubah persekitaran. Menggantikan kunci akan menghentikan kunci lama dengan segera. Panggilan kepada /services, /countries dan /prices berfungsi tanpa kunci.
Authorization: Bearer sok_your_key_here
Kunci juga boleh dihantar sebagai parameter pertanyaan atau medan borang key, yang membantu alat yang tidak boleh menetapkan header.
Permulaan pantas
Pesan nombor, berikan kepada aplikasi, kemudian poll pesanan sehingga kod ada. Aliran 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 perkhidmatan dengan kod dan harga terendahnya · tiada kunci
Setiap perkhidmatan yang boleh dipesan, dengan kodnya (gunakan sebagai perkhidmatan dalam panggilan lain), kategorinya dan harga terendah merentasi negara. Tiada kunci diperlukan.
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 kod dan kod dailnya · tiada kunci
Setiap negara dengan kodnya (ISO 3166 alpha-2 dalam huruf kecil, gunakan sebagai negara) dan kod dailnya. Tiada kunci diperlukan.
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 perkhidmatan, negara atau kedua-duanya · tiada kunci
Harga setiap pesanan untuk satu perkhidmatan di setiap negara, satu negara untuk setiap perkhidmatan, atau satu pasangan. Hantar sekurang-kurangnya satu penapis. Tiada kunci diperlukan.
Parameter
servicestring
Kod perkhidmatan, contohnya whatsapp
countrystring
Kod negara, contohnya 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 nombor untuk perkhidmatan dan negara · kunci diperlukan
Memesan nombor dan mengenakan harganya. Jawapan mengandungi nombor penuh (phone) dan tanpa kod dail (number). Pesanan kekal terbuka selama 20 minit; jika tiada kod dalam tempoh itu, harga akan kembali ke saldo anda secara automatik. Status jawapan 201.
Parameter
servicestringdiperlukan
Kod perkhidmatan dari GET /services
countrystringdiperlukan
Kod 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, kod dan teks SMS satu pesanan · kunci diperlukan
Satu pesanan dengan statusnya, kod terkini, teks SMS terkini dan setiap kod yang diterima setakat ini. Poll setiap 3 hingga 5 saat semasa status adalah 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 dahulu. Tambah status=all untuk pesanan terkini dalam setiap status.
Parameter
statusstring
terbuka (lalai) atau semua
limitnumber
1 hingga 100, lalai 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
Kod lain pada nombor yang sama · kunci diperlukan
Meminta kod lain pada nombor yang sama selepas kod pertama, dalam tempoh window, tanpa kos tambahan. Kemudian picu SMS baru dalam aplikasi; waiting_for_resend adalah benar sehingga ia 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 selepas anda menggunakan kod · kunci diperlukan
Menutup pesanan yang menerima kod setelah anda menggunakannya. Menyelesaikan adalah pilihan: pesanan terbuka akan ditutup sendiri apabila window 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
Batal sebelum kod, bayaran penuh dikembalikan · kunci diperlukan
Membatalkan pesanan sebelum kod tiba dan mengembalikan harga penuh ke saldo anda dengan segera. Selepas kod, batalkan jawapan 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
waitingNombor sudah sedia dan tiada SMS tiba lagi. Pembatalan mungkin.receivedSekurang-kurangnya satu kod tiba. code dan sms mengandungi yang terkini.finishedDitutup selepas kod, dengan finish atau apabila window berakhir.refundedTiada kod tiba dalam 20 minit. Harga penuh kembali ke saldo anda.canceledDibatalkan sebelum kod. Harga penuh kembali ke saldo anda.
Ralat
Ralat menggunakan status HTTP dan badan dengan kod stabil dan mesej yang boleh dibaca.
- 400
missing_filter, bad_jsonNilai yang diperlukan tiada atau badan tidak boleh dibaca. - 401
no_key, bad_keyKunci tiada, salah atau dipadam. - 402
no_balanceTiada cukup saldo untuk pesanan ini. Tambah saldo di konsol. - 404
unknown_service, unknown_country, not_sold, not_foundKod atau pesanan tidak wujud, atau pasangan tidak dijual. - 409
too_many_open, has_code, not_ready, no_numbersTindakan tidak sesuai dengan keadaan pesanan, atau tiada nombor percuma sekarang (tiada apa yang dikenakan). - 429
rate_limitedLebih daripada 300 permintaan dalam satu minit dengan satu kunci.
{
"error": {
"code": "no_balance",
"message": "Not enough credit. Add credit in the console."
}
}Had kadar
- 300 permintaan seminit setiap kunci. Melebihi itu API akan menjawab 429 rate_limited untuk baki minit tersebut.
- Sehingga 20 pesanan terbuka setiap akaun. Selesaikan atau batalkan satu untuk membuka yang lain.
- Poll pesanan setiap 3 hingga 5 saat; kod biasanya tiba dalam masa satu minit.
Format pengaktifan SMS
Skrip yang ditulis untuk format handler_api.php biasa berfungsi dengan kunci API yang sama: ubah alamat asas kepada https://snsotp.com/stubs/handler_api.php dan kekalkan tindakan. Kod perkhidmatan dan negara adalah sama seperti dalam API REST.
getBalanceACCESS_BALANCE:42.50
getServicesListSenarai JSON perkhidmatan
getCountriesPeta JSON negara
getPricesservice, country (pilihan)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 sedia, 3 kod lain, 6 selesai, 8 batalkan dengan bayaran balik penuh.