Developer API · v1.0

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

Активации и аренда виртуальных номеров: цены, покупка, SMS-коды, баланс и webhook о входящих SMS.

Серверhttps://simdrop.io/api/v1
АутентификацияX-Api-Key: sdk_YOUR_API_KEY
Валюты?currency=RUB|USD

#Введение

Developer API даёт программный доступ к активациям и аренде виртуальных номеров Simdrop: цены, покупка, получение SMS-кодов, история, баланс и webhook о входящих SMS. Это REST API поверх HTTPS с JSON-телами: понятные строковые статусы, цены в вашей валюте и флаги доступных действий у каждой активации.

Базовый URL

text
https://simdrop.io/api/v1

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

  • Создайте API-ключ в кабинете (страница «API»). Ключ показывается один раз — сохраните его.
  • Запросите цены: GET /prices?service=tg — в ответе priceId для каждого ценового уровня.
  • Купите номер: POST /activations с service, country и priceId (или maxPrice).
  • Дождитесь кода: укажите webhook в кабинете (придёт POST с кодом) или опрашивайте GET /activations/{id} раз в 3–5 секунд.
  • Завершите активацию POST /activations/{id}/finish (или отмените DELETE, если код не пришёл, — деньги вернутся).
Минимальный пример
# 1. цены
curl 'https://simdrop.io/api/v1/prices?service=tg&country=0' -H 'X-Api-Key: sdk_...'

# 2. покупка
curl -X POST 'https://simdrop.io/api/v1/activations' \
  -H 'X-Api-Key: sdk_...' -H 'Content-Type: application/json' \
  -d '{"service":"tg","country":0,"maxPrice":30}'

# 3. код
curl 'https://simdrop.io/api/v1/activations/3051287731' -H 'X-Api-Key: sdk_...'

#Аутентификация

Каждый запрос подписывается API-ключом в заголовке X-Api-Key (альтернатива — Authorization: Bearer <key>). Передавать ключ в query-строке нельзя: он попадёт в логи прокси и историю браузера.

http
GET /api/v1/account/balance HTTP/1.1
Host: simdrop.io
X-Api-Key: sdk_2f9c1e...
Accept-Language: ru

Несколько ключей и права

В кабинете можно создать до 5 ключей — например, отдельный ключ для каждого сервера или бота. У каждого ключа свои права (scopes), список разрешённых IP, валюта по умолчанию и срок действия. Ключ можно перевыпустить (старый перестаёт работать сразу) или отозвать.

ScopeДаёт доступ к
readсправочники, цены, баланс, история, чтение активаций и SMS
activationsпокупка, отмена, завершение, повтор SMS, замена, реактивация
rentаренда номеров и продление

Рекомендации по безопасности

  • Ограничьте ключ IP-адресами ваших серверов (allowlist) — запросы с других IP получат 403 IP_NOT_ALLOWED.
  • Выдавайте минимальные права: для мониторинга баланса достаточно read.
  • Ставьте срок действия временным ключам и ротируйте ключи при утечке.
  • В кабинете по каждому ключу виден журнал последних 50 запросов (метод, путь, статус, IP) — удобно для отладки и контроля.

#Валюты и цены

Баланс аккаунта ведётся в рублях. Все суммы в ответах API (цены, баланс, операции) можно получать в RUB или USD: добавьте параметр ?currency=USD к любому запросу либо задайте валюту по умолчанию для ключа в кабинете. Поле currency в каждом объекте с суммой показывает, в какой валюте выражено число.

  • USD пересчитывается по курсу USDT/RUB (CoinGecko, кэш 5 минут). Текущий курс — в GET /account/balance?currency=USD (usdRubRate).
  • Округление: RUB — 2 знака, USD — 4 знака.
  • maxPrice при покупке интерпретируется в валюте запроса.
  • Если курс временно недоступен, а запрошен USD, придёт 503 EXCHANGE_RATE_UNAVAILABLE — повторите или используйте RUB.
  • Пополнение баланса — в кабинете, всегда в рублях.
bash
curl 'https://simdrop.io/api/v1/prices?service=tg&country=0&currency=USD' -H 'X-Api-Key: sdk_...'

#Формат ответов и ошибки

Успешный ответ всегда обёрнут в объект с полем data. Для списков добавляется meta с пагинацией (page начинается с 1, size ≤ 100).

json
{
  "data": [
    {
      "id": 3051287731,
      "status": "WAITING"
    }
  ],
  "meta": {
    "page": 1,
    "size": 25,
    "total": 1,
    "hasMore": false
  }
}

Ошибка — объект с машинным кодом error (стабильный контракт), человекочитаемым message (язык по заголовку Accept-Language: ru или en) и необязательными details.

json
{
  "error": "NO_NUMBERS",
  "message": "No numbers available right now. Try another price tier, operator or country",
  "details": {
    "service": "tg",
    "country": 0
  }
}
HTTPКодКогда
400BAD_REQUEST, INVALID_CURRENCY, INVALID_PRICEНекорректные параметры
401UNAUTHORIZED, KEY_EXPIREDНет ключа, ключ отозван или истёк
402INSUFFICIENT_FUNDSНе хватает баланса
403IP_NOT_ALLOWED, INSUFFICIENT_SCOPE, API_ACCESS_DISABLED, PURCHASE_BLOCKEDДоступ запрещён
404ACTIVATION_NOT_FOUND, OFFER_NOT_FOUND, WEBHOOK_NOT_FOUND, NOT_FOUNDОбъект не найден
409NO_NUMBERS, NO_OFFER_UNDER_MAX_PRICE, ACTIVE_LIMIT_REACHED, PURCHASE_IN_PROGRESS, COUNTRY_BLOCKED, SERVICE_UNAVAILABLE, CANCEL_TOO_EARLY, CANCEL_NOT_ALLOWED, FINISH_NOT_ALLOWED, RETRY_NOT_AVAILABLE, REPLACE_NOT_AVAILABLE, REACTIVATION_UNAVAILABLE, PROLONG_UNAVAILABLE, NOT_A_RENTКонфликт состояния — действие сейчас невозможно
422VALIDATION_ERRORОшибка валидации полей (details.fields)
429RATE_LIMITEDЛимит запросов, см. Retry-After
502 / 503PROVIDER_ERROR, EXCHANGE_RATE_UNAVAILABLEВременные проблемы — повторите позже
infoДаты — ISO 8601 в UTC (2026-09-13T20:41:12Z). Идентификаторы активаций — 64-битные целые: в JavaScript читайте их как числа осторожно или используйте BigInt.

#Лимиты запросов

Лимиты защищают вас и нас от случайных циклов и злоупотреблений. Они считаются в Redis и действуют на все реплики API одновременно.

УровеньЛимитПрименяется к
На ключ120 запросов / минутувсем запросам с ключом
Покупки20 / минуту и 1500 / часPOST /activations, /rent, replace, reactivate, prolong
Тяжёлые справочники40 / минутуGET /prices, /rent/prices, /services, /rent/services, /operators
На IP600 / минутувсем запросам с адреса, независимо от ключа
Перебор ключей20 неудачных авторизаций / 10 минутневалидным ключам с одного IP

Каждый ответ содержит X-RateLimit-Limit и X-RateLimit-Remaining (общий лимит ключа). При 429 приходит Retry-After в секундах — подождите и повторите. Кроме того, действует лимит одновременно активных активаций на аккаунт — от 10 до 100 в зависимости от ранга (ACTIVE_LIMIT_REACHED) и одна покупка за раз (PURCHASE_IN_PROGRESS).

warning_amberНе опрашивайте активацию чаще раза в 3 секунды. Лучший вариант — вебхуки: код придёт вам в момент получения без единого лишнего запроса.
infoСправочники и цены (/countries, /services, /operators, /prices, /rent/*) кэшируются на нашей стороне на 45–300 секунд. Поэтому количество доступных номеров может обновляться с небольшой задержкой — это нормально; при покупке цена и наличие всегда проверяются по факту.

#Статусы и жизненный цикл

СтатусЗначение
WAITINGНомер выдан, ждём SMS
WAITING_RETRYЗапрошено ещё одно SMS
RECEIVEDКод получен, активацию можно завершить
FINISHEDЗавершена (подтверждена вами или истекла с полученным кодом)
CANCELLEDОтменена, деньги возвращены (в т.ч. истекла без SMS)
REPLACEDНомер заменён — работайте с новой активацией

Правила

  • Разовая активация живёт 20 минут. Если SMS не пришло — она отменяется автоматически с возвратом средств.
  • Отмена (DELETE) возможна через 2 минуты после покупки и только пока код не получен.
  • Замена номера (replace) бесплатна, доступна в статусе WAITING через 2 минуты после покупки, не более 3 раз. Старая активация становится REPLACED, ответ содержит новую.
  • Аренду можно отменить в окне 2–20 минут после покупки, если не было SMS. Завершить досрочно (finish) — в любой момент, без возврата.
  • Поле actions в каждой активации показывает, какие действия доступны прямо сейчас — по тем же правилам, что кнопки в кабинете.

#Вебхуки

Вебхук — это HTTPS POST на ваш адрес в момент, когда на ваш номер пришло SMS (или звонок с кодом). У аккаунта один webhook-адрес, он задаётся в кабинете на странице «API»; там же есть кнопка тестовой доставки и журнал доставок.

СобытиеКогда отправляется
sms.receivedПолучено SMS или звонок с кодом по активной активации или аренде
webhook.testТестовая доставка из кабинета

Формат запроса

http
POST /your/webhook HTTP/1.1
Content-Type: application/json
User-Agent: Simdrop-Webhooks/1.0
X-Simdrop-Event: sms.received
X-Simdrop-Delivery-Id: 6f2b0c1e-9a3d-4c7e-8f01-2d5e6a7b8c9d
json
{
  "id": "6f2b0c1e-9a3d-4c7e-8f01-2d5e6a7b8c9d",
  "event": "sms.received",
  "createdAt": "2026-09-13T20:41:12Z",
  "data": {
    "activation": {
      "id": 3051287731,
      "type": "activation",
      "status": "RECEIVED",
      "phone": "79991234567",
      "countryPhoneCode": "7",
      "service": "tg",
      "country": 0,
      "operator": "mts",
      "verificationType": "sms",
      "price": 25.5,
      "currency": "RUB",
      "code": "482913",
      "sms": [
        {
          "type": "sms",
          "code": "482913",
          "text": "Your Telegram code is 482913",
          "receivedAt": "2026-09-13T20:41:12Z"
        }
      ],
      "canGetAnotherSms": true,
      "replaceCount": 0,
      "createdAt": "2026-09-13T20:38:02Z",
      "activatedAt": "2026-09-13T20:38:02Z",
      "expiresAt": "2026-09-13T20:58:02Z",
      "updatedAt": "2026-09-13T20:41:12Z",
      "actions": {
        "cancel": false,
        "finish": true,
        "retry": true,
        "replace": false,
        "reactivate": false,
        "prolong": false
      }
    },
    "sms": {
      "type": "sms",
      "code": "482913",
      "text": "Your Telegram code is 482913",
      "receivedAt": "2026-09-13T20:41:12Z"
    }
  }
}

Суммы в payload всегда в RUB. Ответьте любым статусом 2xx в течение 10 секунд — тело ответа не читается. Любой другой ответ или таймаут считается неудачей: повторы через 30 с, 2 мин, 10 мин, 30 мин, 2 ч (всего 6 попыток). После 100 неудач подряд адрес отключается автоматически — включите его снова в кабинете после починки.

Проверка отправителя по IP

Вебхуки всегда приходят с одного из двух IP-адресов. Если хотите убедиться, что запрос действительно от Simdrop, разрешите на своём сервере только их (например, в nginx или в коде обработчика). Обрабатывайте доставки идемпотентно по полю id: при сетевых сбоях одно событие может прийти дважды.

IP-адреса отправителя
93.127.155.137
45.80.7.136
Node.js (Express)
import express from "express";

const ALLOWED_IPS = new Set(["93.127.155.137","45.80.7.136"]);
const app = express();
app.set("trust proxy", true); // если перед приложением стоит nginx/балансировщик

app.post("/simdrop/webhook", express.json(), (req, res) => {
  if (!ALLOWED_IPS.has(req.ip)) {
    return res.status(403).end();
  }
  const event = req.body;
  if (event.event === "sms.received") {
    console.log("code for activation", event.data.activation.id, "=", event.data.sms.code);
  }
  res.status(200).end();
});
Python (Flask)
from flask import Flask, request, abort

ALLOWED_IPS = {"93.127.155.137", "45.80.7.136"}
app = Flask(__name__)

@app.post("/simdrop/webhook")
def webhook():
    ip = request.headers.get("X-Forwarded-For", request.remote_addr).split(",")[0].strip()
    if ip not in ALLOWED_IPS:
        abort(403)
    event = request.get_json()
    if event["event"] == "sms.received":
        print("code:", event["data"]["sms"]["code"])
    return "", 200
PHP
<?php
$allowedIps = ['93.127.155.137', '45.80.7.136'];
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'] ?? $_SERVER['REMOTE_ADDR'];
$ip = trim(explode(',', $ip)[0]);
if (!in_array($ip, $allowedIps, true)) {
    http_response_code(403);
    exit;
}
$event = json_decode(file_get_contents('php://input'), true);
if ($event['event'] === 'sms.received') {
    error_log('code: ' . $event['data']['sms']['code']);
}
http_response_code(200);
warning_amberТребования к адресу: только https://, публичный хост (localhost и приватные сети не принимаются), без логина/пароля в URL, редиректы не выполняются.

#Аккаунт

Баланс аккаунта в валюте запроса.

GET/account/balance

Баланс

Текущий баланс — именно с него списываются покупки, холдов на него не бывает. При currency=USD возвращается курс пересчёта.

keyscope: read

Query-параметры

currencystringRUB | USD
Валюта сумм в ответе; по умолчанию — валюта ключа

Ответы

GET/account/balance
curl -X GET 'https://simdrop.io/api/v1/account/balance?currency=USD' \
  -H 'X-Api-Key: sdk_YOUR_API_KEY'
Ответ
{
  "data": {
    "balance": 13.4521,
    "currency": "USD",
    "usdRubRate": 92.95
  }
}
OK

#Справочники и цены

Страны, сервисы, операторы и актуальные цены на покупку и аренду.

GET/countries

Страны

Все доступные страны. id страны используется в остальных методах.

keyscope: read

Ответы

GET/countries
curl -X GET 'https://simdrop.io/api/v1/countries' \
  -H 'X-Api-Key: sdk_YOUR_API_KEY'
Ответ
{
  "data": [
    {
      "id": 0,
      "name": "Russia",
      "nameRu": "Россия",
      "phoneCode": "+7",
      "rent": true,
      "retry": true
    },
    {
      "id": 6,
      "name": "Indonesia",
      "nameRu": "Индонезия",
      "phoneCode": "+62",
      "rent": true,
      "retry": true
    }
  ],
  "meta": {
    "page": 1,
    "size": 2,
    "total": 2,
    "hasMore": false
  }
}
OK
GET/services

Сервисы

Каталог сервисов (Telegram, WhatsApp, …) с минимальной ценой и количеством номеров. Поддерживает поиск и пагинацию.

keyscope: read

Query-параметры

searchstring
Поиск по названию/коду Пример: tele
pageinteger
Номер страницы, с 1 Пример: 1
sizeinteger
Размер страницы (по умолчанию 50, максимум 100) Пример: 50
currencystringRUB | USD
Валюта сумм в ответе; по умолчанию — валюта ключа

Ответы

GET/services
curl -X GET 'https://simdrop.io/api/v1/services' \
  -H 'X-Api-Key: sdk_YOUR_API_KEY'
Ответ
{
  "data": [
    {
      "code": "tg",
      "name": "Telegram",
      "minPrice": 18.5,
      "currency": "RUB",
      "count": 45210
    }
  ],
  "meta": {
    "page": 1,
    "size": 50,
    "total": 1,
    "hasMore": false
  }
}
OK
GET/operators

Операторы

Операторы связи. Имя оператора можно передать в operator при покупке.

keyscope: read

Query-параметры

countryinteger
Фильтр по стране Пример: 0

Ответы

GET/operators
curl -X GET 'https://simdrop.io/api/v1/operators?country=0' \
  -H 'X-Api-Key: sdk_YOUR_API_KEY'
Ответ
{
  "data": [
    {
      "id": 1,
      "name": "mts",
      "country": 0
    },
    {
      "id": 2,
      "name": "beeline",
      "country": 0
    }
  ],
  "meta": {
    "page": 1,
    "size": 2,
    "total": 2,
    "hasMore": false
  }
}
OK
GET/prices

Цены на покупку номера

Предложения по сервису — по всем странам или по одной. Каждое содержит ценовые уровни (prices[]) с priceId для покупки, количеством номеров и доставляемостью SMS. Уровни с requiredRank выше вашего ранга помечены available=false.

keyscope: read

Query-параметры

servicestringобязательный
Код сервиса Пример: tg
countryinteger
ID страны Пример: 0
verificationTypestringsms | call
Только цены для SMS или для звонка
currencystringRUB | USD
Валюта сумм в ответе; по умолчанию — валюта ключа

Ответы

GET/prices
curl -X GET 'https://simdrop.io/api/v1/prices?service=tg&country=0' \
  -H 'X-Api-Key: sdk_YOUR_API_KEY'
Ответ
{
  "data": [
    {
      "service": "tg",
      "country": 0,
      "count": 1240,
      "deliverability": 87.5,
      "recommended": true,
      "blocked": false,
      "prices": [
        {
          "id": 88102,
          "price": 25.5,
          "currency": "RUB",
          "count": 640,
          "verificationType": "sms",
          "requiredRank": 0,
          "available": true
        },
        {
          "id": 88103,
          "price": 21,
          "currency": "RUB",
          "count": 600,
          "verificationType": "sms",
          "requiredRank": 2,
          "available": false,
          "unavailableOperators": [
            "tele2"
          ]
        },
        {
          "id": 88110,
          "price": 31,
          "currency": "RUB",
          "count": 120,
          "verificationType": "call",
          "requiredRank": 0,
          "available": true
        }
      ]
    }
  ],
  "meta": {
    "page": 1,
    "size": 1,
    "total": 1,
    "hasMore": false
  }
}
OK
GET/rent/services

Сервисы для аренды

Сервисы, для которых сейчас доступна аренда, с минимальной ценой.

keyscope: read

Query-параметры

searchstring
Поиск Пример: full
pageinteger
Номер страницы, с 1 Пример: 1
sizeinteger
Размер страницы (по умолчанию 50, максимум 100) Пример: 50
currencystringRUB | USD
Валюта сумм в ответе; по умолчанию — валюта ключа

Ответы

GET/rent/services
curl -X GET 'https://simdrop.io/api/v1/rent/services' \
  -H 'X-Api-Key: sdk_YOUR_API_KEY'
Ответ
{
  "data": [
    {
      "code": "full",
      "name": "Full rent (any service)",
      "minPrice": 340,
      "currency": "RUB",
      "count": 380
    }
  ],
  "meta": {
    "page": 1,
    "size": 50,
    "total": 1,
    "hasMore": false
  }
}
OK
GET/rent/prices

Цены на аренду

Варианты аренды по сервису: страна, срок в часах, цена и количество. id передаётся как priceId в POST /rent.

keyscope: read

Query-параметры

servicestringобязательный
Код сервиса Пример: full
countryinteger
ID страны Пример: 0
currencystringRUB | USD
Валюта сумм в ответе; по умолчанию — валюта ключа

Ответы

GET/rent/prices
curl -X GET 'https://simdrop.io/api/v1/rent/prices?service=full&country=0' \
  -H 'X-Api-Key: sdk_YOUR_API_KEY'
Ответ
{
  "data": [
    {
      "id": 5121,
      "service": "full",
      "country": 0,
      "durationHours": 4,
      "price": 120,
      "currency": "RUB",
      "count": 42
    },
    {
      "id": 5122,
      "service": "full",
      "country": 0,
      "durationHours": 24,
      "price": 340,
      "currency": "RUB",
      "count": 42
    }
  ],
  "meta": {
    "page": 1,
    "size": 2,
    "total": 2,
    "hasMore": false
  }
}
OK

#Активации

Покупка разовых номеров и работа с ними. Все методы с {id} работают и для аренды.

POST/activations

Купить номер

Выдаёт номер и списывает его стоимость с баланса. Цена выбирается одним из способов: priceId — конкретный уровень из GET /prices; maxPrice — самый дешёвый доступный уровень не выше указанной цены; ничего — самый дешёвый доступный уровень.

keyscope: activationsspeedлимит покупок
infoОдновременно у аккаунта может быть от 10 до 100 активных активаций (зависит от ранга лояльности) и одна покупка за раз — вторая параллельная покупка получит 409 PURCHASE_IN_PROGRESS.

Тело запроса (JSON)

servicestringобязательный
Код сервиса Пример: tg
countryintegerобязательный
ID страны Пример: 0
operatorstring
Оператор (по умолчанию любой) Пример: mts
verificationTypestringsms | call
Способ получения кода: sms (по умолчанию) или call
priceIdinteger
ID ценового уровня из GET /prices Пример: 88102
maxPricenumber
Максимальная цена в валюте запроса Пример: 30
orderIdstring
Ваш идентификатор заказа (до 100 символов) Пример: order-7781

Ответы

POST/activations
curl -X POST 'https://simdrop.io/api/v1/activations' \
  -H 'X-Api-Key: sdk_YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{ "service": "tg", "country": 0, "maxPrice": 30, "verificationType": "sms" }'
Ответ
{
  "data": {
    "id": 3051287731,
    "type": "activation",
    "status": "WAITING",
    "phone": "79991234567",
    "countryPhoneCode": "7",
    "service": "tg",
    "country": 0,
    "operator": "mts",
    "verificationType": "sms",
    "price": 25.5,
    "currency": "RUB",
    "code": null,
    "sms": [],
    "canGetAnotherSms": true,
    "replaceCount": 0,
    "createdAt": "2026-09-13T20:38:02Z",
    "activatedAt": "2026-09-13T20:38:02Z",
    "expiresAt": "2026-09-13T20:58:02Z",
    "updatedAt": "2026-09-13T20:38:02Z",
    "actions": {
      "cancel": false,
      "finish": false,
      "retry": false,
      "replace": false,
      "reactivate": false,
      "prolong": false
    }
  }
}
Номер выдан
GET/activations

Активные активации

Активации в статусах WAITING, WAITING_RETRY и RECEIVED (включая аренду), новые сверху.

keyscope: read

Query-параметры

typestringactivation | rent
Только разовые или только аренда
statusstringWAITING | WAITING_RETRY | RECEIVED
Фильтр по статусу
servicestring
Код сервиса Пример: tg
countryinteger
ID страны Пример: 0
pageinteger
Номер страницы, с 1 Пример: 1
sizeinteger
Размер страницы (по умолчанию 25, максимум 100) Пример: 25
currencystringRUB | USD
Валюта сумм в ответе; по умолчанию — валюта ключа

Ответы

GET/activations
curl -X GET 'https://simdrop.io/api/v1/activations' \
  -H 'X-Api-Key: sdk_YOUR_API_KEY'
Ответ
{
  "data": [
    {
      "id": 3051287731,
      "type": "activation",
      "status": "RECEIVED",
      "phone": "79991234567",
      "countryPhoneCode": "7",
      "service": "tg",
      "country": 0,
      "operator": "mts",
      "verificationType": "sms",
      "price": 25.5,
      "currency": "RUB",
      "code": "482913",
      "sms": [
        {
          "type": "sms",
          "code": "482913",
          "text": "Your Telegram code is 482913",
          "receivedAt": "2026-09-13T20:41:12Z"
        }
      ],
      "canGetAnotherSms": true,
      "replaceCount": 0,
      "createdAt": "2026-09-13T20:38:02Z",
      "activatedAt": "2026-09-13T20:38:02Z",
      "expiresAt": "2026-09-13T20:58:02Z",
      "updatedAt": "2026-09-13T20:41:12Z",
      "actions": {
        "cancel": false,
        "finish": true,
        "retry": true,
        "replace": false,
        "reactivate": false,
        "prolong": false
      }
    }
  ],
  "meta": {
    "page": 1,
    "size": 25,
    "total": 1,
    "hasMore": false
  }
}
OK
GET/activations/history

История активаций

Завершённые, отменённые и заменённые активации с фильтрами по датам, сервису, стране и номеру.

keyscope: read

Query-параметры

fromstring
Дата с (YYYY-MM-DD) Пример: 2026-09-01
tostring
Дата по (YYYY-MM-DD) Пример: 2026-09-13
typestringactivation | rent
Тип
statusstringFINISHED | CANCELLED | REPLACED
Фильтр по статусу
servicestring
Код сервиса Пример: tg
countryinteger
ID страны Пример: 0
searchstring
Поиск по номеру телефона Пример: 7999
pageinteger
Номер страницы, с 1 Пример: 1
sizeinteger
Размер страницы (по умолчанию 25, максимум 100) Пример: 25
currencystringRUB | USD
Валюта сумм в ответе; по умолчанию — валюта ключа

Ответы

GET/activations/history
curl -X GET 'https://simdrop.io/api/v1/activations/history?from=2026-09-01&to=2026-09-13' \
  -H 'X-Api-Key: sdk_YOUR_API_KEY'
Ответ
{
  "data": [
    {
      "id": 3051287731,
      "type": "activation",
      "status": "FINISHED",
      "phone": "79991234567",
      "countryPhoneCode": "7",
      "service": "tg",
      "country": 0,
      "operator": "mts",
      "verificationType": "sms",
      "price": 25.5,
      "currency": "RUB",
      "code": "482913",
      "sms": [
        {
          "type": "sms",
          "code": "482913",
          "text": "Your Telegram code is 482913",
          "receivedAt": "2026-09-13T20:41:12Z"
        }
      ],
      "canGetAnotherSms": true,
      "replaceCount": 0,
      "createdAt": "2026-09-13T20:38:02Z",
      "activatedAt": "2026-09-13T20:38:02Z",
      "expiresAt": "2026-09-13T20:58:02Z",
      "updatedAt": "2026-09-13T20:41:12Z",
      "actions": {
        "cancel": false,
        "finish": false,
        "retry": false,
        "replace": false,
        "reactivate": true,
        "prolong": false
      }
    },
    {
      "id": 3051287731,
      "type": "activation",
      "status": "CANCELLED",
      "phone": "79991234567",
      "countryPhoneCode": "7",
      "service": "tg",
      "country": 0,
      "operator": "mts",
      "verificationType": "sms",
      "price": 25.5,
      "currency": "RUB",
      "code": null,
      "sms": [],
      "canGetAnotherSms": true,
      "replaceCount": 0,
      "createdAt": "2026-09-13T20:38:02Z",
      "activatedAt": "2026-09-13T20:38:02Z",
      "expiresAt": "2026-09-13T20:58:02Z",
      "updatedAt": "2026-09-13T20:38:02Z",
      "actions": {
        "cancel": false,
        "finish": false,
        "retry": false,
        "replace": false,
        "reactivate": false,
        "prolong": false
      }
    }
  ],
  "meta": {
    "page": 1,
    "size": 25,
    "total": 2,
    "hasMore": false
  }
}
OK
GET/activations/{id}

Статус активации / код

Текущее состояние активации: статус, последний код (code), все сообщения (sms[]) и доступные действия. Основной метод для поллинга.

keyscope: read

Параметры пути

idintegerобязательный
ID активации Пример: 3051287731

Query-параметры

currencystringRUB | USD
Валюта сумм в ответе; по умолчанию — валюта ключа

Ответы

GET/activations/{id}
curl -X GET 'https://simdrop.io/api/v1/activations/3051287731' \
  -H 'X-Api-Key: sdk_YOUR_API_KEY'
Ответ
{
  "data": {
    "id": 3051287731,
    "type": "activation",
    "status": "RECEIVED",
    "phone": "79991234567",
    "countryPhoneCode": "7",
    "service": "tg",
    "country": 0,
    "operator": "mts",
    "verificationType": "sms",
    "price": 25.5,
    "currency": "RUB",
    "code": "482913",
    "sms": [
      {
        "type": "sms",
        "code": "482913",
        "text": "Your Telegram code is 482913",
        "receivedAt": "2026-09-13T20:41:12Z"
      }
    ],
    "canGetAnotherSms": true,
    "replaceCount": 0,
    "createdAt": "2026-09-13T20:38:02Z",
    "activatedAt": "2026-09-13T20:38:02Z",
    "expiresAt": "2026-09-13T20:58:02Z",
    "updatedAt": "2026-09-13T20:41:12Z",
    "actions": {
      "cancel": false,
      "finish": true,
      "retry": true,
      "replace": false,
      "reactivate": false,
      "prolong": false
    }
  }
}
OK
GET/activations/{id}/sms

Все SMS по активации

Полный список полученных сообщений (SMS и звонки). Для аренды — все сообщения за период.

keyscope: read

Параметры пути

idintegerобязательный
ID активации Пример: 3051287731

Ответы

GET/activations/{id}/sms
curl -X GET 'https://simdrop.io/api/v1/activations/3051287731/sms' \
  -H 'X-Api-Key: sdk_YOUR_API_KEY'
Ответ
{
  "data": [
    {
      "type": "sms",
      "code": "482913",
      "text": "Your Telegram code is 482913",
      "receivedAt": "2026-09-13T20:41:12Z"
    },
    {
      "type": "sms",
      "code": "117733",
      "text": "Your Telegram code is 117733",
      "receivedAt": "2026-09-13T20:47:40Z"
    }
  ],
  "meta": {
    "page": 1,
    "size": 2,
    "total": 2,
    "hasMore": false
  }
}
OK
DELETE/activations/{id}

Отменить активацию

Отмена с полным возвратом средств. Доступна через 2 минуты после покупки, пока код не получен. Для аренды — в окне 2–20 минут без SMS.

keyscope: activations

Параметры пути

idintegerобязательный
ID активации Пример: 3051287731

Query-параметры

currencystringRUB | USD
Валюта сумм в ответе; по умолчанию — валюта ключа

Ответы

DELETE/activations/{id}
curl -X DELETE 'https://simdrop.io/api/v1/activations/3051287731' \
  -H 'X-Api-Key: sdk_YOUR_API_KEY'
Ответ
{
  "data": {
    "id": 3051287731,
    "type": "activation",
    "status": "CANCELLED",
    "phone": "79991234567",
    "countryPhoneCode": "7",
    "service": "tg",
    "country": 0,
    "operator": "mts",
    "verificationType": "sms",
    "price": 25.5,
    "currency": "RUB",
    "code": null,
    "sms": [],
    "canGetAnotherSms": true,
    "replaceCount": 0,
    "createdAt": "2026-09-13T20:38:02Z",
    "activatedAt": "2026-09-13T20:38:02Z",
    "expiresAt": "2026-09-13T20:58:02Z",
    "updatedAt": "2026-09-13T20:38:02Z",
    "actions": {
      "cancel": false,
      "finish": false,
      "retry": false,
      "replace": false,
      "reactivate": false,
      "prolong": false
    }
  }
}
Отменена, средства возвращены
POST/activations/{id}/finish

Завершить активацию

Подтверждает успешное использование номера после получения кода (статус FINISHED). Для аренды — досрочное завершение без возврата.

keyscope: activations

Параметры пути

idintegerобязательный
ID активации Пример: 3051287731

Query-параметры

currencystringRUB | USD
Валюта сумм в ответе; по умолчанию — валюта ключа

Ответы

POST/activations/{id}/finish
curl -X POST 'https://simdrop.io/api/v1/activations/3051287731/finish' \
  -H 'X-Api-Key: sdk_YOUR_API_KEY'
Ответ
{
  "data": {
    "id": 3051287731,
    "type": "activation",
    "status": "FINISHED",
    "phone": "79991234567",
    "countryPhoneCode": "7",
    "service": "tg",
    "country": 0,
    "operator": "mts",
    "verificationType": "sms",
    "price": 25.5,
    "currency": "RUB",
    "code": "482913",
    "sms": [
      {
        "type": "sms",
        "code": "482913",
        "text": "Your Telegram code is 482913",
        "receivedAt": "2026-09-13T20:41:12Z"
      }
    ],
    "canGetAnotherSms": true,
    "replaceCount": 0,
    "createdAt": "2026-09-13T20:38:02Z",
    "activatedAt": "2026-09-13T20:38:02Z",
    "expiresAt": "2026-09-13T20:58:02Z",
    "updatedAt": "2026-09-13T20:41:12Z",
    "actions": {
      "cancel": false,
      "finish": false,
      "retry": false,
      "replace": false,
      "reactivate": true,
      "prolong": false
    }
  }
}
Завершена
POST/activations/{id}/retry

Запросить ещё одно SMS

Переводит активацию в ожидание следующего сообщения на тот же номер (если canGetAnotherSms=true). Бесплатно.

keyscope: activations

Параметры пути

idintegerобязательный
ID активации Пример: 3051287731

Query-параметры

currencystringRUB | USD
Валюта сумм в ответе; по умолчанию — валюта ключа

Ответы

POST/activations/{id}/retry
curl -X POST 'https://simdrop.io/api/v1/activations/3051287731/retry' \
  -H 'X-Api-Key: sdk_YOUR_API_KEY'
Ответ
{
  "data": {
    "id": 3051287731,
    "type": "activation",
    "status": "WAITING_RETRY",
    "phone": "79991234567",
    "countryPhoneCode": "7",
    "service": "tg",
    "country": 0,
    "operator": "mts",
    "verificationType": "sms",
    "price": 25.5,
    "currency": "RUB",
    "code": "482913",
    "sms": [
      {
        "type": "sms",
        "code": "482913",
        "text": "Your Telegram code is 482913",
        "receivedAt": "2026-09-13T20:41:12Z"
      }
    ],
    "canGetAnotherSms": true,
    "replaceCount": 0,
    "createdAt": "2026-09-13T20:38:02Z",
    "activatedAt": "2026-09-13T20:38:02Z",
    "expiresAt": "2026-09-13T20:58:02Z",
    "updatedAt": "2026-09-13T20:41:12Z",
    "actions": {
      "cancel": false,
      "finish": true,
      "retry": true,
      "replace": false,
      "reactivate": false,
      "prolong": false
    }
  }
}
Ожидаем следующее SMS
POST/activations/{id}/replace

Заменить номер

Бесплатно выдаёт другой номер вместо текущего (антибан). Только в статусе WAITING, через 2 минуты после покупки, не более 3 раз. Старая активация получает статус REPLACED; в ответе — новая активация с новым id.

keyscope: activationsspeedлимит покупок

Параметры пути

idintegerобязательный
ID активации Пример: 3051287731

Query-параметры

currencystringRUB | USD
Валюта сумм в ответе; по умолчанию — валюта ключа

Ответы

POST/activations/{id}/replace
curl -X POST 'https://simdrop.io/api/v1/activations/3051287731/replace' \
  -H 'X-Api-Key: sdk_YOUR_API_KEY'
Ответ
{
  "data": {
    "id": 3051287990,
    "type": "activation",
    "status": "WAITING",
    "phone": "79995550011",
    "countryPhoneCode": "7",
    "service": "tg",
    "country": 0,
    "operator": "mts",
    "verificationType": "sms",
    "price": 25.5,
    "currency": "RUB",
    "code": null,
    "sms": [],
    "canGetAnotherSms": true,
    "replaceCount": 1,
    "createdAt": "2026-09-13T20:38:02Z",
    "activatedAt": "2026-09-13T20:38:02Z",
    "expiresAt": "2026-09-13T20:58:02Z",
    "updatedAt": "2026-09-13T20:38:02Z",
    "actions": {
      "cancel": false,
      "finish": false,
      "retry": false,
      "replace": false,
      "reactivate": false,
      "prolong": false
    }
  }
}
Новая активация
GET/activations/{id}/reactivate/options

Стоимость реактивации

Можно ли снова получить SMS на этот номер (для завершённых активаций) и сколько это стоит.

keyscope: read

Параметры пути

idintegerобязательный
ID активации Пример: 3051287731

Query-параметры

currencystringRUB | USD
Валюта сумм в ответе; по умолчанию — валюта ключа

Ответы

GET/activations/{id}/reactivate/options
curl -X GET 'https://simdrop.io/api/v1/activations/3051287731/reactivate/options' \
  -H 'X-Api-Key: sdk_YOUR_API_KEY'
Ответ
{
  "data": {
    "available": true,
    "price": 12.5,
    "currency": "RUB",
    "reason": null
  }
}
OK
POST/activations/{id}/reactivate

Реактивировать номер

Платно возобновляет ожидание SMS на ранее использованном номере. Стоимость списывается с баланса; активация снова становится WAITING.

keyscope: activationsspeedлимит покупок

Параметры пути

idintegerобязательный
ID активации Пример: 3051287731

Query-параметры

currencystringRUB | USD
Валюта сумм в ответе; по умолчанию — валюта ключа

Ответы

POST/activations/{id}/reactivate
curl -X POST 'https://simdrop.io/api/v1/activations/3051287731/reactivate' \
  -H 'X-Api-Key: sdk_YOUR_API_KEY'
Ответ
{
  "data": {
    "id": 3051287731,
    "type": "activation",
    "status": "WAITING",
    "phone": "79991234567",
    "countryPhoneCode": "7",
    "service": "tg",
    "country": 0,
    "operator": "mts",
    "verificationType": "sms",
    "price": 12.5,
    "currency": "RUB",
    "code": null,
    "sms": [],
    "canGetAnotherSms": true,
    "replaceCount": 0,
    "createdAt": "2026-09-13T20:38:02Z",
    "activatedAt": "2026-09-13T21:10:00Z",
    "expiresAt": "2026-09-13T21:30:00Z",
    "updatedAt": "2026-09-13T20:38:02Z",
    "actions": {
      "cancel": false,
      "finish": false,
      "retry": false,
      "replace": false,
      "reactivate": false,
      "prolong": false
    }
  }
}
Ожидаем SMS

#Аренда

Аренда номера на часы или дни с приёмом всех SMS. Арендованный номер — активация с type=rent: статус, SMS, отмена и завершение — через /activations/{id}.

POST/rent

Арендовать номер

Выдаёт номер на указанный срок. priceId берётся из GET /rent/prices; если не указан — подбирается по сервису, стране и сроку.

keyscope: rentspeedлимит покупок

Тело запроса (JSON)

servicestringобязательный
Код сервиса (full — любой сервис) Пример: full
countryintegerобязательный
ID страны Пример: 0
durationHoursintegerобязательный
Срок аренды в часах (из GET /rent/prices) Пример: 24
priceIdinteger
ID цены аренды Пример: 5122
operatorstring
Оператор Пример: mts

Ответы

POST/rent
curl -X POST 'https://simdrop.io/api/v1/rent' \
  -H 'X-Api-Key: sdk_YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{ "service": "full", "country": 0, "durationHours": 24, "priceId": 5122 }'
Ответ
{
  "data": {
    "id": 3051290002,
    "type": "rent",
    "status": "WAITING",
    "phone": "79991234567",
    "countryPhoneCode": "7",
    "service": "full",
    "country": 0,
    "operator": "mts",
    "verificationType": "sms",
    "price": 340,
    "currency": "RUB",
    "code": null,
    "sms": [],
    "canGetAnotherSms": true,
    "replaceCount": 0,
    "createdAt": "2026-09-13T20:38:02Z",
    "activatedAt": "2026-09-13T20:38:02Z",
    "expiresAt": "2026-09-14T20:38:02Z",
    "updatedAt": "2026-09-13T20:38:02Z",
    "actions": {
      "cancel": false,
      "finish": true,
      "retry": false,
      "replace": false,
      "reactivate": false,
      "prolong": true
    },
    "rentDurationHours": 24
  }
}
Номер арендован
GET/rent

Активные аренды

То же, что GET /activations?type=rent.

keyscope: read

Query-параметры

servicestring
Код сервиса Пример: full
countryinteger
ID страны Пример: 0
pageinteger
Номер страницы, с 1 Пример: 1
sizeinteger
Размер страницы (по умолчанию 25, максимум 100) Пример: 25
currencystringRUB | USD
Валюта сумм в ответе; по умолчанию — валюта ключа

Ответы

GET/rent
curl -X GET 'https://simdrop.io/api/v1/rent' \
  -H 'X-Api-Key: sdk_YOUR_API_KEY'
Ответ
{
  "data": [
    {
      "id": 3051290002,
      "type": "rent",
      "status": "WAITING",
      "phone": "79991234567",
      "countryPhoneCode": "7",
      "service": "full",
      "country": 0,
      "operator": "mts",
      "verificationType": "sms",
      "price": 340,
      "currency": "RUB",
      "code": null,
      "sms": [],
      "canGetAnotherSms": true,
      "replaceCount": 0,
      "createdAt": "2026-09-13T20:38:02Z",
      "activatedAt": "2026-09-13T20:38:02Z",
      "expiresAt": "2026-09-14T20:38:02Z",
      "updatedAt": "2026-09-13T20:38:02Z",
      "actions": {
        "cancel": false,
        "finish": true,
        "retry": false,
        "replace": false,
        "reactivate": false,
        "prolong": true
      },
      "rentDurationHours": 24
    }
  ],
  "meta": {
    "page": 1,
    "size": 25,
    "total": 1,
    "hasMore": false
  }
}
OK
GET/activations/{id}/prolong/options

Варианты продления

Доступные сроки продления аренды и их стоимость.

keyscope: read

Параметры пути

idintegerобязательный
ID активации Пример: 3051290002

Query-параметры

currencystringRUB | USD
Валюта сумм в ответе; по умолчанию — валюта ключа

Ответы

GET/activations/{id}/prolong/options
curl -X GET 'https://simdrop.io/api/v1/activations/3051290002/prolong/options' \
  -H 'X-Api-Key: sdk_YOUR_API_KEY'
Ответ
{
  "data": {
    "available": true,
    "options": [
      {
        "durationHours": 4,
        "price": 90,
        "currency": "RUB"
      },
      {
        "durationHours": 24,
        "price": 300,
        "currency": "RUB"
      }
    ],
    "reason": null
  }
}
OK
POST/activations/{id}/prolong

Продлить аренду

Продлевает аренду на выбранный срок из GET …/prolong/options; стоимость списывается с баланса.

keyscope: rentspeedлимит покупок

Параметры пути

idintegerобязательный
ID активации Пример: 3051290002

Query-параметры

currencystringRUB | USD
Валюта сумм в ответе; по умолчанию — валюта ключа

Тело запроса (JSON)

durationHoursinteger
Срок продления в часах (если вариант один — можно не указывать) Пример: 24

Ответы

POST/activations/{id}/prolong
curl -X POST 'https://simdrop.io/api/v1/activations/3051290002/prolong' \
  -H 'X-Api-Key: sdk_YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{ "durationHours": 24 }'
Ответ
{
  "data": {
    "id": 3051290002,
    "type": "rent",
    "status": "WAITING",
    "phone": "79991234567",
    "countryPhoneCode": "7",
    "service": "full",
    "country": 0,
    "operator": "mts",
    "verificationType": "sms",
    "price": 340,
    "currency": "RUB",
    "code": null,
    "sms": [],
    "canGetAnotherSms": true,
    "replaceCount": 0,
    "createdAt": "2026-09-13T20:38:02Z",
    "activatedAt": "2026-09-13T20:38:02Z",
    "expiresAt": "2026-09-15T20:38:02Z",
    "updatedAt": "2026-09-13T20:38:02Z",
    "actions": {
      "cancel": false,
      "finish": true,
      "retry": false,
      "replace": false,
      "reactivate": false,
      "prolong": true
    },
    "rentDurationHours": 48
  }
}
Продлена

#Служебные

GET/ping

Проверка доступности

Единственный метод без ключа: доступность API и серверное время (UTC) для синхронизации часов.

publicбез ключа

Ответы

GET/ping
curl -X GET 'https://simdrop.io/api/v1/ping' \
  -H 'X-Api-Key: sdk_YOUR_API_KEY'
Ответ
{
  "data": {
    "ok": true,
    "time": "2026-09-13T20:00:00Z",
    "version": "v1"
  }
}
OK