Справочник
Справочник ошибок
Ошибки возвращаются как {"status":"error","message":"<CODE>"} с HTTP-статусом из таблицы. Ориентируйтесь на код, а не только на HTTP-статус. Для поиска по коду или тексту используйте фильтр.
| Код | HTTP | Где | Значение | Что делать |
|---|---|---|---|---|
UNAUTHORIZED | 401 | API (любой метод) | Неизвестный partner или неверный api_key. | Проверьте partner и api_key. Если ключ перевыпускали, установите новый. |
IP_NOT_ALLOWED | 403 | API (любой метод) | IP вызывающего сервера не входит в список разрешённых для проекта (/gameActions.do, /playerRtp.do). | Попросите владельца платформы добавить вашу сеть (CIDR) в админке, раздел IP Whitelist. |
INVALID_REQUEST | 400 | API (любой метод) | Тело запроса некорректно: нет обязательного поля, неверный тип или передано неизвестное поле (запуск принимает только описанные поля). | Сверьте запрос с описанием метода, уберите лишние поля. |
INVALID_IDEMPOTENCY_KEY | 400 | API (любой метод) | Заголовок Idempotency-Key не состоит из 1–128 печатных ASCII-символов (или передан дважды). | Используйте UUID или короткий ключ без пробелов. |
IDEMPOTENCY_CONFLICT | 409 | API (любой метод) | Тот же Idempotency-Key уже использован с другим телом запроса. | Для нового запроса берите новый ключ; повтор с тем же телом вернёт первый ответ. |
REQUEST_FAILED | 400 | API (любой метод) | Запрос не выполнен по причине, для которой нет публичного кода. | Повторите один раз; если повторяется, обратитесь к владельцу платформы, указав время запроса. |
FORBIDDEN | 403 | API (любой метод) | Действие недоступно этому вызывающему. | Не повторяйте; проверьте права (админка) или параметры запуска. |
UNSUPPORTED_GAME | 404 | /playGame.do | symbol не является id опубликованной игры. | Берите id из GET /games/health (game_id). |
UNSUPPORTED_LANGUAGE | 400 | /playGame.do | lang задан неверно или не поддерживается этой игрой. | Используйте код из списка languages игры или не передавайте lang (будет язык проекта). |
REAL_MODE_DISABLED | 400 | /playGame.do | gametype не равен demo. Режим реальных денег недоступен. | Передавайте "gametype": "demo". |
PROMO_UNSUPPORTED | 400 | /playGame.do | В запуск передано устаревшее поле freespins. | Уберите его и выдавайте фриспины через /gameActions.do (freespins_create). |
ROUND_IN_PROGRESS | 400 | /playGame.do | У игрока есть незавершённый раунд в этой игре в другой валюте. | Запустите игру в валюте незавершённого раунда (или дождитесь его завершения). |
BALANCE_UNAVAILABLE | 400 | /playGame.do | Запрос session_info к вашему кошельку не выполнен, сессия не создана. | Проверьте адрес callback и формат ответа (см. «Callbacks кошелька»); используйте «Test connection» в админке. |
INVALID_METHOD | 400 | /gameActions.do | method не входит в список поддерживаемых. | Используйте методы freespins_* или outcome_* из этой документации. |
METHOD_RETIRED | 400 | /gameActions.do | Вызван устаревший метод (freespins_set, freespins_delete или freespins_get без id). | Перейдите на freespins_create, freespins_get, freespins_list, freespins_cancel. |
GAME_NOT_FOUND | 404 | /gameActions.do | symbol не является опубликованной игрой. | Берите id из GET /games/health. |
DUPLICATE_EXTERNAL_ID | 409 | /gameActions.do | external_id уже занят другой записью проекта. | Используйте уникальный external_id или прочитайте существующую запись по нему. |
PROJECT_BET_LIMIT | 400 | /gameActions.do | Ставка вне лимитов проекта, игры или игрока. Также возвращается игрой при ставке вне лимитов. | Выберите ставку в пределах лимитов (см. «Лимиты ставок») или измените лимиты в админке. |
INVALID_COUNT | 400 | Фриспины | count не целое число от 1 до 1000. | Передайте значение 1–1000. |
INVALID_FREE_SPIN_BET | 400 | Фриспины | bet не является допустимой ставкой базового режима игры (или не десятичная строка). | Используйте одну из ставок игры десятичной строкой, например "1.00". |
INVALID_EXPIRY | 400 | Фриспины | expires_at не дата ISO 8601 с часовым поясом или вне допустимого диапазона (фриспины: от +1 часа до +30 дней; целевые исходы: от +1 часа до +90 дней). | Передайте значение вида 2026-11-01T12:00:00Z в диапазоне или опустите поле (по умолчанию 7 дней). |
FREE_SPINS_UNSUPPORTED | 400 | Фриспины | Для провайдера этой игры фриспины недоступны. | Проверьте флаг free_spins в GET /games/health. |
GRANT_NOT_FOUND | 404 | Фриспины | В проекте нет выдачи фриспинов с таким grant_id / external_id. | Проверьте id; получите список через freespins_list. |
FORCED_OUTCOMES_UNSUPPORTED | 400 | Целевые исходы | Для провайдера этой игры целевые исходы недоступны. | Проверьте флаг target_outcomes в GET /games/health. |
GAME_HAS_NO_BONUS | 400 | Целевые исходы | kind равен bonus, но в игре нет бонусного раунда. | Используйте kind: "spin". |
INVALID_MULTIPLIER | 400 | Целевые исходы | multiplier не положительное число максимум с 2 знаками после точки (до 7 цифр до точки). | Передайте, например, 50 или "12.5". |
MULTIPLIER_ABOVE_MAX_WIN | 400 | Целевые исходы | multiplier выше максимального выигрыша игры (в ставках). | Уменьшите множитель. |
INVALID_SPIN_NUMBER | 400 | Целевые исходы | spin_number не целое число от 1 до 100000. | Передайте значение 1–100000. |
INVALID_KIND | 400 | Целевые исходы | kind не равен spin или bonus. | Используйте spin или bonus. |
OUTCOME_NOT_FOUND | 404 | Целевые исходы | В проекте нет целевого исхода с таким outcome_id / external_id. | Проверьте id; получите список через outcome_list. |
INVALID_ACTION | 400 | /playerRtp.do | action не равен get, set, auto или bet-limit. | Используйте одно из четырёх действий. |
RTP_PROVIDER_UNSUPPORTED | 400 | /playerRtp.do | provider не равен endorphina, pragmatic или nolimitcity. | Передайте поддерживаемый id провайдера. |
RTP_LEVEL_INVALID | 400 | /playerRtp.do | rtp не число максимум с 2 знаками после точки. | Передайте, например, 94.5. |
RTP_LEVEL_OUT_OF_RANGE | 400 | /playerRtp.do | RTP вне диапазона 60–100 %. | Передайте значение от 60 до 100. |
RTP_POLICY_REQUIRED | 400 | /playerRtp.do | В проекте ещё не задан RTP провайдера, поэтому нового игрока нельзя привязать. | Задайте RTP провайдера в админке: RTP & players. |
INVALID_REASON | 400 | /playerRtp.do | reason длиннее 200 символов или не строка. | Сократите причину. |
INVALID_CURRENCY | 400 | /playerRtp.do | currency не трёхбуквенный код в верхнем регистре. | Передайте, например, EUR. |
INVALID_BET_LIMIT | 400 | /playerRtp.do | min_minor / max_minor не строки из цифр, min меньше 1 или max меньше min. | Передайте минорные единицы строками, min ≥ 1, max ≥ min; либо оба null, чтобы снять лимит. |
INVALID_PLAYER | 400 | /playerRtp.do | player_id отсутствует или некорректен. | Передайте id игрока, с которым делали запуск. |
INSUFFICIENT_FUNDS | 200 | Ваш кошелёк | Ваш ответ на bet, когда баланса игрока не хватает: {"status":"error","message":"INSUFFICIENT_FUNDS",…}. Раунд отклоняется, ничего не списывается. | Возвращайте его только при реальной нехватке средств; любая другая ошибка приводит к повторам со стороны платформы. |
CALLBACK_HTTP_ERROR | — | Ваш кошелёк | Встречается в API Logs админки: ваш кошелёк ответил HTTP-статусом не 2xx. | Возвращайте HTTP 200 с JSON-ответом (в том числе для INSUFFICIENT_FUNDS). |
INVALID_CALLBACK_RESPONSE | — | Ваш кошелёк | Встречается в API Logs админки: ответ не JSON, status не ok/error или currency не совпадает с валютой запроса. | Отвечайте {"status":"ok","balance":<число>,"currency":"<та же валюта>"}. |
GAME_MODE_DISABLED | 400 | В игре | Режим игры (например, покупка бонуса или ante) отключён для проекта. | Включите флаг в админке: Projects, Providers. |
PROJECT_GAME_DISABLED | 400 | В игре | Игра или её провайдер отключены для проекта. | Включите провайдера в админке: Projects, Providers. |
CURRENCY_REQUIRED | 400 | В игре | Нужна валюта из списка поддерживаемых. | Передайте UAH, USD, EUR или RUB. |
FREE_SPINS_ACTIVE | — | В игре | У игрока есть активные фриспины в этой игре, а он попытался сделать платный спин, ante или покупку бонуса. Показывается игровым клиентом, оператору по API не возвращается. | Игрок сначала доигрывает фриспины; они заканчиваются, когда использованы, истекли или отменены. |
UNKNOWN_PROJECT | 404 | API админки | Проект (partner) не существует. | Проверьте id проекта. |
INVALID_ADMIN_ORIGIN | 403 | API админки | Запрос на изменение к API админки пришёл без ожидаемых заголовков Origin / X-Admin-Request. | Работайте через саму админку; API админки не является публичным API интеграции. |
PROJECT_SETTINGS_CONFLICT | 409 | API админки | Настройки проекта уже сохранил кто-то другой. | Обновите страницу и повторите изменение. |
UNSUPPORTED_BY_RUNTIME | 400 | API админки | Настройка, которую платформа не может выполнить (устаревшая политика RTP, уведомления, стратегия удержания). | Оставьте её выключенной; вместо устаревшей политики используйте персональный RTP. |
INVALID_CALLBACK_URL | 400 | API админки | Адрес callback недопустим. | Используйте https://, без завершающего слэша, без логина/пароля, query и фрагмента, только порт 443, не длиннее 512 символов, публичное имя хоста. |
CONFIRMATION_REQUIRED | 400 | API админки | Для перевыпуска ключа нужно ввести id проекта как подтверждение. | Введите id проекта в поле подтверждения. |
CREDENTIALS_CHANGED | 409 | API админки | Пока вы работали, ключ API изменил кто-то другой. | Обновите страницу и примите решение заново. |
PARTNER_LOCKED | 403 | API админки | Проект служебный (демо или кошелёк сайта); ключ и callback доступны только для чтения. | Ничего не делайте; работайте в своём проекте. |
CREDENTIALS_NOT_ENABLED | 503 | API админки | Изменение ключей и адресов callback пока не включено на сервере. | Обратитесь к владельцу платформы. |
Общие советы#
- 4xx: исправьте запрос; повтор без изменений снова завершится ошибкой (кроме
IDEMPOTENCY_CONFLICT, где повтор исходного запроса вернёт первый ответ). - Сетевая ошибка или тайм-аут: повторите с тем же
Idempotency-Key(Соглашения). REQUEST_FAILED: повторите один раз, затем обратитесь к владельцу платформы.- Сбои на стороне кошелька видны в API Logs админ-панели с теми же кодами (Админ: операции).