Покупка товаров программно с того же баланса, что и в боте.
База: 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/мин) |
| 503 | API выключен владельцем магазина |
Тело ошибки: {"detail": {"error": "insufficient_funds",
"message": "…"}}
60 запросов в минуту на ключ сокращение ссылок — без ограничения по количеству
В каждом ответе: X-RateLimit-Limit,
X-RateLimit-Remaining, X-RateLimit-Reset.