Справочник
Справочник ошибок
Ошибки возвращаются как {"status":"error","message":"<CODE>"} с HTTP-статусом из таблицы ниже. Ориентируйтесь на код, а не только на HTTP-статус. Фильтр ищет по коду и тексту. Правила формата: Соглашения.
| Код | HTTP | Где | Значение | Что делать |
|---|---|---|---|---|
UNAUTHORIZED | 401 | API (любой метод) | Неизвестный partner или неверный api_key. | Проверьте partner и api_key. Если ключ перевыпускали, установите новый. |
INVALID_REQUEST | 400 | API (любой метод) | Нет обязательного поля, неверный тип или формат (например, currency, player_id, client_platform, region, demo_reset) либо передано неизвестное поле. /playGame.do, round_cancel и отчёты принимают только описанные поля. | Сверьте запрос с описанием метода и уберите неизвестные поля. Тело, которое не является корректным JSON, получает ответ REQUEST_FAILED. |
INVALID_IDEMPOTENCY_KEY | 400 | API (любой метод) | Заголовок Idempotency-Key не состоит из 1–128 печатных ASCII-символов (или передан дважды). | Используйте UUID или короткий ключ без пробелов. |
IDEMPOTENCY_CONFLICT | 409 / 400 | API (любой метод) | Тот же Idempotency-Key уже использован с другим телом запроса. HTTP 409 на /gameActions.do; на /playGame.do тот же код приходит с HTTP 400. | Для нового запроса берите новый ключ; повтор с тем же телом вернёт первый ответ. |
REQUEST_FAILED | 400 | API (любой метод) | Запрос не выполнен по причине без публичного кода: тело не является корректным JSON, тип содержимого не JSON и не форма либо произошёл тайм-аут или сбой сети (например, при обращении к вашему кошельку при запуске). | Проверьте тело и Content-Type: application/json. Если с телом всё в порядке, повторите один раз; если повторяется, обратитесь к владельцу платформы, указав время запроса. |
FORBIDDEN | 403 | API (любой метод) | Действие недоступно этому вызывающему. | Не повторяйте; проверьте права (админка) или параметры запуска. |
RATE_LIMITED | 429 | API (любой метод) | Исчерпана минутная квота проекта для этого класса запросов (запуск, действия, отчёты). Квота считается до проверки ключа, поэтому запросы с неверным ключом тоже её расходуют. | Подождите Retry-After секунд и повторите; распределяйте массовые вызовы. См. «Соглашения», раздел о лимитах. |
DATABASE_UNAVAILABLE | 503 | API (любой метод) | GET /health не смог обратиться к базе данных. | Повторите чуть позже; если не проходит, обратитесь к владельцу платформы. |
UNSUPPORTED_GAME | 404 | /playGame.do | symbol не передан, не строка или не является id опубликованной игры. | Берите id из GET /games/catalog (game_id). |
UNSUPPORTED_LANGUAGE | 400 | /playGame.do | lang задан неверно или не поддерживается этой игрой. | Используйте код из списка languages игры или не передавайте lang (будет язык проекта). |
REAL_MODE_DISABLED | 400 | /playGame.do | gametype не равен ни demo (ваш кошелёк), ни fun (бесплатная демо-игра). Режим реальных денег недоступен. | Передавайте "gametype": "demo" или "gametype": "fun". |
INVALID_DEMO_BALANCE | 400 | /playGame.do | demo_balance запуска gametype: "fun" вне диапазона 1.00–10 000 000.00 или не число с двумя знаками. | Передайте значение в диапазоне, например "100000.00", или опустите поле (по умолчанию). |
DEMO_UNAVAILABLE | 503 | /playGame.do | Демо-режим не подготовлен на этом сервере. | Обратитесь к владельцу платформы. |
PROMO_UNSUPPORTED | 400 | /playGame.do | В запуск передано устаревшее поле freespins. | Уберите его и выдавайте фриспины через /gameActions.do (freespins_create). |
ROUND_IN_PROGRESS | 400 | /playGame.do | У игрока есть незавершённый раунд в этой игре в другой валюте. | Запустите игру в валюте незавершённого раунда (или дождитесь его завершения). |
BALANCE_UNAVAILABLE | 400 | /playGame.do | Ваш кошелёк ответил на запрос session_info при запуске {"status":"error",…}, сессия не создана. | Пусть session_info отвечает status: "ok" с балансом известного игрока; используйте «Test connection» в админ-панели. |
WALLET_IDENTITY_MISMATCH | 400 | /playGame.do | Сохранённые настройки кошелька проекта не совпадают с конфигурацией сервера, поэтому платформа не обращается к вашему кошельку. | Обратитесь к владельцу платформы; причина не в запросе. |
IP_NOT_ALLOWED | 403 | /gameActions.do | IP вызывающего сервера не входит в список разрешённых для проекта (/gameActions.do, /playerRtp.do; /playGame.do IP не проверяет). | Попросите владельца платформы или пользователя проекта с правом на учётные данные добавить вашу сеть (CIDR) в админ-панели, раздел IP Whitelist. |
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 | Ставка вне лимитов проекта, игры или игрока. Также возвращается игрой при ставке вне лимитов. | Выберите ставку в пределах лимитов (см. «Лимиты ставок») или измените лимиты в админке. |
ROUND_NOT_FOUND | 404 | /gameActions.do | round_id не является раундом этого партнёра. | Возьмите id из meta.round_id callback кошелька или из report_rounds. |
ROUND_NOT_CANCELLABLE | 409 | /gameActions.do | Раунд нельзя отменить: он завершён, выигрыш зачисляется, результат уже показан игроку или это фриспин-раунд. | Ничего не делайте; посмотрите раунд через report_rounds. |
ROUND_BUSY | 409 | /gameActions.do | Сейчас идёт обращение к кошельку по этому раунду. | Повторите через несколько секунд. |
ROUND_CANCEL_UNAVAILABLE | 400 | /gameActions.do | Отмена раундов пока не включена на сервере. | Обратитесь к владельцу платформы. |
INVALID_PERIOD | 400 | /gameActions.do | from не раньше to или период report_ggr длиннее 366 дней. | Используйте даты ISO и более короткий период. |
INVALID_CURSOR | 400 | /gameActions.do | cursor не является next_cursor этого отчёта. | Передавайте next_cursor без изменений и с теми же фильтрами. |
INVALID_GROUP_BY | 400 | /gameActions.do | group_by содержит значение, отличное от day, symbol, currency. | Используйте подмножество этих трёх. |
INVALID_STATE | 400 | /gameActions.do | state в report_rounds не равен settled, pending, cancelled или rejected. | Используйте одно из этих значений. |
INVALID_LIMIT | 400 | /gameActions.do | limit отчёта вне допустимого диапазона (раунды 1–500, сверка 1–1000). | Передайте целое число из диапазона и листайте через cursor. |
INVALID_FROM | 400 | /gameActions.do | from не является датой или датой-временем ISO 8601 с зоной (Z или +hh:mm). | Используйте 2027-01-15 или 2027-01-15T12:00:00Z. |
INVALID_PLAYER_ID | 400 | /gameActions.do | player_id отчёта не является короткой печатной строкой. | Передавайте id в том виде, в каком используете его в других методах. |
INVALID_TO | 400 | /gameActions.do | to не является датой или датой-временем ISO 8601 с зоной (Z или +hh:mm). | Используйте 2027-01-15 или 2027-01-15T12:00:00Z. |
INVALID_SYMBOL | 400 | /gameActions.do | symbol отчёта не является короткой печатной строкой. | Передайте id игры из GET /games/catalog. |
INVALID_ROUND_ID | 400 | /gameActions.do | round_id отчёта не является короткой печатной строкой. | Возьмите id из meta.round_id callback кошелька или из report_rounds. |
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 не является поддерживаемым фиатным кодом ISO 4217 (/playerRtp.do, bet-limit: три заглавные буквы; отчёты: код вне списка поддерживаемых). | Передайте поддерживаемый код в верхнем регистре, например 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 отсутствует или некорректен. /playerRtp.do принимает только буквы, цифры и _ . : @ -, 1–128 символов. | Передайте id игрока, с которым делали запуск (id с другими символами через этот метод управлять нельзя). |
INSUFFICIENT_FUNDS | 200 | Ваш кошелёк | Ваш ответ на bet, когда баланса игрока не хватает: {"status":"error","message":"INSUFFICIENT_FUNDS",…}. Раунд отклоняется, ничего не списывается. | Возвращайте его только при реальной нехватке средств; любая другая ошибка приводит к повторам со стороны платформы. |
CALLBACK_HTTP_ERROR | 400 | Ваш кошелёк | Ваш кошелёк ответил HTTP-статусом не 2xx. При запуске (session_info) этот код возвращается вам с HTTP 400. Для bet любой 4xx, кроме 408 и 429, означает окончательный отказ: раунд сразу отклоняется и ставится в очередь refund; 5xx, 408 и 429 повторяются. | Возвращайте HTTP 200 с JSON-ответом (в том числе для INSUFFICIENT_FUNDS). 4xx используйте только для окончательного отказа в ставке. |
INVALID_CALLBACK_RESPONSE | 400 | Ваш кошелёк | Ответ кошелька непригоден: не JSON, status не ok/error, currency не совпадает с путём callback или balance не простое неотрицательное число JSON максимум с 2 знаками. Ответы с ошибкой тоже должны содержать balance и currency. При запуске этот код возвращается вам с HTTP 400. | Отвечайте {"status":"ok","balance":<число>,"currency":"<та же валюта>"}; при отказе {"status":"error","message":"…","balance":<число>,"currency":"<та же валюта>"}. |
TRANSACTION_CANCELLED | 200 | Ваш кошелёк | Ответ вашего кошелька на bet, транзакция которого уже отменена методом refund. | Не списывайте; ответьте {"status":"error","message":"TRANSACTION_CANCELLED",…}. |
GAME_MODE_DISABLED | 400 | В игре | Режим игры (например, покупка бонуса или ante) отключён для проекта. Возвращается и методом freespins_create. | Включите флаг в админ-панели: Projects, Providers. |
PROJECT_GAME_DISABLED | 400 | В игре | Игра или её провайдер отключены для проекта. Возвращается и методом freespins_create. | Включите провайдера в админ-панели: Projects, Providers. |
CURRENCY_REQUIRED | 400 | В игре | Нужна валюта из списка поддерживаемых. | Передайте поддерживаемый фиатный код ISO 4217 (см. «Валюты»). |
FREE_SPINS_ACTIVE | — | В игре | У игрока есть активные фриспины в этой игре, а он попытался сделать платный спин, ante или покупку бонуса. Показывается игровым клиентом, оператору по API не возвращается. | Игрок сначала доигрывает фриспины; они заканчиваются, когда использованы, истекли или отменены. |
FREE_SPINS_CHANGED | — | В игре | Выдача фриспинов игрока изменилась в момент старта раунда (например, её отменили). Показывается игровым клиентом, оператору по 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 пока не включено на сервере. | Обратитесь к владельцу платформы. |
INVALID_FRAME_ORIGINS | 400 | API админки | Список разрешённых origin для iframe некорректен: больше 16 записей или запись не является origin с https:// (без шаблонов, пути, query и логина; у хоста должна быть точка). | Передайте до 16 origin вида https://casino.example. |
AUTH_THROTTLED | 429 | API админки | Слишком много неудачных входов в админ-панель (5 в минуту на пользователя и адрес, 20 в минуту на адрес). | Подождите минуту и войдите снова с правильным паролем. |
INVALID_PROJECT_SETTINGS | 400 | API админки | Раздел настроек проекта имеет неверную форму или значение (также INVALID_PROVIDER_FLAGS, INVALID_BET_LIMIT, BET_LIMIT_OUT_OF_BOUNDS, UNSUPPORTED_PROVIDER_CAPABILITY, UNKNOWN_GAME). | Проверьте поле, отмеченное в админ-панели, и сохраните снова. |
RTP_RULE_INVALID | 400 | API админки | В правиле адаптивного RTP неверное поле (окно 50–100000 раундов, шаг 10–2000 bps, максимальное снижение 0–4000 bps, верхняя граница выше нижней). | Исправьте поля правила в админ-панели: RTP & players. |
INVALID_PROVIDER_FLAGS | 400 | API админки | Переключатели провайдеров проекта заданы неверно. | Передавайте каждый флаг провайдера булевым значением. |
UNSUPPORTED_PROVIDER_CAPABILITY | 400 | API админки | Флаг провайдера включает возможность, которой у провайдера нет (например, promo или ante). | Оставьте этот флаг выключенным. |
BET_LIMIT_OUT_OF_BOUNDS | 400 | API админки | Лимит ставок проекта выходит за границы, заданные владельцем платформы для этого клиента. | Выберите диапазон внутри границ. |
UNKNOWN_GAME | 400 | API админки | Настройка игры называет id неопубликованной игры. | Берите id из GET /games/catalog. |