Gade Store — API для селлеров

Покупка товаров программно с того же баланса, что и в боте. База: https://shop.ramgade.online/api/v1

Доступ

API входит в подписку «низкие цены». Порядок: оформить подписку в боте → Профиль → API для селлеров → Создать API-ключ. Ключ показывается один раз, на сервере хранится только его SHA-256. Новый ключ отзывает предыдущий.

Каждый запрос: заголовок X-Api-Key: sk_…

Эндпоинты

МетодПутьЗачем
GET/catalogтовары, цены, остатки
GET/balanceбаланс ключа
POST/purchasesпокупка (идемпотентная)
GET/purchases/{id}что выдано по покупке
GET/purchasesпоследние покупки
GET/salesвсе проданные позиции за период (period=t|w|m|a или date_from/date_to): когда, за сколько, что выдано, ваша цена и прибыль; format=csv — файл для Excel
GET/profitприбыль за период: итого, по товарам, по дням
GET / PUT / DELETE/profit/prices[/{product_id}]ваши цены продажи: {"price": "170 с 01.10"} — по товару, с даты; заказы размечать не нужно
POST/short-linksсократить ссылки — сколько угодно за запрос
POST/funpay/price-hintsместо ваших лотов FunPay по цене и цена входа в топ (нужен открытый анализ рынка)

Интерактивная схема со всеми полями: /api/docs

Покупка

curl -X POST https://shop.ramgade.online/api/v1/purchases \
  -H "X-Api-Key: sk_xxx" \
  -H "Idempotency-Key: 8f14e45f-ea0a-4b2d-9f61-000000000001" \
  -H "Content-Type: application/json" \
  -d '{"product_id": 11, "qty": 2}'
{"purchase_id": 2753, "status": "paid", "qty": 2, "delivered": 2,
 "total_kop": 8000, "balance_kop": 12000,
 "items": ["https://…/1", "https://…/2"]}

Idempotency-Key — свой уникальный идентификатор запроса (UUID). Повтор с тем же ключом вернёт тот же ответ и не спишет деньги второй раз; в ответе будет заголовок Idempotent-Replay: true.

Коды ответов

КодКогда
200успех
401нет ключа или он отозван
402нет подписки, либо не хватает баланса
403аккаунт заблокирован или нужна подписка на канал
404товар или покупка не найдены
409нет на складе / запрос с этим ключом ещё выполняется
422некорректное тело запроса
429слишком часто (60/мин)
503API выключен владельцем магазина

Тело ошибки: {"detail": {"error": "insufficient_funds", "message": "…"}}

Лимиты

60 запросов в минуту на ключ  сокращение ссылок — без ограничения по количеству

В каждом ответе: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.