v1REST · JSON

SNSOTP OTP API

REST API для SMS-верифікації. Замовте номер для однієї з 182 послуг у одній з 154 країн, отримайте одноразовий код з замовлення та поверніть повну вартість, якщо код не надійшов протягом 20 хвилин.

Кожен ендпоінт приймає параметри як параметри запиту (GET) або як поля форми чи JSON (POST). Відповіді, JSON; гроші, рядок у USD з двома десятковими знаками, а час, ISO 8601 у UTC.

Сервер

https://snsotp.com/api/v1

АутентифікаціяBearer токен

Ваш 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
curl https://snsotp.com/api/v1/services
Відповідь200
{
  "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
curl https://snsotp.com/api/v1/countries
Відповідь200
{
  "countries": [
    { "code": "us", "name": "United States", "dial_code": "1" },
    { "code": "gb", "name": "United Kingdom", "dial_code": "44" }
  ]
}

GET/prices

Ціни для сервісу, країни або обох · без ключа

Ціна за замовлення для однієї послуги в кожній країні, однієї країни для кожної послуги або однієї пари. Надішліть принаймні один фільтр. Ключ не потрібен.

Параметри

  • servicestring

    Код послуги, наприклад whatsapp

  • countrystring

    Код країни, наприклад us

ЗапитcURL
curl "https://snsotp.com/api/v1/prices?service=whatsapp&country=us"
Відповідь200
{
  "prices": [
    { "service": "whatsapp", "country": "us", "price": "0.93" }
  ]
}

GET/balance

Ваш баланс у USD · потрібен ключ

Ваш баланс у USD.

ЗапитcURL
curl https://snsotp.com/api/v1/balance \
  -H "Authorization: Bearer $SNSOTP_KEY"
Відповідь200
{
  "balance": "42.50",
  "currency": "USD"
}

POST/orders

Замовте номер для сервісу та країни · потрібен ключ

Замовляє номер і стягує його вартість. Відповідь містить номер повністю (phone) і без телефонного коду (number). Замовлення залишається відкритим протягом 20 хвилин; якщо код не надійшов за цей час, вартість повертається на ваш баланс автоматично. Статус відповіді 201.

Параметри

  • servicestringобов'язково

    Код послуги з GET /services

  • countrystringобов'язково

    Код країни з GET /countries

ЗапитcURL
curl -X POST https://snsotp.com/api/v1/orders \
  -H "Authorization: Bearer $SNSOTP_KEY" \
  -d service=whatsapp -d country=us
Відповідь201
{
  "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
curl https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB \
  -H "Authorization: Bearer $SNSOTP_KEY"
Відповідь200
{
  "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
curl "https://snsotp.com/api/v1/orders?status=open" \
  -H "Authorization: Bearer $SNSOTP_KEY"
Відповідь200
{
  "orders": [
    { "id": "OT-7K2M9QX4PB", "service": "whatsapp", "status": "received", "code": "284913" }
  ]
}

POST/orders/{id}/resend

Інший код на тому ж номері · потрібен ключ

Запитує інший код на тому ж номері після першого коду, протягом вікна, без додаткової плати. Потім ініціюйте нове SMS у додатку; waiting_for_resend, true, доки воно не надійде.

Параметри

  • idpathобов'язково

    ID замовлення

ЗапитcURL
curl -X POST https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB/resend \
  -H "Authorization: Bearer $SNSOTP_KEY"
Відповідь200
{
  "order": { "id": "OT-7K2M9QX4PB", "status": "received", "waiting_for_resend": true }
}

POST/orders/{id}/finish

Закрийте замовлення після використання коду · потрібен ключ

Закриває замовлення, яке отримало код, після його використання. Завершення необов'язкове: відкриті замовлення закриваються автоматично після завершення вікна.

Параметри

  • idpathобов'язково

    ID замовлення

ЗапитcURL
curl -X POST https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB/finish \
  -H "Authorization: Bearer $SNSOTP_KEY"
Відповідь200
{
  "order": { "id": "OT-7K2M9QX4PB", "status": "finished" }
}

POST/orders/{id}/cancel

Скасуйте перед отриманням коду, повний повернення коштів · потрібен ключ

Скасовує замовлення до надходження коду та повертає повну вартість на ваш баланс негайно. Після надходження коду скасування відповідає has_code.

Параметри

  • idpathобов'язково

    ID замовлення

ЗапитcURL
curl -X POST https://snsotp.com/api/v1/orders/OT-7K2M9QX4PB/cancel \
  -H "Authorization: Bearer $SNSOTP_KEY"
Відповідь200
{
  "order": { "id": "OT-7K2M9QX4PB", "status": "canceled", "refunded": "0.93" }
}

Статус замовлення

значення статусу
  • waitingНомер готовий, і SMS ще не надійшло. Скасування можливе.
  • receivedНадійшов принаймні один код. code та sms містять останній.
  • finishedЗакрито після надходження коду, завершенням або після завершення вікна.
  • refundedКод не надійшов протягом 20 хвилин. Повна вартість повернута на ваш баланс.
  • canceledСкасовано до надходження коду. Повна вартість повернута на ваш баланс.

Помилки

Помилки використовують HTTP-статус і тіло зі стабільним кодом та зрозумілим повідомленням.

HTTP-статус та коди
  • 400missing_filter, bad_jsonВідсутнє обов'язкове значення або тіло не може бути прочитане.
  • 401no_key, bad_keyКлюч відсутній, неправильний або видалений.
  • 402no_balanceНедостатньо коштів на балансі для цього замовлення. Поповніть баланс у консолі.
  • 404unknown_service, unknown_country, not_sold, not_foundКод або замовлення не існує, або пара не продається.
  • 409too_many_open, has_code, not_ready, no_numbersДія не відповідає стану замовлення або номер зараз недоступний (нічого не стягується).
  • 429rate_limitedБільше 300 запитів за хвилину з одним ключем.
Тіло помилки402
{
  "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.

Дії
  • getBalance

    ACCESS_BALANCE:42.50

  • getServicesList

    Список сервісів у форматі JSON

  • getCountries

    Мапа країн у форматі JSON

  • getPricesservice, country (опціонально)

    JSON {country: {service: {cost, count}}}

  • getNumberservice, country

    ACCESS_NUMBER:<id>:<phone>

  • getStatusid

    STATUS_WAIT_CODE, STATUS_OK:<code>, STATUS_WAIT_RETRY:<code>, STATUS_CANCEL

  • setStatusid, status 1 / 3 / 6 / 8

    ACCESS_READY, ACCESS_RETRY_GET, ACCESS_ACTIVATION, ACCESS_CANCEL

ЗапитcURL
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 скасувати з повним поверненням коштів.

Документація OTP API: SMS верифікація REST API | SNSOTP