KinetX Operator API
Создайте собственный фронтенд казино или подключите свой бэк-офис к KinetX: игроки, кошелёк, платежи, игры, бонусы, ответственная игра и отчёты через один подписанный REST API, а также вебхуки обо всём, что происходит на платформе.
Введение
Operator API предназначен для API-операторов (headless), которые ведут собственный сайт или приложение, и для Turnkey-операторов, сохраняющих свой фронтенд или платёжного провайдера. Все бизнес-правила платформы действуют для API-вызовов так же, как в бэк-офисе: пороги KYC, лимиты ответственной игры и периоды ожидания, самоисключение, условия бонусов, AML-мониторинг и журнал аудита.
Проверка учётных данных: какому оператору принадлежит ключ и какие у него права.
Регистрация игроков, чтение и изменение профилей и статуса, выдача токенов сессии игрока для вашего фронтенда.
Реальный и бонусный балансы и журнал операций игрока.
Запись депозитов, принятых вашим платёжным провайдером, заявки на вывод и отслеживание их статуса.
Каталог игр (провайдеры, категории, RTP) и ссылки запуска игр.
Ваш каталог бонусов, начисление бонусов, активация промокодов и бонусы игрока.
Лимиты депозитов, ставок, проигрышей, баланса и сессии с периодами ожидания, а также самоисключение.
Сводки GGR и платежей за период.
Методы, которые ваш фронтенд вызывает напрямую с токеном сессии игрока (Authorization: Bearer).
Быстрый старт
- 1В бэк-офисе откройте Инструменты → API и вебхуки и создайте API-ключ с нужными правами. Скопируйте секрет: он показывается только один раз.
- 2При желании ограничьте ключ IP-адресами своих серверов.
- 3Подпишите запрос к
GET /api/v1/operator/meи убедитесь, что он возвращает вашего оператора. Как подписывать запросы → - 4Добавьте адрес вебхука, чтобы получать уведомления о регистрациях, платежах, бонусах, KYC и событиях комплаенса.
Базовый URL:
https://kinetx.amhtechnologies.com/api/v1
Соглашения
- Запросы и ответы — в формате JSON (
application/json). Успешные ответы оборачивают результат вdata. - Деньги всегда передаются целым числом в минимальных единицах валюты (центах):
12550— это €125,50. Валюты — коды ISO 4217. - Метки времени — ISO 8601 в UTC (
2026-10-15T09:30:00Z); даты —YYYY-MM-DD. - Идентификаторы — целочисленные id KinetX. Храните свой id игрока в
external_idи ищите игроков по нему. - Каждый ответ содержит заголовок X-Request-Id; указывайте его при обращении в поддержку.
- API-ключ видит только данные своего оператора: записи других операторов отвечают 404.
Идемпотентность
Сетевые сбои случаются. Отправляйте заголовок Idempotency-Key (UUID) с каждым POST: первый ответ хранится 24 часа и воспроизводится для каждого повтора с тем же ключом и тем же запросом с отметкой Idempotent-Replayed: true. Повторное использование ключа для другого запроса отклоняется с IDEMPOTENCY_KEY_REUSED; повтор, пока первый запрос ещё выполняется, получает 409 IDEMPOTENCY_IN_PROGRESS.
Движения денег дополнительно идемпотентны по вашей собственной ссылке: депозит с уже записанным external_reference возвращает исходный депозит вместо повторного зачисления.
Ошибки
Ошибки используют HTTP-статусы и единую обёртку со стабильным машиночитаемым кодом:
{
"error": {
"code": "VALIDATION_FAILED",
"message": "The request data is invalid.",
"details": {
"birth_date": [
"The player must be at least 18 years old."
]
}
}
}
| Код | HTTP | Значение |
|---|---|---|
| MISSING_CREDENTIALS | 401 | Отсутствует X-Api-Key, X-Timestamp или X-Signature. |
| INVALID_API_KEY | 401 | API-ключ не существует. |
| API_KEY_INACTIVE | 401 | API-ключ отозван или истёк, либо аккаунт оператора неактивен. |
| TIMESTAMP_OUT_OF_RANGE | 401 | X-Timestamp отличается от времени сервера более чем на 300 секунд; details.server_time содержит часы сервера. |
| INVALID_NONCE | 401 | X-Nonce длиннее 128 символов. |
| INVALID_SIGNATURE | 401 | X-Signature не соответствует запросу. |
| REPLAYED_REQUEST | 401 | Этот подписанный запрос уже был получен. Подписывайте каждый запрос новой меткой времени (или nonce). |
| INVALID_PLAYER_TOKEN | 401 | Токен сессии игрока отсутствует, недействителен или истёк. |
| IP_NOT_ALLOWED | 403 | IP вызывающего не входит в список разрешённых для API-ключа. |
| INSUFFICIENT_SCOPE | 403 | У API-ключа нет права доступа к методу; оно указано в details.required_scopes. |
| FEATURE_NOT_AVAILABLE | 403 | Недоступно для вашей модели сотрудничества. |
| NOT_FOUND | 404 | Ресурс не существует или принадлежит другому оператору. |
| METHOD_NOT_ALLOWED | 405 | HTTP-метод не поддерживается этим методом API. |
| IDEMPOTENCY_IN_PROGRESS | 409 | Запрос с этим Idempotency-Key ещё выполняется. Повторите чуть позже. |
| DUPLICATE_TRANSACTION | 409 | Ссылка уже использована для другой операции. |
| INSUFFICIENT_FUNDS | 402 | Недостаточно средств на балансе. |
| VALIDATION_FAILED | 422 | Данные запроса неверны; details сопоставляет каждому полю его сообщения. |
| INVALID_REQUEST | 422 | Запрос не может быть обработан в отправленном виде. |
| IDEMPOTENCY_KEY_REUSED | 422 | Этот Idempotency-Key уже использован для другого запроса. |
| INVALID_IDEMPOTENCY_KEY | 422 | Idempotency-Key длиннее 255 символов. |
| SELF_EXCLUDED_IDENTITY | 422 | Существует самоисключённый игрок с теми же личными данными. |
| PLAYER_RESTRICTED | 422 | Аккаунт заблокирован, закрыт или самоисключён, либо действие отключено для игрока. |
| LIMIT_EXCEEDED | 422 | Лимит ответственной игры (депозит, ставка, проигрыш, баланс или сессия) не разрешает действие. |
| RESPONSIBLE_GAMING_RULE | 422 | Правило ответственной игры не разрешает изменение (например, сокращение самоисключения). |
| KYC_REQUIRED | 422 | Для этого вывода игрок должен пройти верификацию (KYC). |
| PAYMENT_REQUEST_INVALID | 422 | Платёжное правило отклоняет заявку (границы суммы, метод, дневные лимиты). |
| BONUS_INVALID | 422 | Бонусное правило не разрешает действие (исключённый игрок, лимит начислений, максимальная ставка). |
| PROMO_CODE_INVALID | 422 | Промокод неизвестен, истёк или уже использован игроком. |
| NOT_AN_ORIGINAL | 422 | Игра не является KinetX Original. |
| RATE_LIMITED | 429 | Слишком много запросов для этого API-ключа; подождите Retry-After секунд. |
| SERVER_ERROR | 500 | Непредвиденная ошибка. Повторите с тем же Idempotency-Key; обратитесь в поддержку с X-Request-Id. |
Постраничный вывод
Списочные методы принимают page и per_page (1–100, по умолчанию 25) и возвращают meta и links рядом с данными:
{
"data": [
"…"
],
"meta": {
"current_page": 2,
"per_page": 25,
"total": 137,
"last_page": 6,
"from": 26,
"to": 50
},
"links": {
"first": "…?page=1",
"last": "…?page=6",
"prev": "…?page=1",
"next": "…?page=3"
}
}
Ограничения частоты
Каждый API-ключ по умолчанию может отправлять 600 запросов в минуту (сотрудники могут задать для ключа другой лимит). Токены игроков учитываются в лимите ключа, который их выдал. Каждый ответ сообщает остаток в X-RateLimit-Limit и X-RateLimit-Remaining; при превышении вы получите 429 RATE_LIMITED с заголовком Retry-After.
Версионирование
Версия — часть пути (/api/v1). В пределах v1 мы только добавляем: новые методы, необязательные параметры, поля ответа и события вебхуков. Игнорируйте неизвестные поля. Несовместимые изменения выйдут как v2 и будут заранее объявлены в журнале изменений.