Notell API Docs
Русский

Reference

Error reference

Errors are returned as {"status":"error","message":"<CODE>"} with the HTTP status shown below. Branch on the code, not on the HTTP status alone. Use the filter to search by code or text.

CodeHTTPWhereMeaningWhat to do
UNAUTHORIZED401API (any)The partner id is unknown or the api_key does not match.Check partner and api_key. If the key was rotated, install the new key.
IP_NOT_ALLOWED403API (any)The caller IP is not on the project allowlist (/gameActions.do, /playerRtp.do).Ask the platform owner to add your server network (CIDR) in the admin panel, section IP Whitelist.
INVALID_REQUEST400API (any)The body is malformed, a required field is missing or has a wrong type, or an unknown field was sent (launch accepts only documented fields).Compare the request with the method description; remove unknown fields.
INVALID_IDEMPOTENCY_KEY400API (any)The Idempotency-Key header is not 1–128 printable ASCII characters (or was sent twice).Use a UUID or another short key without spaces.
IDEMPOTENCY_CONFLICT409API (any)The same Idempotency-Key was already used with a different request body.Use a new key for a new request; repeat the identical body to get the first answer.
REQUEST_FAILED400API (any)The request failed for a reason that has no public code.Retry once; if it repeats, contact the platform owner with the time of the request.
FORBIDDEN403API (any)The action is not allowed for this caller.Do not retry; check permissions (admin) or the launch parameters.
UNSUPPORTED_GAME404/playGame.dosymbol is not a published game id.Take ids from GET /games/health (game_id).
UNSUPPORTED_LANGUAGE400/playGame.dolang is malformed or not supported by this game.Use a code from the game's languages list, or omit lang to use the project default.
REAL_MODE_DISABLED400/playGame.dogametype is not demo. Real-money mode is not available.Send "gametype": "demo".
PROMO_UNSUPPORTED400/playGame.doThe legacy freespins field was sent to the launch method.Remove it and grant free spins with /gameActions.do (freespins_create).
ROUND_IN_PROGRESS400/playGame.doThe player has an unfinished round in this game in another currency.Launch with the currency of the unfinished round (or let the round finish).
BALANCE_UNAVAILABLE400/playGame.doThe session_info request to your wallet did not succeed, so the session was not created.Check your callback URL and response format (see Wallet callbacks); use "Test connection" in the admin.
INVALID_METHOD400/gameActions.domethod is not one of the supported methods.Use freespins_* or outcome_* methods listed in this documentation.
METHOD_RETIRED400/gameActions.doA legacy method (freespins_set, freespins_delete, or freespins_get without an id) was called.Migrate to freespins_create, freespins_get, freespins_list, freespins_cancel.
GAME_NOT_FOUND404/gameActions.dosymbol is not a published game.Take ids from GET /games/health.
DUPLICATE_EXTERNAL_ID409/gameActions.doexternal_id is already used by another record of this project.Use a unique external_id, or read the existing record by it.
PROJECT_BET_LIMIT400/gameActions.doThe bet is outside the bet limits of the project, the game or the player. Also returned by a game when a stake is outside the limits.Choose a bet inside the limits (see Bet limits), or change the limits in the admin.
INVALID_COUNT400Free spinscount is not a whole number from 1 to 1000.Send 1–1000.
INVALID_FREE_SPIN_BET400Free spinsbet is not a valid base-mode bet of the game (or not a decimal string).Use one of the game's own bets as a decimal string, for example "1.00".
INVALID_EXPIRY400Free spinsexpires_at is not an ISO 8601 date with a time zone, or is outside the allowed range (free spins: +1 hour to +30 days; target outcomes: +1 hour to +90 days).Send a value like 2026-11-01T12:00:00Z inside the range, or omit it for the default (7 days).
FREE_SPINS_UNSUPPORTED400Free spinsFree spins are not available for this game's provider.Check the free_spins flag in GET /games/health.
GRANT_NOT_FOUND404Free spinsNo free-spins grant with this grant_id / external_id in the project.Check the id; list grants with freespins_list.
FORCED_OUTCOMES_UNSUPPORTED400Target outcomesTarget outcomes are not available for this game's provider.Check the target_outcomes flag in GET /games/health.
GAME_HAS_NO_BONUS400Target outcomeskind is bonus but the game has no feature round.Use kind: "spin".
INVALID_MULTIPLIER400Target outcomesmultiplier is not a positive number with at most 2 decimals (up to 7 digits before the point).Send for example 50 or "12.5".
MULTIPLIER_ABOVE_MAX_WIN400Target outcomesmultiplier is above the maximum win of the game (in bets).Lower the multiplier.
INVALID_SPIN_NUMBER400Target outcomesspin_number is not a whole number from 1 to 100000.Send 1–100000.
INVALID_KIND400Target outcomeskind is neither spin nor bonus.Use spin or bonus.
OUTCOME_NOT_FOUND404Target outcomesNo target outcome with this outcome_id / external_id in the project.Check the id; list entries with outcome_list.
INVALID_ACTION400/playerRtp.doaction is not get, set, auto or bet-limit.Use one of the four actions.
RTP_PROVIDER_UNSUPPORTED400/playerRtp.doprovider is not endorphina, pragmatic or nolimitcity.Send a supported provider id.
RTP_LEVEL_INVALID400/playerRtp.dortp is not a number with at most 2 decimals.Send for example 94.5.
RTP_LEVEL_OUT_OF_RANGE400/playerRtp.doThe RTP is outside 60–100 %.Send a value from 60 to 100.
RTP_POLICY_REQUIRED400/playerRtp.doThe project has no provider RTP yet, so a new player cannot be bound.Set the provider RTP in the admin, RTP & players.
INVALID_REASON400/playerRtp.doreason is longer than 200 characters or not a string.Shorten the reason.
INVALID_CURRENCY400/playerRtp.docurrency is not a three-letter uppercase code.Send for example EUR.
INVALID_BET_LIMIT400/playerRtp.domin_minor / max_minor are not digit strings, min is below 1, or max is below min.Send minor units as strings, min ≥ 1, max ≥ min; or both null to remove the limit.
INVALID_PLAYER400/playerRtp.doplayer_id is missing or invalid.Send the player id used at launch.
INSUFFICIENT_FUNDS200Your walletYour answer to a bet when the player balance is too low: {"status":"error","message":"INSUFFICIENT_FUNDS",…}. The round is rejected and nothing is debited.Return it only when the balance really is too low; any other error makes the platform retry.
CALLBACK_HTTP_ERROR—Your walletSeen in the admin API Logs: your wallet answered with a non-2xx HTTP status.Return HTTP 200 with the JSON answer (also for INSUFFICIENT_FUNDS).
INVALID_CALLBACK_RESPONSE—Your walletSeen in the admin API Logs: the answer is not valid JSON, status is not ok/error, or currency differs from the request currency.Answer {"status":"ok","balance":<number>,"currency":"<same currency>"}.
GAME_MODE_DISABLED400In the gameThe game mode (for example bonus buy or ante) is switched off for the project.Enable the flag in the admin, Projects, Providers.
PROJECT_GAME_DISABLED400In the gameThe game or its provider is switched off for the project.Enable the provider in the admin, Projects, Providers.
CURRENCY_REQUIRED400In the gameA currency from the supported list is required.Send UAH, USD, EUR or RUB.
FREE_SPINS_ACTIVE—In the gameThe player has active free spins in this game and tried a paid spin, ante or bonus buy. Shown by the game client, not returned by the operator API.The player plays the free spins first; they end when used up, expired or cancelled.
UNKNOWN_PROJECT404Admin APIThe project (partner) does not exist.Check the project id.
INVALID_ADMIN_ORIGIN403Admin APIA change request of the admin API came without the expected Origin / X-Admin-Request headers.Use the admin panel itself; the admin API is not a public integration API.
PROJECT_SETTINGS_CONFLICT409Admin APISomeone else saved the project settings first.Reload the page and repeat your change.
UNSUPPORTED_BY_RUNTIME400Admin APIA setting that this platform cannot honour (legacy RTP policy, alerts, retention strategy).Leave it off; use personal RTP instead of the legacy policy.
INVALID_CALLBACK_URL400Admin APIThe callback URL is not acceptable.Use https://, no trailing slash, no user info, query or fragment, port 443 only, at most 512 characters, a public host name.
CONFIRMATION_REQUIRED400Admin APIKey rotation needs the project id typed as confirmation.Type the project id in the confirmation field.
CREDENTIALS_CHANGED409Admin APIThe API key was changed by someone else while you were working.Reload the page and decide again.
PARTNER_LOCKED403Admin APIThis project is internal (demo or site wallet); its key and callback are read-only.Nothing to do; use your own project.
CREDENTIALS_NOT_ENABLED503Admin APIChanging keys and callback URLs is not enabled on the server yet.Contact the platform owner.

General advice#

  • 4xx: fix the request; repeating it unchanged will fail again (except IDEMPOTENCY_CONFLICT, where repeating the original request returns the first answer).
  • Network error or time-out: repeat with the same Idempotency-Key (Conventions).
  • REQUEST_FAILED: retry once, then contact the platform owner.
  • Wallet-side failures show up in the admin API Logs with the same codes (Admin: operations).
Documentation for operators and integrators.TEST_ONLY platform: non-withdrawable units, no real payments.