API
JSON API через HTTPS. Передавайте ключ API в заголовке Authorization. Цены, возвраты и обратный отсчёт 20 минут такие же, как на сайте.
Базовый адрес
https://today-sms.com/api/v1
Авторизация
Заголовок Authorization: Bearer YOUR_API_KEY. Создайте ключ на странице «Ключ API» после первого пополнения. До 300 запросов в минуту.
curl https://today-sms.com/api/v1/balance \ -H "Authorization: Bearer YOUR_API_KEY"
GET /balance
Ваш баланс в USD.
Пример ответа
{
"balance": "42.5000",
"currency": "USD"
}GET /apps
Сервисы, для которых сейчас есть номера: код, название, минимальная цена, страны.
Пример ответа
[
{ "app": "telegram", "name": "Telegram", "from": "0.4515", "countries": 61 }
]GET /prices?app=telegram
Страны для одного сервиса, сначала самые дешёвые: код страны, код ISO, цена, доступные номера.
Пример ответа
[
{ "country": "indonesia", "iso": "id", "price": "0.4515", "stock": 702866 }
]POST /numbers {"app":"telegram","country":"indonesia"}
Покупает номер. Сумма списывается с баланса.
Пример ответа
{
"id": 1042,
"phone": "+6281234567890",
"price": "0.4515",
"status": "waiting",
"expires_at": "2026-10-14T09:20:00Z"
}GET /numbers/{id}
Статус и все полученные на данный момент SMS.
Пример ответа
{
"id": 1042,
"status": "received",
"sms": [ { "code": "482913", "text": "Your code is 482913", "at": "2026-10-14T09:02:11Z" } ]
}POST /numbers/{id}/cancel
Отменяет номер без SMS через 120 секунд после покупки. Полный возврат.
Пример ответа
{
"id": 1042,
"status": "canceled",
"refunded": "0.4515"
}POST /numbers/{id}/finish
Закрывает номер после получения кода.
Пример ответа
{
"id": 1042,
"status": "finished"
}Статусы
| waiting | Номер готов, SMS ещё нет |
| received | Пришло хотя бы одно SMS |
| finished | Закрыт после получения кода |
| canceled | Отменён, сумма возвращена |
| expired | SMS не пришло вовремя, сумма возвращена |
| checking | Ответ поставщика неясен; если номер не появится, возврат в конце отсчёта |
Ошибки
При ошибке возвращается статус не 2xx и JSON с кодом ошибки.
{
"error": "not_enough_balance"
}| unauthorized | Ключ API не указан или неверен |
| not_allowed | API доступен после первого пополнения |
| bad_request | Обязательное поле не указано или неверно |
| no_numbers | Сейчас нет номеров для этого сервиса и страны |
| not_enough_balance | Сначала пополните баланс |
| too_many_open | Слишком много открытых номеров; завершите или отмените часть |
| too_early | Отмена доступна через 120 секунд после покупки |
| has_sms | SMS уже пришло; номер нельзя отменить |
| not_found | В вашем аккаунте нет такого номера |
| try_again | Поставщик не подтвердил отмену; попробуйте через минуту |
| rate_limited | Слишком много запросов за минуту |