Public API v1.1.0

Интегрируйте магазин
в свои продукты

Программный интерфейс SilentShop позволяет автоматизировать покупку Telegram аккаунтов. Встраивайте покупки прямо в ваши скрипты, боты и системы с помощью REST API или готового Python SDK.

Мгновенный кэш

Ответ каталога товаров кэшируется на 60с для максимальной производительности.

Персистентность

Статусы заказов сохраняются в БД. Ни один заказ не потеряется при рестарте.

Официальный SDK

Готовая библиотека для Python с поддержкой синхронного и асинхронного режимов.

Base URL: https://docs.silentshop.ru/api

Официальный Python SDK

Используйте готовую библиотеку для быстрой интеграции.

1. Установка

terminal
$ pip install silentshop-python-sdk

2. Быстрый старт (Синхронный клиент)

main.py
from silentshop import SilentShop, SilentShopError

api_key = "your_api_key_here"

# Инициализация клиента
with SilentShop(api_key=api_key) as client:
    try:
        # Проверка профиля и баланса
        profile = client.get_profile()
        print(f"ID: {profile['telegram_id']}, Balance: {profile['balance']} USDT")

        # Получение товаров США
        products = client.get_products(country="US", premium=False)
        
        if products:
            target_product = products[0]["product_id"]
            
            # Покупка 1 аккаунта
            order = client.buy(product_id=target_product, quantity=1)
            print(f"Order created! ID: {order['order_id']}")

            # Ожидание выдачи товара (polling)
            import time
            while True:
                status = client.get_order(order_id=order["order_id"])
                if status["status"] == "success":
                    for acc in status["accounts"]:
                        print(f"Session ZIP: {acc['session_download_url']}")
                    break
                elif status["status"] == "error":
                    print(f"Failed: {status['message']}")
                    break
                time.sleep(3)

    except SilentShopError as e:
        print(f"API Error: {e}")

3. Асинхронный клиент

Для работы в асинхронных приложениях (например, aiogram, FastAPI) используйте AsyncSilentShop.

import asyncio
from silentshop import AsyncSilentShop, SilentShopError

async def main():
    async with AsyncSilentShop(api_key="your_key") as client:
        try:
            profile = await client.get_profile()
            print(f"Balance: {profile['balance']} USDT")
        except SilentShopError as e:
            print(e)

if __name__ == "__main__":
    asyncio.run(main())

Все методы API в примерах ниже имеют примеры использования как через прямой HTTP запрос (cURL), так и через Python SDK.


Авторизация

Все прямые HTTP запросы (кроме /status) требуют заголовок X-API-Key. Сгенерировать ключ можно в Mini App (Раздел: Профиль → Настройки → API ключ).

// Пример заголовка

X-API-Key: sl_9a8f273d4b6c81e9f2a3...

Никогда не передавайте API-ключ в открытых репозиториях. Делайте запросы только с вашего защищенного сервера.

Формат product_id

Все товары в каталоге SilentShop унифицированы и используют единый стандарт строкового идентификатора product_id в формате dyn_{id}:

Единый стандарт dyn_{id}

Например: dyn_1 (США), dyn_2 (Казахстан), dyn_187.

💡 При покупке товара по его dyn_{id} система каскадной выдачи автоматически сначала проверяет наличие свободного аккаунта на локальном складе (и выдает его мгновенно без обращения к внешним биржам), а при его отсутствии — закупает на маркетах.

Rate Limiting

  • Максимум 2 запроса в секунду на один API-ключ.
  • При превышении возвращается ошибка 429 Too Many Requests.
  • Кэш каталога товаров обновляется раз в 60 секунд.

Коды ошибок HTTP

  • 200 Успех
  • 400 Неверные параметры (ValidationError)
  • 401 Неверный X-API-Key (AuthError)
  • 402 Нет средств (PaymentRequiredError)
  • 404 Не найдено (NotFoundError)
  • 429 Превышен лимит запросов
API Endpoints
GET

Статус API

/api/public/v1/status

Health-check: версия API, статус базы данных, аптайм. Не требует авторизации.

status = client.get_status()
print(status['status']) # ok
curl https://docs.silentshop.ru/api/public/v1/status
Response (200 OK)
{
  "status": "ok",
  "version": "1.1.0",
  "database": "ok",
  "uptime_seconds": 3600,
  "cache_ttl_seconds": 60.0
}
GET

Профиль пользователя

/api/public/v1/profile

Возвращает Telegram ID и текущий баланс счёта в USDT.

profile = client.get_profile()
print(profile['balance'])
curl -H "X-API-Key: YOUR_KEY" \
  https://docs.silentshop.ru/api/public/v1/profile
Response (200 OK)
{
  "status": "success",
  "telegram_id": 161451219,
  "balance": 150.45,
  "currency": "USDT"
}
GET

Баланс и история транзакций

/api/public/v1/balance

Возвращает текущий баланс пользователя и список последних 20 финансовых транзакций (пополнения, списания, покупки).

balance_info = client.get_balance()
print(f"Баланс: {balance_info['balance']} USDT")
for tx in balance_info.get('history', []):
    print(f"[{tx['type']}] {tx['amount']} USDT: {tx['description']}")
curl -H "X-API-Key: YOUR_KEY" \
  https://docs.silentshop.ru/api/public/v1/balance
Response (200 OK)
{
  "status": "success",
  "balance": 150.45,
  "currency": "USDT",
  "history": [
    {
      "id": 412,
      "amount": 10.0,
      "type": "deposit",
      "description": "Пополнение через CryptoPay",
      "created_at": "2026-08-30 14:22:10"
    },
    {
      "id": 410,
      "amount": -1.0,
      "type": "purchase",
      "description": "API Purchase: США Новорег (1 шт.)",
      "created_at": "2026-08-30 13:15:00"
    }
  ]
}
GET

Каталог товаров

/api/public/v1/products

Возвращает весь каталог. Поддерживает параметры фильтрации country (двухбуквенный код, например US) и premium (true/false).

# Все товары
products = client.get_products()

# Только США без премиума
us_products = client.get_products(
    country="US", 
    premium=False
)
curl -H "X-API-Key: YOUR_KEY" \
  "https://docs.silentshop.ru/api/public/v1/products?country=US&premium=false"
Response (200 OK)
{
  "status": "success",
  "count": 2,
  "products": [
    {
      "product_id": "dyn_1",
      "name": "США Новорег",
      "country": "US",
      "price": 1.0,
      "currency": "USDT",
      "premium": false,
      "stock": 3826
    }
  ]
}
GET

Товар по ID

/api/public/v1/product/{product_id}

Возвращает детальную информацию и текущий остаток на складе для конкретного товара по его идентификатору.

# Получение одного товара
product = client.get_product("dyn_1")
print(product['name'], product['stock'])
curl -H "X-API-Key: YOUR_KEY" \
  https://docs.silentshop.ru/api/public/v1/product/dyn_1
Response (200 OK)
{
  "status": "success",
  "product": {
    "product_id": "dyn_1",
    "name": "США Новорег",
    "country": "US",
    "price": 1.0,
    "currency": "USDT",
    "premium": false,
    "stock": 3826
  }
}
POST

Покупка аккаунтов

/api/public/v1/buy

Главный метод. Инициирует процесс покупки (до 50 шт за раз). Покупка происходит асинхронно — метод моментально возвращает order_id, который нужно использовать для опроса статуса (polling).

# Создание заказа на покупку
order = client.buy(
    product_id="dyn_1", 
    quantity=1
)
print(order['order_id'])
curl -X POST \
  -H "X-API-Key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"product_id":"dyn_1","quantity":1}' \
  https://docs.silentshop.ru/api/public/v1/buy
Response (200 OK)
{
  "status": "processing",
  "order_id": "550e8400-e29b-41d4-a716-446655440000",
  "total_cost": 1.0,
  "currency": "USDT"
}
GET

Статус заказа

/api/public/v1/order/{order_id}

Опрашивайте этот метод раз в 3-5 секунд после создания заказа. В конечном итоге статус сменится на success (и вернет купленные аккаунты с ссылками на сессии) или error.

import time

while True:
    status = client.get_order(order_id)
    if status['status'] == 'success':
        # Готово! Выдача товара
        accounts = status['accounts']
        for acc in accounts:
            print(acc['phone'], acc['session_download_url'])
        break
    elif status['status'] == 'error':
        # Ошибка (например, нет в наличии)
        print(status['message'])
        break
        
    time.sleep(3)
curl -H "X-API-Key: YOUR_KEY" \
  https://docs.silentshop.ru/api/public/v1/order/550e8400-e29b-41d4-...
Response (Success)
{
  "status": "success",
  "accounts": [
    {
      "id": 1284,
      "phone": "+1234567890",
      "has_2fa": true,
      "password_2fa": "mypass123",
      "session_download_url": "https://silentshop.ru/api/download/session/1284",
      "tdata_download_url": "https://silentshop.ru/api/download/tdata/1284",
      "session_string": "1BJWap1..."
    }
  ]
}
GET

История заказов

/api/public/v1/orders

Возвращает список выполненных и текущих API-заказов пользователя. Поддерживает параметр query limit (от 1 до 50, по умолчанию 20).

orders_resp = client.get_orders(limit=20)
for order in orders_resp.get('orders', []):
    print(order['order_id'], order['status'], order['created_at'])
curl -H "X-API-Key: YOUR_KEY" \
  "https://docs.silentshop.ru/api/public/v1/orders?limit=20"
Response (200 OK)
{
  "status": "success",
  "count": 1,
  "orders": [
    {
      "order_id": "550e8400-e29b-41d4-a716-446655440000",
      "user_id": 161451219,
      "status": "success",
      "message": "Complete",
      "created_at": "2026-08-30 18:10:00",
      "purchased_ids": [1284]
    }
  ]
}
POST

Уведомление о наличии товара

/api/public/v1/notify/{product_id}

Подписывает Telegram аккаунт пользователя на уведомление ботом при появлении данного товара в наличии на складе.

notify_res = client.notify("dyn_1")
print(notify_res['message'])
curl -X POST \
  -H "X-API-Key: YOUR_KEY" \
  https://docs.silentshop.ru/api/public/v1/notify/dyn_1
Response (200 OK)
{
  "status": "success",
  "message": "Вы будете уведомлены когда товар 'dyn_1' появится в наличии."
}

API TEST Interactive

Тестируйте вызовы SilentShop API прямо в браузере в реальном времени.

Сохраняется локально

* Ключ создаётся в Личном кабинете в разделе Профиль → Настройки → API Ключ.

Параметры запроса GET
GET /api/public/v1/status
Ответ сервера: Ожидание
// Нажмите "Отправить запрос", чтобы увидеть результат здесь...