Номера, сообщения и начисления — из вашего приложения.
SMScash
Документация API
Начало работы

Документация API

Номера, сообщения и начисления — из вашего приложения.

Начните с одного запроса

13 · Команды APIREST + handler_api.phpJSON / plain text · Bearer

Создайте API-ключ в кабинете, получите номер и проверяйте сообщения каждые 20 секунд. Вознаграждение начисляется при получении SMS с кодом; повторное чтение не влияет на баланс.

REST APIhttps://smscash.org/api/v1
Базовый URL совместимого APIhttps://smscash.org/stubs/handler_api.php
Сервис запущенПолучение номеров, SMS и начисления работают. Вывод средств доступен в USDT через сеть TRC20. Срок выплаты — от 1 до 45 дней.
Быстрый старт · REST / cURL
curl -X POST 'https://smscash.org/api/v1/activations' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: request-unique-001' \
  -d '{"service":"go","country":86}'

Альтернативный адрес совместимого интерфейса: /handler_api.php. Существующие REST-интеграции продолжают работать.

REST API

Конструктор запросов

cURL · Go · JS · Python

Idempotency-Key: UUID · POST · 8–128

Автовыбор: больше кодов за час, затем за сутки. Нет номеров — следующий оператор.

cURL
curl --max-time 15 --fail-with-body -X POST 'https://smscash.org/api/v1/activations' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: request-unique-001' \
  --data '{"service":"go","country":86}'

Ключ не сохраняется. Проверка не выдаёт номера.

REST для новых интеграций

Сервисы и страны

Выберите сервис и страну. Оплата за SMS зависит от страны.

REST
GET /api/v1/catalog?service=go&country=86&page=1&page_size=100
Authorization: Bearer YOUR_API_KEY
JSON
{
  "rows": [
    {
      "offer_id": 42,
      "service": "go",
      "service_name": "Google",
      "country_id": 86,
      "country_name": "Italy",
      "provider_id": 1,
      "operator": 1,
      "provider_name": "Operator 1",
      "reward": "0.00300000",
      "currency": "USD",
      "accounting_precision": 8,
      "earnings_hold_days": 45
    }
  ],
  "page": 1,
  "page_size": 100,
  "total": 1,
  "pages": 1,
  "has_more": false,
  "accounting_precision": 8
}

service · country · operator · q · page · page_size (1–100)

Получить номер
REST
POST /api/v1/activations
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Idempotency-Key: request-unique-001

{
  "service": "go",
  "country": 86
}

Автовыбор: больше кодов за час, затем за сутки. Нет номеров — следующий оператор.

REST
201: new session · 200: replay of the same operation
service + country OR offer_id · duration_minutes: 20
ref: software owner code (optional)
operator: public ID (e.g. 1 for Operator 1), optional · any/0: automatic
country: integer · service: string · SMS code: string

Номер действует 20 минут. Проверка SMS — каждые 20 секунд. Отмена доступна сразу.

Проверка нескольких номеров
REST
GET /api/v1/activations/batch?ids=42,43
Authorization: Bearer YOUR_API_KEY
JSON
{
  "rows": [
    {
      "id": 42,
      "found": true,
      "phone": "12025550123",
      "status": "received",
      "service": "go",
      "country_id": 86,
      "provider_id": 1,
      "operator": 1,
      "expires_at": "2026-10-10T12:15:00Z",
      "sms_count": 1,
      "code": "001234",
      "last_sms": {
        "id": 101,
        "code": "001234",
        "sender": "Service",
        "text": "Code: 001234",
        "received_at": "2026-10-10T12:01:00Z"
      }
    },
    {
      "id": 43,
      "found": false,
      "error": {
        "code": "NO_ACTIVATION",
        "message": "Session not found."
      }
    }
  ],
  "as_of": "2026-10-10T12:01:00Z",
  "poll_interval_seconds": 20
}
REST
ids: 1–100 positive session IDs, separated by commas
Input order preserved · duplicates removed
Foreign, unavailable or out-of-scope IDs: found=false
Read only · no supplier requests · last_sms is the latest message
Баланс · В холде
REST
GET /api/v1/balance
Authorization: Bearer YOUR_API_KEY
JSON
{
  "currency": "USD",
  "accounting_precision": 8,
  "balance": "12.00000000",
  "held_balance": "34.50000001",
  "balance_minor": "1200000000",
  "held_minor": "3450000001",
  "as_of": "2026-10-12T20:00:00Z",
  "next_release_at": "2026-11-26T20:00:00Z"
}

balance — Доступно; held_balance — В холде. USD · 8

Вывести можно только средства, у которых завершён холд.

Готовые клиенты

JavaScript · Node.js 18+
import {SmScash, SmScashError} from './smscash.mjs';
import {randomUUID} from 'node:crypto';

const api = new SmScash(process.env.SMSCASH_API_KEY);
const catalog = await api.catalog({service: 'go', country: 86});
console.log(catalog.rows);

// Save this key before sending; keep it for retries of this operation.
const requestKey = randomUUID();
const session = await api.createNumber({service: 'go', country: 86}, requestKey);
// After 20 seconds:
const messages = await api.sms(session.id, {afterId: 0});
console.log(messages.sms);
const statuses = await api.batch([session.id]);
const held = await api.holdBalance();
console.log(held); // Exact USD string
Python 3.9+
import os
import uuid
from smscash import SmScash, SmScashError

api = SmScash(os.environ['SMSCASH_API_KEY'])
catalog = api.catalog(service='go', country=86)
print(catalog['rows'])

# Save this key before sending; keep it for retries of this operation.
request_key = str(uuid.uuid4())
session = api.create_number({'service': 'go', 'country': 86}, request_key)
# After 20 seconds:
messages = api.sms(session['id'], after_id=0)
print(messages['sms'])
statuses = api.batch([session['id']])
held = api.hold_balance()
print(held) # Exact USD string
SDK
me() · balance() · holdBalance()/hold_balance() · catalog() · activation() · sms() · batch()
createNumber(parameters, requestKey) / create_number(parameters, request_key)
setStatus(id, "cancel") / set_status(id, "cancel")
setStatus(id, "retry", requestKey) / set_status(id, "retry", request_key)
Timeout: 15 s · no dependencies · no automatic retries
Error: code · status · hint · requestId/request_id · retryable
ALLOCATION_UNCERTAIN: contact support with request_id; never retry automatically.

SMS-Activate / HeroSMS

SMS-Activate · Базовый URL совместимого APIhttps://smscash.org/sms-activate/stubs/handler_api.php
HeroSMS · Базовый URL совместимого APIhttps://smscash.org/hero-sms/stubs/handler_api.php

Личный API-ключ пользователя.

Выберите сервис и страну. Оплата за SMS зависит от страны.

КодОписание
getNumber / getNumberV2Получить номер
getStatus / getStatusV2Получить последний код
setStatus / finishActivation / cancelActivationУправлять сессией
getPrices / getNumbersStatusПроверить наличие
getRewards (SMScash)Вознаграждение за SMS
getServicesList / getServicesСервисы
getCountries / getOperatorsСервисы и страны
getActiveActivationsСессии
getBalanceБаланс пользователя
getHoldBalance (SMScash)В холде

cost = 0 USD · activationCost = 0 USD
reward — Вознаграждение за SMS

HeroSMS · cURL
curl --get 'https://smscash.org/hero-sms/stubs/handler_api.php' \
  --data-urlencode 'api_key=YOUR_API_KEY' \
  --data-urlencode 'action=getNumberV2' \
  --data-urlencode 'service=go' \
  --data-urlencode 'country=86' \
  -H 'Idempotency-Key: request-unique-001'
Ответы
{
  "activationId": "42",
  "phoneNumber": "393331234567",
  "activationCost": 0,
  "currency": 840,
  "countryCode": 86,
  "canGetAnotherSms": true,
  "activationTime": "2026-10-11T12:00:00Z",
  "activationEndTime": "2026-10-11T12:15:00Z",
  "reward": "0.00300000"
}
SMS-Activate / HeroSMS
GET or POST application/x-www-form-urlencoded
api_key · action · service · country · ref (optional)
setStatus: 1 → ACCESS_READY · 3 → ACCESS_RETRY_GET
           6 → ACCESS_ACTIVATION · 8 → ACCESS_CANCEL
getStatus: STATUS_WAIT_CODE · STATUS_OK:001234 · STATUS_CANCEL
getStatusV2: {"verificationType":1,"sms":null,"call":null}
getServicesList: {"status":"success","services":[{"code":"go","name":"Google"}]}
getCountries: {"86":{"id":86,"eng":"Italy","visible":1,"retry":1,"rent":0}}
getPrices: {"86":{"go":{"cost":0,"count":12,"reward":"0.00300000","currency":"USD"}}}
getRewards: {"59":{"vi":{"1":"0.01000000"}}}
getRewards filters: country · service · operator (optional); any/0: all permitted providers
getActiveActivations: start=0 · limit=1–100 · activeActivations / data
Business/key errors: HTTP 200 + plain text · server errors: HTTP 500
Availability: actual supplier pool, shared cache up to 20 s; not a reservation
No automatic retries after a transport error or ALLOCATION_UNCERTAIN.
Keep the original Idempotency-Key and parameters.
Unsupported: rent · calls · forwarding · multiple services per number · prolong
Unsupported options return BAD_REQUEST; unsupported actions return BAD_ACTION.
SMScash keys and country/service codes; configure this base URL in your software.

Номер действует 20 минут. Проверка SMS — каждые 20 секунд. Отмена доступна сразу.

Авторизация и повторы

REST: заголовок Authorization: Bearer YOUR_API_KEY. Совместимый интерфейс: параметры api_key и action. Используйте HTTPS.

Для управления API-ключами войдите в кабинет.

∞запросов / мин на аккаунт
∞одновременных сессий

Частота запросов и количество номеров не ограничены. Суточных и часовых квот нет.

Номер действует 20 минут. Проверка SMS — каждые 20 секунд. Отмена доступна сразу.

В REST уникальный Idempotency-Key обязателен при выдаче, повторной выдаче, retry и заявке на выплату. В handler_api.php он необязателен, но рекомендуется. При сетевом повторе сохраняйте ключ; для новой операции создавайте новый.

Область API-ключа

Ключ можно привязать к сервисам, странам и поставщикам. Пустые списки разрешают все доступные варианты.

JSON
{
  "label": "Мой софт",
  "policy": {
    "services": [
      "go"
    ],
    "countries": [
      86
    ],
    "providers": [
      1
    ]
  }
}

PATCH /api/v1/keys/{id} меняет имя и policy целиком. Секрет показывается только при создании.

10% суммарно. 5% + 5% с кодом софта.

При выдаче номера передавайте ref владельца софта. Запрос авторизуется ключом пользователя. Код находится в разделе «Рефералы» и в GET /api/v1/referrals → software_ref.

ЗапросПригласившемуСофт
Без ref10%—
С ref5%5%
С ref, пригласившего нет—5%

Бонус платит платформа, доход пользователя не уменьшается. Владелец софта и пригласивший могут совпадать. Собственный код пользователя недопустим.

Условия фиксируются при создании сессии; чтение SMS и retry их не меняют. В новой повторной сессии ref передаётся заново. В расчёте тарифа при 0,003 USD пользователю софт и пригласивший получают по 0,00015 USD. Общий бонус — 0,00030 USD.

Команды API

11 методов по образцу XVBC и баланс SMScash.

GETgetNumberПолучить номер

Создаёт сессию и закрепляет свободный номер за пользователем. Тариф и получатели реферальных долей фиксируются при выдаче, а вознаграждение начисляется после получения SMS с кодом.

Параметры

ПараметрТипОписание
api_key*stringЛичный API-ключ пользователя.
service*stringДоступные коды сервисов. Ответ ограничен областью API-ключа.
country*integerВозьмите ID из getCountries.
operatorstringВозьмите ID из operators/getOperators (API). operator=1 · any/0
session_durationintegerСрок сессии — 20 минут. Передайте 20 или пропустите параметр.
with_operatorinteger1 добавляет ID оператора в ответ; 0 или отсутствие — три сегмента.
refstringПубличный код владельца софта: 5% ему и 5% пригласившему. Без ref — 10% пригласившему.

* Обязательный параметр. Во всех запросах также передавайте action=getNumber.

Пример запроса

curl
curl 'https://smscash.org/stubs/handler_api.php?action=getNumber&api_key=YOUR_API_KEY&service=go&country=86&with_operator=1' \
  -H 'Idempotency-Key: request-unique-001'

Ответы

Номер выдан
ACCESS_NUMBER:42:380670000000:1
Нет свободных номеров
EMPTY_POOL
  • Автовыбор: больше кодов за час, затем за сутки. Нет номеров — следующий оператор.
  • Передавайте Idempotency-Key: одинаковый запрос с тем же ключом возвращает прежнюю сессию. Изменение параметров вызывает IDEMPOTENCY_CONFLICT.
  • Числовая страна без пула даёт EMPTY_POOL; ошибочный формат country — BAD_COUNTRY.
  • Ключ удалённой сессии остаётся использованным: повтор выдачи с этим ключом возвращает SESSION_CLOSED и не выдаёт новый номер.
  • Результат выдачи не подтверждён. Автоматический повтор отключён, чтобы не выдать второй номер.
GETgetNumbersStatusПроверить наличие

Количество доступных номеров по сервисам и стране.

Параметры

ПараметрТипОписание
api_key*stringЛичный API-ключ пользователя.
country*integerВозьмите ID из getCountries.

* Обязательный параметр. Во всех запросах также передавайте action=getNumbersStatus.

Пример запроса

curl
curl 'https://smscash.org/stubs/handler_api.php?action=getNumbersStatus&api_key=YOUR_API_KEY&country=86'

Ответы

Свободные номера
{
  "go_0": 0
}
  • Суффикс _0 означает выбор без конкретного оператора.
  • Наличие относится к общему пулу поставщика. Доступность выбранного канала проверяется при выдаче номера.
GETgetStatusПолучить последний код

Лёгкий запрос состояния сессии и последнего SMS-кода. Начальные нули в коде сохраняются.

Параметры

ПараметрТипОписание
api_key*stringЛичный API-ключ пользователя.
id*integerID вашей сессии, полученный при выдаче номера.

* Обязательный параметр. Во всех запросах также передавайте action=getStatus.

Пример запроса

curl
curl 'https://smscash.org/stubs/handler_api.php?action=getStatus&api_key=YOUR_API_KEY&id=42'

Ответы

Ожидание
STATUS_WAIT_CODE
Код получен
STATUS_OK:001234
Отмена или истечение
STATUS_CANCEL
Не найдено
NO_ACTIVATION
  • Опрашивайте раз в 20 секунд. Повторное чтение не начисляет деньги.
  • После retry старый код не возвращается: getStatus ждёт следующее SMS.
  • После удаления номера без SMS getStatus и getSms возвращают STATUS_CANCEL, getSmsFull — закрытый статус, пустой phone и пустой sms. REST /activations/{id} и /sms возвращают 404 NO_ACTIVATION.
GETsetStatusУправлять сессией

Завершает, отменяет или возобновляет ожидание SMS. Срок сессии остаётся прежним.

Параметры

ПараметрТипОписание
api_key*stringЛичный API-ключ пользователя.
id*integerID вашей сессии, полученный при выдаче номера.
status*integer3 — ждать следующий код без продления; 6 — завершить после SMS; 8 — отменить сразу.

* Обязательный параметр. Во всех запросах также передавайте action=setStatus.

Пример запроса

curl
curl 'https://smscash.org/stubs/handler_api.php?action=setStatus&api_key=YOUR_API_KEY&id=42&status=3' \
  -H 'Idempotency-Key: request-unique-001'

Ответы

Ожидание SMS
ACCESS_RETRY_GET
Завершена
ACCESS_ACTIVATION
Отменена
ACCESS_CANCEL
  • Retry ждёт следующий код в пределах исходных 20 минут. Время выдачи и истечения не меняется.
  • Для status=3 используйте Idempotency-Key: повтор запроса не сбросит уже полученный новый код. История SMS остаётся доступна.
  • Отмена не списывает уже заработанные средства.
  • В истории сохраняются только номера с SMS-кодом. Отменённые и истёкшие номера без кода удаляются.
GETgetRepeatNumberВыдать прежний номер снова

Открывает новую сессию с конкретным номером из вашей истории. Можно выбрать другой доступный сервис той же страны.

Параметры

ПараметрТипОписание
api_key*stringЛичный API-ключ пользователя.
number*stringВаш прежний номер. Допустимы только цифры и необязательный начальный +.
service*stringДоступные коды сервисов. Ответ ограничен областью API-ключа.
session_durationintegerСрок сессии — 20 минут. Передайте 20 или пропустите параметр.
with_operatorinteger1 добавляет ID оператора в ответ; 0 или отсутствие — три сегмента.
refstringПубличный код владельца софта: 5% ему и 5% пригласившему. Без ref — 10% пригласившему.
operatorstringВозьмите ID из operators/getOperators (API). operator=1 · any/0

* Обязательный параметр. Во всех запросах также передавайте action=getRepeatNumber.

Пример запроса

curl
curl 'https://smscash.org/stubs/handler_api.php?action=getRepeatNumber&api_key=YOUR_API_KEY&number=380670000000&service=go' \
  -H 'Idempotency-Key: request-unique-001'

Ответы

Новая сессия
ACCESS_NUMBER:43:380670000000
Номер ещё занят
NUMBER_IN_USE
  • Сначала завершите или отмените текущую сессию. При занятом номере повторная выдача не выполняется.
  • Новая сессия получает новый ID и текущий тариф. Старые SMS в неё не копируются. ref задаётся заново.
  • SMScash разрешает повтор только номеров из истории этого аккаунта. Страна определяется по номеру.
  • Ключ удалённой сессии остаётся использованным: повтор выдачи с этим ключом возвращает SESSION_CLOSED и не выдаёт новый номер.
GETgetSmsFullПолучить SMS в JSON

Структурированная история всех сообщений с ID, отправителем, кодом, текстом и данными страны, сервиса и поставщика.

Параметры

ПараметрТипОписание
api_key*stringЛичный API-ключ пользователя.
id*integerID вашей сессии, полученный при выдаче номера.

* Обязательный параметр. Во всех запросах также передавайте action=getSmsFull.

Пример запроса

curl
curl 'https://smscash.org/stubs/handler_api.php?action=getSmsFull&api_key=YOUR_API_KEY&id=42'

Ответы

JSON
{
  "success": true,
  "session_id": 42,
  "phone": "380670000000",
  "status": 1,
  "status_name": "received",
  "sms_count": 1,
  "sms": [
    {
      "id": 101,
      "external_id": "message-101",
      "sender": "Service",
      "code": "001234",
      "text": "Код подтверждения: 001234",
      "received_at": "2026-10-09T12:00:00Z",
      "country": {
        "id": 86,
        "name": "Italy"
      },
      "service": {
        "code": "go",
        "name": "Google"
      },
      "provider": {
        "id": 1,
        "name": "Оператор 1"
      }
    }
  ],
  "expires_at": "2026-10-09T12:20:00Z"
}
  • Предпочтительный формат для интеграции. Запоминайте sms[].id, чтобы обрабатывать только новые сообщения.
  • Числовой status SMScash: 1 — активна, 6 — завершена, 8 — отменена или истекла. status_name различает waiting, received, finished, canceled, expired.
  • История полученных кодов доступна после закрытия сессии. Для большого потока используйте REST /activations/{id}/sms с after_id.
  • После удаления номера без SMS getStatus и getSms возвращают STATUS_CANCEL, getSmsFull — закрытый статус, пустой phone и пустой sms. REST /activations/{id} и /sms возвращают 404 NO_ACTIVATION.
GETgetSmsПолучить SMS текстовой строкой

Возвращает всю историю SMS в строковом формате для существующих клиентов.

Параметры

ПараметрТипОписание
api_key*stringЛичный API-ключ пользователя.
id*integerID вашей сессии, полученный при выдаче номера.

* Обязательный параметр. Во всех запросах также передавайте action=getSms.

Пример запроса

curl
curl 'https://smscash.org/stubs/handler_api.php?action=getSms&api_key=YOUR_API_KEY&id=42'

Ответы

Сообщение
STATUS_OK:2026-10-09T12:00:00Z|001234|Код подтверждения: 001234
Ожидание
STATUS_WAIT_CODE
Отмена или истечение
STATUS_CANCEL
  • Формат сообщения: время|код|текст. Несколько сообщений разделяются двоеточием.
  • Текст SMS сам может содержать двоеточия и вертикальные черты. Для надёжного разбора используйте getSmsFull.
GETgetServicesСервисы

Доступные коды сервисов. Ответ ограничен областью API-ключа.

Параметры

ПараметрТипОписание
api_key*stringЛичный API-ключ пользователя.
countryintegerВозьмите ID из getCountries.

* Обязательный параметр. Во всех запросах также передавайте action=getServices.

Пример запроса

curl
curl 'https://smscash.org/stubs/handler_api.php?action=getServices&api_key=YOUR_API_KEY'

Ответы

Сервисы
{
  "go": {
    "name": "Google",
    "code": "go"
  }
}
  • Справочник сервисов общий для поставщика. Наличие номеров проверяется отдельно.
GETgetCountriesСтраны

ID, название и телефонный префикс стран выбранного канала.

Параметры

ПараметрТипОписание
api_key*stringЛичный API-ключ пользователя.

* Обязательный параметр. Во всех запросах также передавайте action=getCountries.

Пример запроса

curl
curl 'https://smscash.org/stubs/handler_api.php?action=getCountries&api_key=YOUR_API_KEY'

Ответы

Страны
{
  "86": {
    "id": 86,
    "name": "Italy",
    "phone_code": "39"
  }
}
GETgetOperatorsОператоры

Доступные операторы: ID для API, название и срок холда.

Параметры

ПараметрТипОписание
api_key*stringЛичный API-ключ пользователя.
countryintegerВозьмите ID из getCountries.
operatorstringВозьмите ID из operators/getOperators (API). operator=1 · any/0

* Обязательный параметр. Во всех запросах также передавайте action=getOperators.

Пример запроса

curl
curl 'https://smscash.org/stubs/handler_api.php?action=getOperators&api_key=YOUR_API_KEY'

Ответы

Операторы
{
  "1": {
    "id": 1,
    "provider_id": 1,
    "operator": 1,
    "name": "Оператор 1",
    "earnings_hold_days": 45
  }
}
  • Возьмите ID из operators/getOperators (API).
GETgetRewardsВознаграждение за SMS

Цена зависит от страны. Все суммы в таблице — за одно оплаченное SMS.

Параметры

ПараметрТипОписание
api_key*stringЛичный API-ключ пользователя.
countryintegerВозьмите ID из getCountries.
servicestringДоступные коды сервисов. Ответ ограничен областью API-ключа.
operatorstringВозьмите ID из operators/getOperators (API). operator=1 · any/0

* Обязательный параметр. Во всех запросах также передавайте action=getRewards.

Пример запроса

curl
curl 'https://smscash.org/stubs/handler_api.php?action=getRewards&api_key=YOUR_API_KEY&country=59&service=vi'

Ответы

JSON
{
  "59": {
    "vi": {
      "1": "0.01000000",
      "3": "0.00500000"
    }
  }
}
{}
{}
  • Тарифы в USD передаются точными строками с 8 знаками после точки:
  • Включённые поставщики, доступные вашему ключу.
  • country ID → service code → operator ID → reward (USD)
GETgetBalanceБаланс пользователя

Дополнение SMScash: доступный баланс с учётом начислений, реферальных бонусов и заявок на выплату.

Параметры

ПараметрТипОписание
api_key*stringЛичный API-ключ пользователя.

* Обязательный параметр. Во всех запросах также передавайте action=getBalance.

Пример запроса

curl
curl 'https://smscash.org/stubs/handler_api.php?action=getBalance&api_key=YOUR_API_KEY'

Ответы

Баланс
ACCESS_BALANCE:0.00
  • getBalance возвращает доступный баланс в USD с точностью до 8 знаков.
  • Вывести можно только средства, у которых завершён холд.
GETgetHoldBalanceВ холде

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

Параметры

ПараметрТипОписание
api_key*stringЛичный API-ключ пользователя.

* Обязательный параметр. Во всех запросах также передавайте action=getHoldBalance.

Пример запроса

curl
curl 'https://smscash.org/stubs/handler_api.php?action=getHoldBalance&api_key=YOUR_API_KEY'

Ответы

В холде
ACCESS_HOLD_BALANCE:34.50000001
  • SMScash · getHoldBalance · USD · 8
  • Вывести можно только средства, у которых завершён холд.

Коды ответа и повторные запросы

В handler_api.php бизнес-исходы обычно приходят с HTTP 200. Проверяйте текст тела. Справочники и getSmsFull при успехе возвращают JSON; ошибки всегда текстовые.

КодHTTPПричина и действие
TARIFF_NOT_CONFIGURED200Тарифы ещё не заданыВыдача номеров начнётся после настройки вознаграждения за SMS.
COUNTRY_BLOCKED200Получение номеров этой страны заблокировано.Выберите другую страну.
BAD_SERVICE200Этот сервис заблокирован для получения номеров.Выберите другой сервис.
PROVIDER_NOT_READY200Выдача номеров временно недоступнаОбновите справочники.
BAD_KEY400Нет api_key или неверный формат.Проверьте ключ в запросе.
INVALID_API_KEY401Ключ неизвестен, отозван или аккаунт отключён.Выпустите действующий ключ.
BAD_COUNTRY400country отсутствует или не является положительным числом.Возьмите ID из getCountries.
BAD_SESSION_DURATION400Номер выдаётся ровно на 20 минут.Исправьте session_duration.
BAD_REQUEST400Некорректный параметр или Idempotency-Key.Исправьте запрос.
BAD_SERVICE / BAD_OPERATOR / INVALID_PROVIDER200Неизвестный или отключённый элемент каталога.Обновите справочники.
BAD_NUMBER200Неправильный формат номера.Передайте номер цифрами.
BAD_ACTION / BAD_STATUS200Неизвестная команда, ID или операция.Проверьте параметры.
EMPTY_POOL200Подходящих свободных номеров сейчас нет.Повторите через 10–30 секунд или смените фильтры.
NUMBER_IN_USE200Конкретный номер занят активной сессией.Завершите свою сессию либо выберите другой номер.
NO_ACTIVATION200Сессия или прежний номер не принадлежат вашему аккаунту.Проверьте ID и ключ.
SESSION_CLOSED / SMS_REQUIRED200Переход состояния сейчас недоступен.Проверьте состояние и наличие SMS.
SCOPE_BLOCKED200Сервис, страна или поставщик не разрешены ключу.Исправьте область ключа.
IDEMPOTENCY_CONFLICT200Этот ключ запроса уже связан с другими параметрами.Для новой операции создайте другой Idempotency-Key.
BAD_REF / SELF_REF400Код софта неизвестен, отключён или принадлежит самому пользователю.Передайте код владельца софта.
INTERNAL_ERROR500Временная ошибка сервера или поставщика.Повторите с задержкой и тем же Idempotency-Key.
ALLOCATION_PENDING200Запрос выдачи уже выполняется. Повторите с прежним Idempotency-Key.Запрос выдачи уже выполняется. Повторите с прежним Idempotency-Key.
ALLOCATION_UNCERTAIN200Результат выдачи не подтверждён. Автоматический повтор отключён, чтобы не выдать второй номер.Результат выдачи не подтверждён. Автоматический повтор отключён, чтобы не выдать второй номер.

REST возвращает объект {"error":{"code":"…","message":"…"}} и обычные HTTP-статусы 400/401/403/404/409/503.

JSON
{
  "error": {
    "code": "BAD_REQUEST",
    "message": "Проверьте поля запроса.",
    "request_id": "req_…",
    "hint": "Use the documented JSON type; numbers must not be quoted.",
    "retryable": false,
    "details": {
      "field": "country",
      "expected": "integer"
    }
  }
}
REST
X-Request-ID: included in every API response
405: Allow lists the supported HTTP methods
ALLOCATION_PENDING: retryable=true · Retry-After=3 · same operation key
ALLOCATION_UNCERTAIN: retryable=false · contact support
Transport errors: check the operation before another write; keep the original key.

REST для новых интеграций

Тарифы в USD передаются точными строками с 8 знаками после точки: 0.00300000 USD.

Валюта баланса — USD. Схемы запросов и ответов находятся в OpenAPI.

Вывод в USDT · TRC20Срок выплаты — от 1 до 45 дней. Комиссия за вывод — 4 $. Она удерживается из суммы заявки. После получения SMS начисление уходит в холд на срок поставщика. В указанную дату сумма автоматически становится доступной для вывода. Вывести можно только средства, у которых завершён холд.
GET/api/v1/catalogСервисы и страны
GET/api/v1/tariffsВознаграждение за SMS по странам
GET/api/v1/offersТарифы и вознаграждения
GET/api/v1/servicesСправочник
GET/api/v1/countriesСправочник
GET/api/v1/operatorsСправочник
GET/api/v1/availability?country=1Наличие номеров
POST/api/v1/activationsНовая сессия
GET/api/v1/activations/batch?ids=42,43Проверка нескольких номеров
GET/api/v1/activationsПоследние 200 сессий: scope=history, waiting или all
GET/api/v1/activations/{id}Сессия и сообщения
GET/api/v1/activations/{id}/sms?after_id=0&limit=100Новые SMS с курсором
POST/api/v1/activations/{id}/retryОжидание SMS
POST/api/v1/activations/{id}/finishЗавершение
POST/api/v1/activations/{id}/cancelОтмена
POST/api/v1/activations/repeatПовторная выдача номера
GET/api/v1/keysAPI-ключи
POST/api/v1/keysСоздать ключ
PATCH/api/v1/keys/{id}Изменить имя или policy
DELETE/api/v1/keys/{id}Отозвать ключ
GET/api/v1/referralsРеферальный код и доходы
GET/api/v1/summaryБаланс и сводка
GET/api/v1/balanceВ холде
GET/api/v1/ledgerЖурнал начислений
GET/api/v1/withdrawalsЗаявки на выплату
POST/api/v1/withdrawalsСоздать заявку
GET/api/v1/statisticsОбщая статистика
GET/api/v1/earnings/holdsХолд начислений

Получение только новых SMS

REST
GET /api/v1/activations/42/sms?after_id=0&limit=100
Authorization: Bearer YOUR_API_KEY
JSON
{
  "session_id": 42,
  "sms": [
    {
      "id": 101,
      "code": "001234",
      "text": "Код: 001234",
      "sender": "Service",
      "received_at": "2026-10-09T12:00:00Z"
    }
  ],
  "next_cursor": 101,
  "has_more": false
}

Сохраняйте next_cursor и передавайте его как after_id. Если has_more=true, следующую страницу можно читать сразу. limit: 1–200. Сессии и SMS доступны только владельцу.