Перейти к основному содержимому
116
Страны
133 сервиса, 400 операторских маршрутов, более 15 400 актуальных тарифов. Только криптовалюта, без проверки личности.
Арендовать номер

SmsNoKYC для разработчиков: SMS-подтверждение, которое можно автоматизировать

Автоматизируйте весь цикл подтверждения через единый JSON-интерфейс. 116 стран, 133 сервиса, 400 маршрутов операторов и более 15 400 актуальных цен доступны через несколько эндпоинтов: выделить номер, поймать входящий код, арендовать на срок до 90 дней, оплатить в крипте. Здесь нет API-ключа — единственное удостоверение, которое вам когда-либо понадобится, это seed-фраза.

Время чтения: 5 мин REST · JSON · OpenAPI 3.0 Спецификация OpenAPI →

Требуется аутентификация. Сессии работают на cookie. Войдите с помощью seed-фразы — через сайт или напрямую через эндпоинт авторизации, описанный ниже, — и каждый последующий запрос автоматически унаследует эту сессию.

Создано для скриптов, конвейеров и автономных агентов

Традиционные поставщики OTP требуют подписанных контрактов, пройденного комплаенса и обязательных месячных минимумов ещё до первого запроса. SmsNoKYC меняет порядок: держите seed-фразу, пополните баланс от $25 в любой из 8 криптовалют — среди них Bitcoin, Monero, Ethereum, Litecoin, TRON, USDT, SOL — и начинайте вызовы из любого уже используемого HTTPS-клиента. Тарификация — за номер, от $0.01, по более чем 15 400 актуальным ценовым точкам.

День за днём эти эндпоинты верифицируют процессы регистрации внутри CI, передают коды OTP headless-браузерам и парсерским флотам, поддерживают активность аккаунтов Telegram или WhatsApp на выделенной аренде от 7 до 90 дней и распределяют верификацию по 116 странам с явным контролем над 400 маршрутами операторов в трёх уровнях — виртуальном, физическом, премиум. ИИ-агенты получают доступ к тому же каталогу через нативный MCP-сервер, описанный на странице agents, так что модель с поддержкой инструментов может покупать номера и читать коды без какой-либо кастомной прослойки.

Аутентификация

Сессии основаны на cookie — здесь нет bearer-ключа, который нужно создавать или обновлять. Программный вход занимает три шага:

  1. Отправьте POST-запрос с seed-фразой на /auth-api.php
  2. Захватите cookie, установленный в ответе
  3. Прикрепляйте этот cookie к каждому последующему запросу
POST /auth-api.php

Обменивает вашу seed-фразу на активную сессию.

ПараметрТипОбязательныйОписание
actionstringобязательныйДолжно быть "login"
seedstringобязательный16-символьная seed-фраза, привязанная к вашему аккаунту (формат AbC3-dEf4-gHj5-kLm6)
cURL
Python
JavaScript
# Login and save session cookie curl -X POST https://smsnokyc.com/auth-api.php \ -d "action=login&seed=AbC3-dEf4-gHj5-kLm6" \ -c cookies.txt
import requests session = requests.Session() resp = session.post("https://smsnokyc.com/auth-api.php", data={ "action": "login", "seed": "AbC3-dEf4-gHj5-kLm6" }) data = resp.json() print(data) # {"success": true, "user": {...}} # session object now holds the cookie for all future requests
const resp = await fetch("https://smsnokyc.com/auth-api.php", { method: "POST", credentials: "include", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: "action=login&seed=AbC3-dEf4-gHj5-kLm6" }); const data = await resp.json(); console.log(data); // {success: true, user: {...}}
Успешный ответ
{ "success": true, "user": { "id": 42, "prefix": "AbC3", "balance": "74.50" } }
Ответ с ошибкой
{ "success": false, "error": "Invalid seed." }

Базовый URL

Каждый эндпоинт строится по единому шаблону URL:

https://smsnokyc.com/api.php?action={action}

Ответы всегда приходят в формате JSON. Тело POST-запроса можно отправлять как application/json, так и application/x-www-form-urlencoded.

Лимиты запросов

Объём запросов регулируют два правила:

ЭндпоинтЛимитОкно
Аутентификация5 попыток15 минут
Все остальные endpointsБез строгого лимита—

Ограничение частоты запросов: вход в систему допускает 5 попыток за 15 минут; для остальных эндпоинтов фиксированного лимита пока нет, но при устойчивых злоупотреблениях запросы могут замедляться выше по цепочке. Распределяйте вызовы разумно.

Обработка ошибок

Каждая ошибка возвращается в виде объекта JSON с полем error:

{ "error": "Description of what went wrong" }
HTTP кодЗначение
200Успех (проверьте тело ответа на ошибки уровня приложения)
403Недействительный CSRF-токен
405Неверный HTTP-метод (напр. GET на endpoint только для POST)
429Лимит запросов превышен

Ошибки на уровне приложения, с которыми вы будете сталкиваться чаще всего:

ОшибкаПричина
"Login required"Сессия истекла или не аутентифицирован
"Insufficient balance"Недостаточно средств — включает поля need и have
"Service not available for this country"Нет в наличии или сервис неактивен для выбранной страны
"Missing country or service"Обязательные параметры не были предоставлены

Список стран

GET /api.php?action=countries

Перечисляет все страны, где сейчас есть в наличии номера — 116 по последним данным. Открытый эндпоинт, сессия не требуется.

cURL
Python
JavaScript
curl https://smsnokyc.com/api.php?action=countries
resp = session.get("https://smsnokyc.com/api.php", params={"action": "countries"}) countries = resp.json() for c in countries: print(c["code"], c["name"])
const resp = await fetch("https://smsnokyc.com/api.php?action=countries"); const countries = await resp.json();
Ответ
[ { "id": 1, "code": "us", "name": "USA" }, { "id": 2, "code": "gb", "name": "UK" }, { "id": 3, "code": "de", "name": "Germany" } ]

Список сервисов

GET /api.php?action=services&country={code}

Возвращает список сервисов для одной страны, включая актуальную цену и наличие. Не указывайте параметр страны, чтобы получить полный каталог из 133 сервисов без цен.

ПараметрТипОбязательныйОписание
countrystringнеобязательныйКод страны ISO 3166-1 alpha-2 (напр. us, gb, de)
Ответ (с указанием страны)
[ { "id": 12, "name": "WhatsApp", "slug": "whatsapp", "icon_code": "WA", "icon_color": "#25d366", "category": "social", "price": "0.35", "stock": 847 } ]

Список операторов

GET /api.php?action=operators&country={code}

Перечисляет маршруты операторов, стоящие за страной. У каждого оператора есть уровень и множитель, применяемый поверх базовой цены сервиса.

ПараметрТипОбязательныйОписание
countrystringобязательныйКод страны ISO 3166-1 alpha-2
Ответ
[ { "id": 5, "name": "T-Mobile", "type": "physical", "price_multiplier": "1.50", "icon_slug": "tmobile", "icon_domain": "t-mobile.com" } ]

Типы операторов: virtual — на базе VoIP, самая низкая цена, иногда отклоняется строгими платформами. physical — настоящая SIM-карта, более высокий уровень принятия. premium — максимальный уровень принятия и самая быстрая доставка, около 10 секунд.

Купить номер (SMS-активация)

POST /api.php?action=buy

Резервирует номер для одного подтверждения. Он остаётся вашим 20 минут; если за это время сообщение не приходит, списание автоматически возвращается на баланс.

ПараметрТипОбязательныйОписание
countrystringобязательныйКод страны (напр. us)
service_idintegerобязательныйID сервиса из Список сервисов
operator_idintegerнеобязательныйID оператора из Список операторов. Не указывайте для оператора по умолчанию.
cURL
Python
JavaScript
curl -X POST https://smsnokyc.com/api.php?action=buy \ -b cookies.txt \ -H "Content-Type: application/json" \ -d '{"country":"us","service_id":12,"operator_id":5}'
resp = session.post("https://smsnokyc.com/api.php?action=buy", json={ "country": "us", "service_id": 12, "operator_id": 5 }) order = resp.json() print(f"Order #{order['order_id']} — ${order['price']}")
const resp = await fetch("https://smsnokyc.com/api.php?action=buy", { method: "POST", credentials: "include", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ country: "us", service_id: 12, operator_id: 5 }) }); const order = await resp.json();
Успешный ответ
{ "success": true, "order_id": 1847, "price": 0.53, "balance": "73.97" }
Ошибка: Недостаточный баланс
{ "error": "Insufficient balance", "need": 0.53, "have": "0.10" }

Список заказов

GET /api.php?action=orders

Возвращает ваши последние 50 заказов вместе с номерами и полученными кодами. Опрашивайте этот эндпоинт, пока активация ожидает SMS.

Ответ
[ { "id": 1847, "price": "0.53", "status": "completed", "phone_number": "+12025551234", "sms_code": "847293", "created_at": "2026-04-09 14:32:00", "country_code": "us", "country_name": "USA", "service_name": "WhatsApp", "operator_name": "T-Mobile" } ]

Статусы заказа: active — ожидание сообщения. completed — код получен. cancelled — отменён вами. refunded — средства возвращены автоматически после тайм-аута без ответа. expired — время истекло.

Получить цену аренды

GET /api.php?action=rental_price&country={code}&operator_id={id}&duration={days}

Возвращает стоимость аренды выделенного номера у указанного оператора на выбранный срок.

ПараметрТипОбязательныйОписание
countrystringобязательныйКод страны
operator_idintegerобязательныйID оператора
durationintegerобязательныйСрок аренды в днях: 7, 14, 30 или 90
Ответ
{ "price": "12.50", "duration": 30, "operator": "T-Mobile", "type": "physical", "country": "USA" }

Арендовать номер

POST /api.php?action=rental_buy

Закрепляет за вами один или несколько выделенных номеров. Каждый остаётся исключительно вашим на весь срок — от 7 до 90 дней — и принимает неограниченные входящие SMS от любого сервиса.

ПараметрТипОбязательныйОписание
countrystringобязательныйКод страны
operator_idintegerобязательныйID оператора
durationintegerобязательный7, 14, 30 или 90 дней
qtyintegerнеобязательныйКоличество номеров для аренды (1–10, по умолчанию: 1)
Успешный ответ
{ "success": true, "order_ids": [1848, 1849], "total": 25.00, "qty": 2, "unit_price": 12.50, "duration": 30, "balance": "49.50" }

Получить информацию о пользователе

GET /api.php?action=user

Возвращает данные аккаунта текущей сессии, включая баланс. Один запрос одновременно проверяет вход и наличие средств.

Аутентифицирован
{ "logged_in": true, "id": 42, "prefix": "AbC3", "balance": "74.50" }
Не аутентифицирован
{ "logged_in": false }

Сквозной сценарий

Скрипт ниже выполняет весь цикл на Python — сессия, поиск по каталогу, покупка, а затем опрос до получения кода:

Python
import requests, time BASE = "https://smsnokyc.com" SEED = "AbC3-dEf4-gHj5-kLm6" s = requests.Session() # 1. Authenticate s.post(f"{BASE}/auth-api.php", data={"action": "login", "seed": SEED}) # 2. Check balance user = s.get(f"{BASE}/api.php?action=user").json() print(f"Balance: ${user['balance']}") # 3. Get services for USA services = s.get(f"{BASE}/api.php?action=services&country=us").json() whatsapp = next(svc for svc in services if svc["name"] == "WhatsApp") print(f"WhatsApp: ${whatsapp['price']} ({whatsapp['stock']} in stock)") # 4. Buy a number order = s.post(f"{BASE}/api.php?action=buy", json={ "country": "us", "service_id": whatsapp["id"] }).json() print(f"Order #{order['order_id']} created") # 5. Poll for SMS code for _ in range(60): orders = s.get(f"{BASE}/api.php?action=orders").json() my_order = next(o for o in orders if o["id"] == order["order_id"]) if my_order["sms_code"]: print(f"SMS code: {my_order['sms_code']}") print(f"Phone: {my_order['phone_number']}") break print("Waiting for SMS...") time.sleep(5) else: print("Timeout — balance will be refunded automatically")

Ответы на вопросы разработчиков

Какие операции предоставляет API для разработчиков SmsNoKYC?

Всё, что делает личный кабинет, может сделать и сценарий: получить каталог из 116 стран и 133 сервисов, изучить более 15 400 актуальных ценовых точек на 400 маршрутах операторов, выделить номер для одноразового OTP, прочитать входящий код в момент его получения, держать выделенную аренду 7, 14, 30 или 90 дней и проверять каждый заказ. Всё это — обычный JSON поверх HTTPS, оплата в крипте, без единого шага идентификации во всём процессе.

Нужно ли генерировать API-ключ перед первым запросом?

Ничего не нужно генерировать или обновлять. Ваша seed-фраза — это и есть учётные данные: отправьте её один раз методом POST на /auth-api.php, сохраните куки сессии, которые вернёт сервер, и отправляйте эти куки с каждым последующим запросом. Никакой панели ключей, никакого рукопожатия OAuth, никакого календаря истечения срока — одна seed-фраза открывает одну сессию, и это вся модель.

Сколько стоит доступ к самому API?

Доступ ничего не стоит — нет ежемесячной платы, тарифных уровней или минимального объёма запросов. Вы платите только за номер: одноразовые коды верификации начинаются от $0.01 и обычно укладываются в диапазон $0.20–$1, а выделенная аренда открывается от $4.20 за 7-дневный срок. Баланс пополняется 8 криптовалютами (минимальное пополнение $25), а активация, на которую не пришло SMS, возвращает средства автоматически, без каких-либо действий с вашей стороны.

Можно ли интегрироваться на любом языке программирования или через AI-агента?

Подойдёт всё, что умеет работать по HTTPS: Python, Node.js, Go, Rust, PHP, Ruby, Java, C# или обычный cURL в shell-скрипте. В документации есть рабочие примеры на cURL, Python и JavaScript, а /openapi.json предоставляет полный документ OpenAPI 3.0 для генерации типизированных клиентов. Автономные агенты также поддерживаются нативно — отдельный MCP-сервер позволяет моделям, использующим инструменты, самостоятельно покупать номера и получать коды; настройка описана на странице /agents.

Что происходит, если купленный номер молчит?

Вы ничего не теряете. У каждой активации есть 20-минутное окно приёма; если оно закрывается без сообщения, платформа сама отменяет заказ и возвращает полную сумму на баланс. Без тикетов, без форм, без ожидания поддержки. Можно сразу купить снова — переход на физический или премиум-уровень оператора обычно повышает доставляемость.

Насколько часто можно опрашивать сервер до срабатывания ограничений?

Жёсткий лимит есть только у входа: 5 попыток за 15 минут на IP — это защита от подбора seed-фразы. У эндпоинтов каталога, покупки, заказа и аренды сейчас нет фиксированной квоты. Придерживайтесь разумного темпа — проверка эндпоинта заказов каждые 3–5 секунд ловит любой код — и держите постоянный трафик в пределах примерно 10 запросов в секунду, поскольку более сильные всплески могут быть замедлены на уровне edge.

Разверните

Получите seed-фразу на главной странице, пополните баланс на $25 или больше в крипте — и до первого кода верификации останется всего пять запросов. Строите на LLM, а не на скрипте? Направьте свою модель на MCP-сервер SmsNoKYC или следуйте руководству по интеграции ИИ-агентов — весь каталог из 116 стран и 133 сервисов превращается в вызов инструмента.

Всё, что осталось за рамками документации, освещено в центре помощи, глоссарий SMS расшифровывает терминологию, а активность в реальном времени показывает сеть в действии. Поддержка работает через тикеты внутри аккаунта после входа в систему.