API для SMS-верификации
Покупайте номера и читайте SMS-коды с помощью простых HTTP GET или POST запросов. Ответы в текстовом формате, как у распространённых инструментов SMS-активации; запросы к приватным номерам отвечают в JSON.
Начало работы
- Адрес
- https://snscodes.com/stubs/handler_api.php
- Аутентификация
- Параметр api_key. Создайте ключ на странице API вашего аккаунта; он показывается только один раз.
- Лимит запросов
- 300 запросов в минуту на один ключ
- Деньги
- Цены и баланс в долларах США, списываются с того же баланса, что и на сайте.
curl "https://snscodes.com/stubs/handler_api.php?api_key=$KEY&action=getNumber&service=telegram&country=us" # ACCESS_NUMBER:N-7KQ2M9XWD4:14155550123 curl "https://snscodes.com/stubs/handler_api.php?api_key=$KEY&action=getStatus&id=N-7KQ2M9XWD4" # STATUS_OK:482913
import time, requests
BASE = "https://snscodes.com/stubs/handler_api.php"
KEY = "YOUR_KEY"
r = requests.get(BASE, params={"api_key": KEY, "action": "getNumber", "service": "telegram", "country": "us"}).text
_, num_id, phone = r.split(":")
print("number", phone)
while True:
s = requests.get(BASE, params={"api_key": KEY, "action": "getStatus", "id": num_id}).text
if s.startswith("STATUS_OK"):
print("code", s.split(":")[1]); break
if s == "STATUS_CANCEL":
break
time.sleep(5)const BASE = "https://snscodes.com/stubs/handler_api.php";
const KEY = process.env.SNSCODES_KEY;
const call = async (q) => (await fetch(BASE + "?" + new URLSearchParams({ api_key: KEY, ...q }))).text();
const [, id, phone] = (await call({ action: "getNumber", service: "telegram", country: "us" })).split(":");
console.log("number", phone);
for (;;) {
const s = await call({ action: "getStatus", id });
if (s.startsWith("STATUS_OK")) { console.log("code", s.split(":")[1]); break; }
if (s === "STATUS_CANCEL") break;
await new Promise((r) => setTimeout(r, 5000));
}Получить баланс action=getBalance
Возвращает ваш баланс в долларах США.
ACCESS_BALANCE:42.50
BAD_KEYКлюч отсутствует или неверен.
Цены на коды action=getPrices
Цены за код по странам и сервисам. Оба фильтра необязательны.
| Параметр | Обязательно | Описание |
|---|---|---|
| service | нет | Код сервиса, например telegram |
| country | нет | us, gb или au |
{"us":{"telegram":{"cost":3,"count":100}}}Купить номер для кода action=getNumber
Покупает один номер для одного приложения. Стоимость сразу списывается с вашего баланса и возвращается, если код не пришел в течение 20 минут.
| Параметр | Обязательно | Описание |
|---|---|---|
| service | да | Код сервиса из getPrices |
| country | да | us, gb или au |
ACCESS_NUMBER:N-7KQ2M9XWD4:14155550123
BAD_SERVICEНеизвестный код сервиса.BAD_COUNTRYЭтот сервис не продается для данной страны.NO_BALANCEНедостаточно средств. Ничего не списывается.NO_NUMBERSСейчас нет доступных номеров. Ничего не списывается.NO_ACTIVATIONSУ вас уже есть 20 активных номеров для кодов.
Прочитать код action=getStatus
Опрашивайте каждые 5-10 секунд, пока не придет код.
| Параметр | Обязательно | Описание |
|---|---|---|
| id | да | ID из getNumber |
STATUS_OK:482913
STATUS_WAIT_CODESMS еще нет.STATUS_WAIT_RETRY:482913Ожидается другой код; показан последний.STATUS_CANCELОтменен или возвращен.NO_ACTIVATIONНеизвестный ID.
Отменить, повторить или завершить action=setStatus
status=8 отменяет номер без кода (полный возврат), status=3 запрашивает другой код на том же номере, status=6 завершает его.
| Параметр | Обязательно | Описание |
|---|---|---|
| id | да | ID из getNumber |
| status | да | 8, 3 или 6 |
ACCESS_CANCEL
EARLY_CANCEL_DENIEDКод уже пришел; завершите вместо отмены.ACCESS_RETRY_GETОжидается другой код.ACCESS_ACTIVATIONЗавершено.
Цены на приватные номера action=getRentPrices
Цена за весь период по странам и периодам. Возвращает JSON.
| Параметр | Обязательно | Описание |
|---|---|---|
| country | нет | Двухбуквенный код страны |
{"us":{"sixMonths":35.99,"twelveMonths":59.99}}Купить приватный номер action=getRentNumber
Покупка приватного номера на срок. Возвращает JSON.
| Параметр | Обязательно | Описание |
|---|---|---|
| country | да | Двухбуквенный код страны |
| period | да | oneMonth, threeMonths, sixMonths, twelveMonths, twoYears или threeYears |
{"status":"success","id":"N-3HV8QZ2K5M","phone":"14155550123","until":"2027-05-02T10:00:00.000Z"}BAD_PERIODДля этой страны такой срок не доступен.NO_BALANCEНедостаточно средств на балансе.
Чтение SMS приватного номера action=getRentStatus
Все SMS, полученные приватным номером на данный момент. Возвращает JSON.
| Параметр | Обязательно | Описание |
|---|---|---|
| id | да | ID из getRentNumber |
{"status":"success","state":"active","messages":[{"code":"482913","text":"Your code is 482913","from":"Telegram","at":"..."}]}Отменить приватный номер action=setRentStatus
status=2 отменяет приватный номер с полным возвратом средств, если SMS не приходило и прошло менее 20 минут.
| Параметр | Обязательно | Описание |
|---|---|---|
| id | да | ID из getRentNumber |
| status | да | 2 |
{"status":"success"}EARLY_CANCEL_DENIEDSMS пришло или прошло 20 минут.