SNSOTP OTP API
REST API для SMS-верифікації. Замовте номер для однієї з 182 послуг у одній з 154 країн, отримайте одноразовий код з замовлення та поверніть повну вартість, якщо код не надійшов протягом 20 хвилин.
Кожен ендпоінт приймає параметри як параметри запиту (GET) або як поля форми чи JSON (POST). Відповіді, JSON; гроші, рядок у USD з двома десятковими знаками, а час, ISO 8601 у UTC.
https://snsotp.com/api/v1
Ваш API-ключ з консолі, відправлений як Authorization: Bearer sok_...
Аутентифікація
Створіть ключ на сторінці API в консолі. Він починається з sok_ і показується лише один раз, тому збережіть його у змінній середовища. Заміна ключа негайно зупиняє старий. Виклики до /services, /countries та /prices працюють без ключа.
Authorization: Bearer sok_your_key_here
Ключ також можна відправити як параметр запиту або поле форми key, що допомагає інструментам, які не можуть встановлювати заголовки.
Швидкий старт
Замовте номер, надайте його додатку, а потім опитуйте замовлення, доки код не з'явиться. Такий самий процес чотирма мовами:
# 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
Кожен сервіс з його кодом та найнижчою ціною · без ключа
Кожна послуга, яку можна замовити, з її кодом (використовуйте його як service в інших викликах), категорією та найнижчою ціною серед країн. Ключ не потрібен.
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
Кожна країна з її кодом та кодом набору · без ключа
Кожна країна з її кодом (ISO 3166 alpha-2 у нижньому регістрі, використовуйте його як country) та телефонним кодом. Ключ не потрібен.
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
Ціни для сервісу, країни або обох · без ключа
Ціна за замовлення для однієї послуги в кожній країні, однієї країни для кожної послуги або однієї пари. Надішліть принаймні один фільтр. Ключ не потрібен.
Параметри
servicestring
Код послуги, наприклад whatsapp
countrystring
Код країни, наприклад us
curl "https://snsotp.com/api/v1/prices?service=whatsapp&country=us"
{
"prices": [
{ "service": "whatsapp", "country": "us", "price": "0.93" }
]
}GET/balance
Ваш баланс у USD · потрібен ключ
Ваш баланс у USD.
curl https://snsotp.com/api/v1/balance \ -H "Authorization: Bearer $SNSOTP_KEY"
{
"balance": "42.50",
"currency": "USD"
}POST/orders
Замовте номер для сервісу та країни · потрібен ключ
Замовляє номер і стягує його вартість. Відповідь містить номер повністю (phone) і без телефонного коду (number). Замовлення залишається відкритим протягом 20 хвилин; якщо код не надійшов за цей час, вартість повертається на ваш баланс автоматично. Статус відповіді 201.
Параметри
servicestringобов'язково
Код послуги з GET /services
countrystringобов'язково
Код країни з 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}
Статус, код та текст SMS одного замовлення · потрібен ключ
Одне замовлення зі статусом, останнім кодом, останнім текстом SMS та кожним отриманим кодом. Опитуйте кожні 3-5 секунд, доки статус, waiting.
Параметри
idpathобов'язково
ID замовлення з 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
Ваші відкриті замовлення (або всі з status=all) · потрібен ключ
Ваші відкриті замовлення, від новіших до старіших. Додайте status=all для останніх замовлень у будь-якому статусі.
Параметри
statusstring
open (за замовчуванням) або all
limitnumber
1 до 100, за замовчуванням 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
Інший код на тому ж номері · потрібен ключ
Запитує інший код на тому ж номері після першого коду, протягом вікна, без додаткової плати. Потім ініціюйте нове SMS у додатку; waiting_for_resend, true, доки воно не надійде.
Параметри
idpathобов'язково
ID замовлення
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
Закрийте замовлення після використання коду · потрібен ключ
Закриває замовлення, яке отримало код, після його використання. Завершення необов'язкове: відкриті замовлення закриваються автоматично після завершення вікна.
Параметри
idpathобов'язково
ID замовлення
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
Скасуйте перед отриманням коду, повний повернення коштів · потрібен ключ
Скасовує замовлення до надходження коду та повертає повну вартість на ваш баланс негайно. Після надходження коду скасування відповідає has_code.
Параметри
idpathобов'язково
ID замовлення
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" }
}Статус замовлення
waitingНомер готовий, і SMS ще не надійшло. Скасування можливе.receivedНадійшов принаймні один код. code та sms містять останній.finishedЗакрито після надходження коду, завершенням або після завершення вікна.refundedКод не надійшов протягом 20 хвилин. Повна вартість повернута на ваш баланс.canceledСкасовано до надходження коду. Повна вартість повернута на ваш баланс.
Помилки
Помилки використовують HTTP-статус і тіло зі стабільним кодом та зрозумілим повідомленням.
- 400
missing_filter, bad_jsonВідсутнє обов'язкове значення або тіло не може бути прочитане. - 401
no_key, bad_keyКлюч відсутній, неправильний або видалений. - 402
no_balanceНедостатньо коштів на балансі для цього замовлення. Поповніть баланс у консолі. - 404
unknown_service, unknown_country, not_sold, not_foundКод або замовлення не існує, або пара не продається. - 409
too_many_open, has_code, not_ready, no_numbersДія не відповідає стану замовлення або номер зараз недоступний (нічого не стягується). - 429
rate_limitedБільше 300 запитів за хвилину з одним ключем.
{
"error": {
"code": "no_balance",
"message": "Not enough credit. Add credit in the console."
}
}Ліміти запитів
- 300 запитів на хвилину на ключ. Понад це API відповідає 429 rate_limited до кінця хвилини.
- До 20 відкритих замовлень на акаунт. Завершіть або скасуйте одне, щоб відкрити інше.
- Отримуйте статус замовлення кожні 3-5 секунд; коди зазвичай надходять протягом хвилини.
Формат SMS активації
Скрипти, написані для формату handler_api.php, працюють з тим самим API ключем: змініть базову адресу на https://snsotp.com/stubs/handler_api.php і збережіть дії. Коди сервісів та країн такі ж, як у REST API.
getBalanceACCESS_BALANCE:42.50
getServicesListСписок сервісів у форматі JSON
getCountriesМапа країн у форматі JSON
getPricesservice, country (опціонально)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
Значення setStatus: 1 готово, 3 інший код, 6 завершити, 8 скасувати з повним поверненням коштів.