Padington Shop API v1

REST API для автоматизации покупок через франшизные боты. JSON, Bearer-токен.

Как начать

  1. Открой бота → 👤 Профиль🔑 API ключи
  2. Нажми ➕ Сгенерировать ключ
  3. Скопируй ключ (формат pad_live_…) — он показывается один раз
  4. Подставь в заголовок Authorization: Bearer pad_live_…
База: https://api.padington.com/v1
Все запросы и ответы — application/json. Кодировка UTF-8.
🤖 Для AI-агентов / автоматизации:
/llms.txt — короткое описание API для LLM
/llms-full.txt — полная Markdown-версия документации
/openapi.json — OpenAPI 3.1 спецификация

Авторизация

Каждый запрос требует заголовок:

Authorization: Bearer pad_live_AbCd...XyZ

Ключ привязан к твоему профилю в боте. Все списания идут с твоего баланса в этом боте — как обычная покупка.

КодЗначение
401Нет/неверный/отозванный ключ
402Недостаточно средств на балансе
400Невалидные параметры (см. detail)
404Заказ не найден / не твой
500Внутренняя ошибка

Баланс

GET /v1/balance

Возвращает текущий баланс в рублях:

{
  "balance_rub": 5432.10
}

Каталог

GET /v1/catalog

Возвращает каталог всех доступных товаров с актуальными ценами в рублях.

{
  "stars": {
    "min_quantity": 50,
    "max_quantity": 1000000,
    "price_per_star_rub": 1.27
  },
  "premium": [
    {"duration_months": 3, "price_rub": 1500.00},
    {"duration_months": 6, "price_rub": 2200.00},
    {"duration_months": 12, "price_rub": 3499.00}
  ],
  "chatgpt": [
    {"id": "plus_1m",  "name": "Chat GPT Plus 1 мес",  "price_rub": 1499},
    {"id": "plus_12m", "name": "Chat GPT Plus 12 мес", "price_rub": 14999},
    {"id": "pro_1m",   "name": "Chat GPT Pro 1 мес",   "price_rub": 8999}
  ],
  "claude": [
    {"id": "pro",   "name": "Claude Pro",    "price_rub": 1299},
    {"id": "max5",  "name": "Claude Max 5",  "price_rub": 4999},
    {"id": "max20", "name": "Claude Max 20", "price_rub": 9999}
  ],
  "robux": [
    {"pack": "r80", "robux": 80, "name": "80 R$",   "price_rub": 88.00},
    {"pack": "r500","robux": 500,"name": "500 R$",  "price_rub": 410.00}
  ]
}

Создать заказ

POST /v1/order

Тело запроса зависит от category. Деньги списываются с баланса атомарно при создании заказа (если баланс недостаточен — 402, заказ не создаётся).

ChatGPT / Claude (CDK)

{
  "category": "chatgpt",
  "item": "plus_1m"
}

Авто-выдача через несколько секунд. Коды возвращаются в поле error (legacy-нейминг, см. статус). синхронно

Robux

{
  "category": "robux",
  "pack": "r500",
  "roblox_username": "PlayerNickname",
  "roblox_password": "secret_password"
}
Если Roblox запросит 2FA или капчу — заказ перейдёт в статус needs_verification. В error будет JSON с next_action — что именно требуется. Подтверждение через будущий POST /v1/order/{code}/verify (в разработке).

Stars

{
  "category": "stars",
  "quantity": 100,
  "recipient": "telegram_username"
}

Авто-выдача через Fragment (TON-транзакция). quantity: 50–1,000,000. Время выполнения: 30–120 сек. синхронно

Premium

{
  "category": "premium",
  "duration": 3,
  "recipient": "telegram_username"
}

Авто-выдача Telegram Premium через Fragment. duration: 3, 6 или 12 месяцев. Время выполнения: 30–120 сек. синхронно

Успешный ответ

{
  "order_code": "API-1718183020-A3F5C9",
  "status": "pending",
  "amount_rub": 1499.00,
  "detail": {
    "category": "chatgpt",
    "item": "plus_1m",
    "name": "Chat GPT Plus 1 мес"
  },
  "poll_url": "/v1/order/API-1718183020-A3F5C9"
}

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

GET /v1/order/{order_code}

Полинг для проверки статуса. Обычно CDK-заказ обрабатывается за 2-10 секунд.

statusОписание
pendingВ очереди на обработку
processingИдёт выдача
needs_verificationRoblox требует 2FA — см. error.next_action
completedГотово, см. external_id или error.codes
failedОшибка, баланс возвращён
{
  "order_code": "API-1718183020-A3F5C9",
  "category": "chatgpt",
  "item_key": "plus_1m",
  "amount_rub": 1499.00,
  "cost_rub": 0,
  "profit_rub": 1499.00,
  "status": "completed",
  "external_id": "XXXX-YYYY-ZZZZ",
  "error": "{\"codes\":[\"XXXX-YYYY-ZZZZ\"]}",
  "created_at": "2026-06-12 10:23:40",
  "completed_at": "2026-06-12 10:23:46"
}
GET /v1/orders?limit=20&offset=0

Список твоих заказов в обратном хронологическом порядке.

{
  "orders": [...],
  "limit": 20,
  "offset": 0
}

Примеры

curl

API_KEY="pad_live_..."

# Баланс
curl -H "Authorization: Bearer $API_KEY" \
  https://api.padington.com/v1/balance

# Каталог
curl -H "Authorization: Bearer $API_KEY" \
  https://api.padington.com/v1/catalog

# Купить ChatGPT Plus
curl -X POST https://api.padington.com/v1/order \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"category":"chatgpt","item":"plus_1m"}'

# Опрос статуса
curl -H "Authorization: Bearer $API_KEY" \
  https://api.padington.com/v1/order/API-1718183020-A3F5C9

Python

import requests, time

API_KEY = "pad_live_..."
BASE = "https://api.padington.com/v1"
H = {"Authorization": f"Bearer {API_KEY}"}

# Баланс
print(requests.get(f"{BASE}/balance", headers=H).json())

# Купить Claude Pro
r = requests.post(
    f"{BASE}/order",
    headers={**H, "Content-Type": "application/json"},
    json={"category": "claude", "item": "pro"},
).json()
code = r["order_code"]
print(f"Order: {code}, amount: {r['amount_rub']} RUB")

# Polling до завершения
while True:
    o = requests.get(f"{BASE}/order/{code}", headers=H).json()
    if o["status"] in ("completed", "failed"):
        print(o)
        break
    time.sleep(2)

JavaScript (Node)

const API_KEY = "pad_live_...";
const BASE = "https://api.padington.com/v1";
const H = { "Authorization": `Bearer ${API_KEY}` };

const balance = await fetch(`${BASE}/balance`, { headers: H }).then(r => r.json());
console.log(balance);

const order = await fetch(`${BASE}/order`, {
  method: "POST",
  headers: { ...H, "Content-Type": "application/json" },
  body: JSON.stringify({ category: "chatgpt", item: "plus_1m" }),
}).then(r => r.json());
console.log(order);

Цены

Лимиты и поведение

Поддержка

По вопросам и багам создавайте тикет через раздел «Поддержка» в боте.

Padington Shop API v1 · build 2026-06-12