API для разработчиков

Автоматизируйте верификации в больших масштабах

API SNSPhone позволяет вашим инструментам заказывать номера США без VoIP, читать SMS-коды и управлять арендой. Два формата: REST API с JSON и общий формат активации SMS для существующих скриптов.

Быстрый старт

Базовый URL https://snsphone.com/api/v1. Создайте ключ на странице API в консоли и отправьте его как Authorization: Bearer spk_... (или поле ключа). Все номера, США без VoIP. Деньги, строка USD с 2 десятичными знаками, время, ISO 8601 UTC, 300 запросов в минуту на ключ. Цены на 2026-11-03.

Python

import os, time, requests

API = "https://snsphone.com/api/v1"
H = {"Authorization": f"Bearer {os.environ['SNSPHONE_KEY']}"}

order = requests.post(f"{API}/orders", headers=H, data={"service": "google"}).json()["order"]
print("Use this US number:", order["phone"])

while True:
    o = requests.get(f"{API}/orders/{order['id']}", headers=H).json()["order"]
    if o["code"] or o["status"] in ("refunded", "canceled"):
        break
    time.sleep(4)
print("Code:", o["code"])

Node.js

const API = "https://snsphone.com/api/v1";
const H = { Authorization: `Bearer ${process.env.SNSPHONE_KEY}` };

const { order } = await fetch(`${API}/orders`, {
  method: "POST", headers: H, body: new URLSearchParams({ service: "discord" }),
}).then((r) => r.json());
console.log("Use this US number:", order.phone);

let o = order;
while (!o.code && !["refunded", "canceled"].includes(o.status)) {
  await new Promise((r) => setTimeout(r, 4000));
  ({ order: o } = await fetch(`${API}/orders/${order.id}`, { headers: H }).then((r) => r.json()));
}
console.log("Code:", o.code);

Каталог

GET/services

Каждый код сервиса с его названием, категорией, ценой верификации и периодами аренды. Ключ не требуется.

Публичный, ключ не требуется.

curl "https://snsphone.com/api/v1/services"
{"country":"us","services":[{"code":"whatsapp","name":"WhatsApp","category":"Messaging","verification":"0.90","rentals":[]},{"code":"telegram","name":"Telegram","verification":"0.45","rentals":[{"days":365,"period":"1 year","price":"37.44"}]}]}

GET/prices?service=telegram

Цены в USD, опционально для одного сервиса. Ключ не требуется.

Публичный, ключ не требуется.

curl "https://snsphone.com/api/v1/prices?service=telegram"
{"country":"us","prices":[{"service":"telegram","type":"verification","days":null,"price":"0.45"},{"service":"telegram","type":"rental","days":365,"price":"37.44"}]}

GET/balance

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

Требуется ваш API-ключ.

curl "https://snsphone.com/api/v1/balance" \
  -H "Authorization: Bearer $KEY"
{"balance":"25.00","currency":"USD"}

Верификации

POST/orders

Покупает верификацию (201). Возвращает номер США и время окончания 20 минутного окна.

Требуется ваш API-ключ.

curl -X POST "https://snsphone.com/api/v1/orders" \
  -H "Authorization: Bearer $KEY" \
  -d "service=whatsapp"
{"order":{"id":"VR-7K2M9QX4PB","service":"whatsapp","country":"us","phone":"+14155550142","number":"4155550142","status":"waiting","code":null,"expires_at":"2026-11-03T12:20:00.000Z"},"window_minutes":20}

GET/orders/VR-7K2M9QX4PB

Одна верификация с её статусом и всеми полученными кодами. Статусы: waiting, received, finished, refunded, canceled.

Требуется ваш API-ключ.

curl "https://snsphone.com/api/v1/orders/VR-7K2M9QX4PB" \
  -H "Authorization: Bearer $KEY"
{"order":{"id":"VR-7K2M9QX4PB","status":"received","code":"482913","sms":"Your WhatsApp code is 482913"}}

GET/orders?status=open

Ваши открытые верификации (status=all за последние 100).

Требуется ваш API-ключ.

curl "https://snsphone.com/api/v1/orders?status=open" \
  -H "Authorization: Bearer $KEY"
{"orders":[...]}

POST/orders/VR-7K2M9QX4PB/resend

Запрашивает ещё один код на том же номере, после первого кода и пока окно открыто. Без дополнительной платы.

Требуется ваш API-ключ.

curl -X POST "https://snsphone.com/api/v1/orders/VR-7K2M9QX4PB/resend" \
  -H "Authorization: Bearer $KEY"
{"order":{"status":"received","waiting_for_resend":true}}

POST/orders/VR-7K2M9QX4PB/finish

Закрывает верификацию, получившую код.

Требуется ваш API-ключ.

curl -X POST "https://snsphone.com/api/v1/orders/VR-7K2M9QX4PB/finish" \
  -H "Authorization: Bearer $KEY"
{"order":{"status":"finished"}}

POST/orders/VR-7K2M9QX4PB/cancel

Отменяет до прибытия кода. Полная сумма возвращается на ваш баланс.

Требуется ваш API-ключ.

curl -X POST "https://snsphone.com/api/v1/orders/VR-7K2M9QX4PB/cancel" \
  -H "Authorization: Bearer $KEY"
{"order":{"status":"canceled","refunded":"0.90"}}

Аренда

POST/rentals

Арендует номер США для одного сервиса и периода (201). days опционально, если у сервиса один период.

Требуется ваш API-ключ.

curl -X POST "https://snsphone.com/api/v1/rentals" \
  -H "Authorization: Bearer $KEY" \
  -d "service=telegram&days=365"
{"rental":{"id":"RN-4J8T2W6QHM","service":"telegram","phone":"+13125550198","days":365,"period":"1 year","price":"37.44","status":"active","ends_at":"2027-11-03T12:00:00.000Z","messages":[]}}

GET/rentals?status=active

Ваши активные аренды с их последними сообщениями (status=all за последние 100).

Требуется ваш API-ключ.

curl "https://snsphone.com/api/v1/rentals?status=active" \
  -H "Authorization: Bearer $KEY"
{"rentals":[...]}

GET/rentals/RN-4J8T2W6QHM

Одна аренда со всеми полученными на неё SMS.

Требуется ваш API-ключ.

curl "https://snsphone.com/api/v1/rentals/RN-4J8T2W6QHM" \
  -H "Authorization: Bearer $KEY"
{"rental":{"id":"RN-4J8T2W6QHM","status":"active","messages":[{"from":"Telegram","sms":"Telegram code: 57291","code":"57291","received_at":"2026-11-03T12:01:12.000Z"}]}}

POST/rentals/RN-4J8T2W6QHM/renew

Добавляет ещё один период по той же цене.

Требуется ваш API-ключ.

curl -X POST "https://snsphone.com/api/v1/rentals/RN-4J8T2W6QHM/renew" \
  -H "Authorization: Bearer $KEY"
{"rental":{"renewed":1,"ends_at":"2028-11-02T12:00:00.000Z"}}

POST/rentals/RN-4J8T2W6QHM/cancel

Отменяет в первые 20 минут, пока SMS не прибыло. Всё оплаченное возвращается на ваш баланс.

Требуется ваш API-ключ.

curl -X POST "https://snsphone.com/api/v1/rentals/RN-4J8T2W6QHM/cancel" \
  -H "Authorization: Bearer $KEY"
{"rental":{"status":"canceled","refunded":"37.44"}}

Формат SMS-активации

Для инструментов, которые уже используют общий формат активации. Один URL, поле действия, ответы в виде простого текста. Только верификации.

https://snsphone.com/stubs/handler_api.php?api_key=KEY&action=ACTION
ДействиеДополнительные поляОтветЗначение
getBalanceнетACCESS_BALANCE:12.50Ваш баланс в USD.
getServicesListнет{"status":"success","services":[{"code":"whatsapp","name":"WhatsApp"}]}Коды сервисов с ценой верификации (JSON).
getCountriesнет{"us":{"name":"United States","dial":"1"}}Только США. country может быть us, 187 или опущен.
getPrices&service=whatsapp{"us":{"whatsapp":{"cost":0.9,"count":100}}}Цены в USD. Фильтр сервиса опционален.
getNumber&service=whatsapp&country=usACCESS_NUMBER:VR-7K2M9QX4PB:14155550142Покупает верификацию. Возвращает id и номер с 1 в начале.
getStatus&id=VR-7K2M9QX4PBSTATUS_OK:482913STATUS_WAIT_CODE, STATUS_OK:<code>, STATUS_WAIT_RETRY:<last code> (запрошен ещё один код), STATUS_CANCEL (отменено или возвращено).
setStatus&id=VR-7K2M9QX4PB&status=3ACCESS_RETRY_GETstatus=1 готово (ACCESS_READY), 3 ещё один код (ACCESS_RETRY_GET), 6 завершить (ACCESS_ACTIVATION), 8 отмена с полным возвратом, пока код не прибыл (ACCESS_CANCEL).

Ошибки

Ошибки REST приходят как {"error":{"code","message"}} с этими кодами статуса. Формат активации отвечает простым словом.

400Отсутствует или некорректное поле (bad_json, bad_period).
401Отсутствует ключ или неверный ключ (no_key, bad_key).
402Недостаточно средств на балансе (no_balance).
404Неизвестный сервис, заказ, аренда или конечная точка, или продукт, который сервис не предоставляет (not_sold).
409Сейчас невозможно (has_code, has_sms, too_late, not_ready, too_many_open, too_many_active, no_numbers).
429Более 300 запросов в минуту (rate_limited).
BAD_KEYОтсутствует или неверный API ключ.
BAD_ACTIONНеизвестное действие.
BAD_SERVICEНеизвестный код сервиса.
BAD_COUNTRYНе США, или сервис доступен только для аренды.
NO_BALANCEНедостаточно средств на балансе.
NO_NUMBERSСейчас нет свободных номеров. Попробуйте снова через некоторое время.
NO_ACTIVATIONНеизвестный id или он не принадлежит вам.
EARLY_CANCEL_DENIEDКод уже получен, поэтому отмена невозможна.
NO_ACTIVATIONSУже открыто 20 проверок.
TOO_MANY_REQUESTSБолее 300 запросов в минуту.

Вопросы по API

Ключи, лимиты и опросы, ответы.

Есть ли у SNSPhone API для SMS-верификации?

Да. REST API с JSON на /api/v1 для сервисов, цен, проверок и аренды, а также общий формат SMS-активации на /stubs/handler_api.php.

Как аутентифицировать запросы к API?

Создайте ключ на странице API в консоли и отправьте его как Authorization: Bearer spk_..., или как поле key. Ключи хранятся только в виде хэша и показываются один раз.

Какие лимиты у API?

300 запросов в минуту на ключ, до 20 открытых проверок и 20 активных аренд на аккаунт.

Стоят ли заказы через API дороже, чем через сайт?

Нет. API использует те же цены и те же правила возврата, что и консоль.

Как узнать, что код пришел?

Опрашивайте GET /orders/{id} каждые несколько секунд. Статус меняется с waiting на received, а поле code содержит цифры.

API для SMS-верификации с номерами США без VoIP: REST | SNSPhone