API для разработчиков
API DaySMS совместим с протоколом SMS-Activate. Если ваша программа умеет работать с SMS-Activate, укажите адрес сервера https://daysms.ru/stubs/handler_api.php и свой ключ из личного кабинета. Цены — в рублях, списание с баланса аккаунта.
Запрос
GET https://daysms.ru/stubs/handler_api.php?api_key=КЛЮЧ&action=ДЕЙСТВИЕ&...
Методы
| action | Параметры | Ответ |
|---|---|---|
getBalance |
— | ACCESS_BALANCE:123.45 |
getNumber |
service, country, необязательно maxPrice (₽) |
ACCESS_NUMBER:ID:НОМЕР, ошибки NO_NUMBERS, NO_BALANCE, WRONG_MAX_PRICE:цена, BAD_SERVICE |
getNumberV2 |
то же | JSON: activationId, phoneNumber, activationCost, countryCode… |
getStatus |
id |
STATUS_WAIT_CODE, STATUS_OK:КОД, STATUS_CANCEL |
getStatusV2 |
id |
JSON с последним SMS: code, text, dateTime |
setStatus |
id, status: 1 — номер готов, 3 — ждать ещё SMS, 6 — завершить, 8 — отменить (возврат) |
ACCESS_READY, ACCESS_RETRY_GET, ACCESS_ACTIVATION, ACCESS_CANCEL, EARLY_CANCEL_DENIED |
getActiveActivations |
— | JSON со списком активных номеров |
getPrices |
необязательно service, country |
JSON {страна: {сервис: {cost, count}}}, цены в ₽. Ключ не нужен |
getCountries |
— | JSON со списком стран. Ключ не нужен |
getServicesList |
— | JSON со списком сервисов и кодов. Ключ не нужен |
Логика работы
1. getNumber — получаете ID и номер, деньги списываются с баланса. 2. Вводите номер в целевом сервисе. 3. Опрашиваете getStatus раз в 3–5 секунд до STATUS_OK. 4. Завершаете setStatus&status=6. Если код не пришёл — setStatus&status=8 (не раньше чем через 2 минуты), деньги вернутся на баланс; через 20 минут номер отменяется автоматически.
Лимит — 10 запросов в секунду на ключ. При превышении возвращается TOO_MANY_REQUESTS.
Пример (Python)
import requests, time
API = "https://daysms.ru/stubs/handler_api.php"
KEY = "ВАШ_КЛЮЧ"
r = requests.get(API, params={"api_key": KEY, "action": "getNumber", "service": "tg", "country": 16}).text
_, act_id, phone = r.split(":")
while True:
s = requests.get(API, params={"api_key": KEY, "action": "getStatus", "id": act_id}).text
if s.startswith("STATUS_OK"):
print("Код:", s.split(":", 1)[1]); break
time.sleep(4)
requests.get(API, params={"api_key": KEY, "action": "setStatus", "id": act_id, "status": 6})