Коллекция Public API GMXAZ Bot
Выберите запрос, заполните параметры и проверьте ответ в той же рабочей области.
https://gmx.az/api/v1X-API-KEY60 / минутаUSDВведение
API предоставляет каталог, проверку игрока, покупку ваучеров и пополнений, отслеживание заказов, проверку кодов и подписанные webhook для клиентов. Данные внутренних провайдеров никогда не включаются в ответы API и webhook для клиента.
Авторизация и безопасность
Передавайте приватный API ключ в заголовке X-API-KEY каждого защищённого запроса. Храните его только на backend. Не размещайте ключ в браузерном коде, Mini App, мобильной сборке или открытом репозитории.
X-API-KEY: YOUR_API_KEY
Accept: application/json
Идемпотентность
При создании заказа передавайте уникальный UUID в X-Idempotency-Key. Повтор с тем же ключом и телом вернёт существующий заказ. Повтор с другим телом вернёт IDEMPOTENCY_CONFLICT. В сгенерированной коллекции Postman не меняйте ключ операции при повторной попытке; очищайте его только перед новой финансовой операцией.
X-Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000
Процесс заказа
- Загрузите игры, категории и товары. Используйте актуальную цену, наличие, список полей и требование проверки игрока.
- Проверьте игрока, если supports_player_validation равен true или товар требует обязательную проверку.
- Создайте заказ с UUID ключом идемпотентности и при необходимости передайте callback_url и callback_mode.
- Отслеживайте заказ через GET /order/{id}, GET /orders или подписанные webhook до финального статуса.
Webhooks
Если API заказ содержит callback_url, платформа отправляет на него подписанные JSON обновления. Webhook содержит только данные заказа, товара, игрока, цены, статуса, выдачи и требуемого действия клиента. Названия, URL, ID заказов и сырые ответы внутренних провайдеров не раскрываются.
Режимы callback
legacy
Отправляет один финальный callback при статусе COMPLETED или CANCELED.
events
Отправляет подписанные изменения статуса PENDING, PROCESSING, COMPLETED и FAILED.
Заголовки webhook
| Заголовок | Описание |
|---|---|
X-EPINBULK-Signature-V2 | Рекомендуется: sha256=HMAC_SHA256(timestamp + "." + event_id + "." + raw_json_body, webhook_secret). Используйте заголовки timestamp и event-id, указанные выше. |
X-EPINBULK-Signature-Version | 2 |
X-EPINBULK-Signature | sha256=HMAC_SHA256(сырое_тело_json, секрет_webhook) |
X-EPINBULK-Timestamp | Время отправки webhook в ISO-8601. При проверке подписи V2 проверяйте также актуальность времени. |
X-EPINBULK-Event-Id | Уникальный UUID попытки обратного вызова. |
X-EPINBULK-Event | Actual event name: order.status_changed or qr_login.* |
Требования к callback URL
- Принимаются только HTTPS URL.
- Принимается только порт 443.
- Частные, зарезервированные и localhost адреса блокируются.
- Учётные данные в URL не принимаются.
- Перенаправления не выполняются.
- Сервер должен вернуть ответ 2xx.
График повторных попыток
1 → 1 минута → 2 → 5 минут → 3 → 15 минут → 4-6 → 60 минут → 7-20 → 6 часов · Максимум 20 попыток доставки.
Пример финального webhook legacy
{
"event_id": "47c8c6ba-16a5-4089-9f62-7ae1e51d4c0f",
"order_id": 8821,
"client_order_id": "order-10001",
"status": "COMPLETED",
"product_name": "Steam Wallet 10 USD",
"qty": 2,
"player_id": null,
"player_name": null,
"server_id": null,
"region": null,
"price": "19.9800",
"currency": "USD",
"delivery": [
"CODE-ONE-XXXX",
"CODE-TWO-XXXX"
],
"manual_action_required": false,
"delivery_message": null,
"timestamp": "2026-07-25T13:31:10+04:00"
}Пример webhook events
{
"event_id": "47c8c6ba-16a5-4089-9f62-7ae1e51d4c0f",
"event": "order.status_changed",
"callback_mode": "events",
"order_id": 8821,
"client_order_id": "order-10001",
"product_id": 91,
"product_name": "PUBG Mobile 60 UC",
"product_type": "TOPUP",
"game_id": 1,
"game_name": "PUBG Mobile",
"player_id": "51515969536",
"player_name": "PlayerOne",
"server_id": "1234",
"region": "TR",
"qty": 1,
"price": "0.8800",
"currency": "USD",
"delivery": [],
"manual_action_required": false,
"delivery_message": null,
"status": "COMPLETED",
"message": "Заказ успешно завершён.",
"timestamp": "2026-07-25T13:30:10+04:00"
}Проверка подписи
Вычислите HMAC SHA-256 от точного сырого JSON тела, используя webhook_secret, выданный вместе с доступом к API. Сравните результат с заголовком подписи, указанным в этой документации, безопасным по времени методом.
<?php
$secret = 'YOUR_WEBHOOK_SECRET';
$rawBody = file_get_contents('php://input');
$received = $_SERVER['HTTP_X_GAMEX_SIGNATURE'] ?? '';
$computed = 'sha256=' . hash_hmac('sha256', $rawBody, $secret);
if (!hash_equals($computed, $received)) {
http_response_code(401);
exit('Invalid signature');
}
http_response_code(204);
Жизненный цикл статусов
| Status | Terminal | Описание |
|---|---|---|
PENDING |
Нет | Заказ создан и ожидает обработки. |
PROCESSING |
Нет | Заказ обрабатывается. |
COMPLETED |
Да | Заказ успешно завершён. Для ваучера возвращаются коды. |
FAILED |
Да | Заказ завершился ошибкой или отменён. |
CANCELED |
Да | Заказ отменён. |
REFUNDED |
Да | Сумма возвращена на баланс. |
Коды ошибок
| Code | HTTP | Описание |
|---|---|---|
API_DISABLED | 503 | Public API отключён администратором. |
API_KEY_MISSING | 401 | Заголовок X-API-KEY не передан. |
CLIENT_ORDER_ID_CONFLICT | 409 | Этот client_order_id уже назначен другому заказу. |
GAME_NOT_FOUND | 404 | Игра не найдена или неактивна. |
IDEMPOTENCY_CONFLICT | 409 | Один ключ использован с другим содержимым запроса. |
IDEMPOTENCY_KEY_INVALID | 422 | Ключ идемпотентности недействителен или длиннее 128 символов. |
IDEMPOTENCY_KEY_REQUIRED | 422 | Для этой операции требуется стабильный ключ идемпотентности. |
INSUFFICIENT_FUNDS | 400 | Недостаточно средств для заказа. |
INVALID_API_KEY | 401 | API ключ недействителен или отключён, либо клиент неактивен. |
INVALID_QUANTITY | 422 | Количество превышает лимит товара или API. |
IP_NOT_ALLOWED | 403 | IP адрес запроса не разрешён. |
ORDER_FAILED | 409 | Не удалось создать или обработать заказ. |
ORDER_NOT_FOUND | 404 | Заказ не найден или принадлежит другому API пользователю. |
OUT_OF_STOCK | 409 | Не удалось создать или обработать заказ. |
PLAYER_ID_REQUIRED | 422 | Для пополнения требуется player_id. |
PLAYER_NOT_FOUND | 404 | Игрок не прошёл обязательную проверку. |
PRODUCT_NOT_FOUND | 404 | Товар пополнения не найден или неактивен. |
RATE_LIMIT_EXCEEDED | 429 | Превышен лимит запросов в минуту. |
REDEEM_CHECK_FAILED | 422 | Проверка кода не удалась, сервис отключён или недостаточно средств. |
SECURITY_ERROR | 400 | URL обратного вызова не соответствует требованиям безопасности. |
SERVER_ID_REQUIRED | 422 | Для товара требуется server_id. |
VALIDATION_ERROR | 422 | Параметр type или q имеет неверный формат. |
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "Поле product_id обязательно.",
"details": {
"max": 1
}
}
}
Лимиты и повторы
Соблюдайте лимит запросов в минуту. Повторяйте 429 и временные 5xx с экспоненциальной задержкой. При повторе того же заказа не создавайте новый ключ идемпотентности.
| Лимит запросов | 60 / минута |
|---|---|
| max_per_page | 100 |
| max_voucher_qty | 500 |
| max_topup_qty | 1 |
| default_callback_mode | legacy |
Загрузки и файлы Postman
Postman Collection JSON
Содержит все endpoints, параметры, тела запросов, успешные ответы, примеры ошибок, тесты, идемпотентность и примеры приёмника webhook.
Postman Environment JSON
Содержит только переменные. Импортируйте вместе с коллекцией и заполните x_api_key, webhook_secret, callback_url и тестовые идентификаторы.
OpenAPI JSON
Машиночитаемая спецификация OpenAPI 3.1 с путями, схемами, безопасностью, ошибками и webhook.
Полный API JSON
Полный экспорт модели документации: endpoints, параметры, примеры, статусы, политика webhook, лимиты, ошибки и журнал изменений.
Запрос
Управляйте параметрами пути и запроса здесь.
| Ключ | Значение | Расположение | Описание |
|---|
X-API-KEYСистемные заголовки добавляются автоматически.
| Заголовок | Значение | Описание |
|---|
Измените JSON тело.
Ответ появится здесь после отправки запроса.