Интегрируйте магазин
в свои продукты
Программный интерфейс SilentShop позволяет автоматизировать покупку Telegram аккаунтов. Встраивайте покупки прямо в ваши скрипты, боты и системы с помощью REST API или готового Python SDK.
Мгновенный кэш
Ответ каталога товаров кэшируется на 60с для максимальной производительности.
Персистентность
Статусы заказов сохраняются в БД. Ни один заказ не потеряется при рестарте.
Официальный SDK
Готовая библиотека для Python с поддержкой синхронного и асинхронного режимов.
https://docs.silentshop.ru/api
Официальный Python SDK
Используйте готовую библиотеку для быстрой интеграции.
1. Установка
2. Быстрый старт (Синхронный клиент)
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
/api/public/v1/status
Health-check: версия API, статус базы данных, аптайм. Не требует авторизации.
status = client.get_status() print(status['status']) # ok
curl https://docs.silentshop.ru/api/public/v1/status
{
"status": "ok",
"version": "1.1.0",
"database": "ok",
"uptime_seconds": 3600,
"cache_ttl_seconds": 60.0
}
Профиль пользователя
/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
{
"status": "success",
"telegram_id": 161451219,
"balance": 150.45,
"currency": "USDT"
}
Баланс и история транзакций
/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
Каталог товаров
/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"
Товар по 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
{
"status": "success",
"product": {
"product_id": "dyn_1",
"name": "США Новорег",
"country": "US",
"price": 1.0,
"currency": "USDT",
"premium": false,
"stock": 3826
}
}
Покупка аккаунтов
/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
{
"status": "processing",
"order_id": "550e8400-e29b-41d4-a716-446655440000",
"total_cost": 1.0,
"currency": "USDT"
}
Статус заказа
/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-...
История заказов
/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"
Уведомление о наличии товара
/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
{
"status": "success",
"message": "Вы будете уведомлены когда товар 'dyn_1' появится в наличии."
}
API TEST Interactive
Тестируйте вызовы SilentShop API прямо в браузере в реальном времени.