Документация реселлерского API
Реселлерский API SHOP2TOPUP — это JSON REST API для продажи игровых пополнений, пополнений игровых счетов и кодов ваучеров из вашего собственного магазина, витрины или бота. В этом справочнике описан каждый публичный эндпоинт, его параметры и его ответы.
Базовый URL и транспорт
Каждый путь в этом справочнике указан относительно базового URL ниже. Запросы и ответы — JSON поверх HTTPS, суммы передаются строками, чтобы не возникало погрешностей округления, а все метки времени — UTC в формате ISO 8601.
https://shop2topup.com/api/endpoints/v1
Аутентификация
Каждый запрос несёт один заголовок. Пара ключей выпускается на странице API Access в панели реселлера и может быть ограничена списком разрешённых IP; вызов с любого другого адреса отклоняется с IP_NOT_ALLOWED ещё до бизнес-логики.
Authorization: Bearer <keyId>.<secret>Первый вызов
Ничего устанавливать не нужно. Подставьте свой ключ — и это вернёт живые данные каталога.
curl -s "https://shop2topup.com/api/endpoints/v1/catalog/categories?bigCategoryId=1" \
-H "Authorization: Bearer YOUR_KEY_ID.YOUR_KEY_SECRET"Соглашения ответов
- Каждый ответ несёт булево поле success, поэтому одна ветка отделяет успешный сценарий от любого сбоя.
- Ошибки возвращают объект error со стабильным code, понятным человеку message и необязательными details. Ветвитесь по коду, а не по сообщению.
- Деньги — всегда десятичная строка вида "0.950000" в USD. Не превращайте её в двоичное число с плавающей точкой перед сравнением или суммированием.
- Списочные эндпоинты возвращают объект pagination с полями page, limit, total и total_pages.
- Создание заказа идемпотентно по переданному вами UUID в order_id, поэтому повтор не может списать дважды.
{
"success": false,
"error": {
"code": "PRICE_INCREASED",
"message": "Price has increased beyond expected",
"details": {
"expected_unit_price": "0.950000",
"current_unit_price": "0.980000"
}
}
}Разделы справочника
Лимиты запросов
Лимиты считаются на аккаунт по скользящему окну. Каждый ответ несёт X-RateLimit-Limit, X-RateLimit-Remaining и X-RateLimit-Reset, а ограниченный вызов отвечает 429 с заголовком Retry-After.
| Маршрут | Запросов | Окно | Считается на |
|---|---|---|---|
| GET /catalog/* (all five) | 80 | 60s | per account |
| POST /orders/create | 120 | 60s | per account |
| GET /orders/:orderId | 3 | 60s | per account + order id |
| POST /orders/batch | 2 | 60s | per account |
| GET /orders | 2 | 60s | per account |
| GET /account | 60 | 60s | per account |
| POST /player/validate | dedicated limiter | — | per account |
Вебхуки
Результаты заказов отправляются на зарегистрированный вами HTTPS-эндпоинт и подписываются HMAC-SHA256 по сырому телу. Список событий, список заголовков, форма тела и пример проверки описаны на обзорной странице API.
Открыть справочник по телу вебхука и подписиВпервые на платформе? Начните с обзора API пополнения игр для реселлеров, а затем прочитайте обзор реселлерской программы SHOP2TOPUP, чтобы понять, как устроен партнёрский аккаунт.