Neun PredictionsGetting startedIntegration guideErrorsReference

Error codes

status: generated by scripts/gen-error-catalogue.mjs from packages/contracts/src/lib/errors.ts and apps/api/src/app/modules/player/trading-error.filter.ts. Do not edit by hand. [BT]

Every error body has code, message, retryable and, on player routes, uiAction. Read retryable from the body.

Two name sets exist. With ERROR_CODES_V20_ENABLED off (the default) the API returns the code in column 1 with the status in column 2. With it on, the API returns the v2.0 name in column 3 with that status. Column 3 reads: name, HTTP status, retryable. [FO] Which v2.0 names are final is open: owner row N13.

On a 429 or 503 the API may send Retry-After (seconds).

Code (flag off)HTTPv2.0 name, HTTP, retryable (flag on)What the caller should do
LOGIN_REQUIRED401SESSION_EXPIRED, 401, noStart a new player session (new launch).
KYC_REQUIRED403KYC_REQUIRED, 422, yesThe player must finish identity checks at the operator, then try again.
RG_BLOCKED403RG_RESTRICTED, 422, noShow a responsible-gambling message. Do not retry.
INSUFFICIENT_FUNDS422INSUFFICIENT_FUNDS, 422, yesAsk the player to add funds, then try again.
QUOTE_EXPIRED409QUOTE_EXPIRED, 409, yesAsk for a new quote and show it.
PRICE_CHANGED409PRICE_MOVED, 409, yesShow the new price and ask the player to confirm again.
MARKET_SUSPENDED422MARKET_SUSPENDED, 422, yesClose the bet slip. The market or order is gone.
LIQUIDITY_UNAVAILABLE422LIQUIDITY_UNAVAILABLE, 422, yesShow a "not available" message. Do not retry the same request.
INSUFFICIENT_COLLATERAL422SERVICE_UNAVAILABLE, 503, yesShow a "not available" message. Do not retry the same request.
COLLATERAL_STOP422SERVICE_UNAVAILABLE, 503, yesShow a "not available" message. Do not retry the same request.
EXTERNAL_ACCOUNT_UNHEALTHY422SERVICE_UNAVAILABLE, 503, yesShow a "not available" message. Do not retry the same request.
EXECUTION_UNKNOWN409EXECUTION_UNKNOWN, 409, yesDo not send the order again. Read the order status later.
PAM_UNAVAILABLE503WALLET_UNAVAILABLE, 503, yesWait, then retry. Use the same Idempotency-Key.
CONCURRENT_MODIFICATION409SERVICE_UNAVAILABLE, 503, yesWait, then retry. Use the same Idempotency-Key.
APPROVAL_REQUIRED403FEATURE_UNAVAILABLE, 403, noShow a "not available" message. Do not retry the same request.
RESOLUTION_CODE_REQUIRED400VALIDATION_FAILED, 400, noShow a "not available" message. Do not retry the same request.
STAKE_OUT_OF_RANGE422LIMIT_EXCEEDED, 422, yesAsk the player to change the amount.
QUOTE_NOT_FOUND404QUOTE_NOT_FOUND, 404, noAsk for a new quote and show it.
ORDER_NOT_FOUND404ORDER_NOT_FOUND, 404, noClose the bet slip. The market or order is gone.
DUPLICATE_ORDER409IDEMPOTENCY_KEY_REUSED, 409, noDo not send the order again. Read the order status later.
PROVIDER_UNAVAILABLE503SERVICE_UNAVAILABLE, 503, yesWait, then retry. Use the same Idempotency-Key.
CAPABILITY_DISABLED403FEATURE_UNAVAILABLE, 403, noShow a "not available" message. Do not retry the same request.
LIMIT_VIOLATION422VALIDATION_FAILED, 400, noChange the limit to a value inside the allowed range.
TENANT_DISABLED403FEATURE_UNAVAILABLE, 403, noShow a "not available" message. Do not retry the same request.
IDEMPOTENCY_KEY_REQUIRED400IDEMPOTENCY_KEY_REQUIRED, 400, noWait, then retry. Use the same Idempotency-Key.
IDEMPOTENCY_KEY_MISMATCH400IDEMPOTENCY_KEY_REUSED, 409, noWait, then retry. Use the same Idempotency-Key.
IDEMPOTENCY_KEY_REUSED409IDEMPOTENCY_KEY_REUSED, 409, noWait, then retry. Use the same Idempotency-Key.
RISK_REJECTED422RISK_REJECTED, 422, noShow a "not available" message. Do not retry the same request.
RISK_REVIEW_REQUIRED422RISK_REJECTED, 422, noShow a "not available" message. Do not retry the same request.
CLOSE_ONLY422PLAYER_CLOSE_ONLY, 422, noShow a "not available" message. Do not retry the same request.
RATE_LIMITED429RATE_LIMITED, 429, yesWait, then retry. Use the same Idempotency-Key.
BLOCKED422PLAYER_RESTRICTED, 422, noShow a "not available" message. Do not retry the same request.
SETTLEMENT_HOLD422PLAYER_RESTRICTED, 422, noShow a "not available" message. Do not retry the same request.
PAM_CONTEXT_UNAVAILABLE422WALLET_UNAVAILABLE, 503, yesWait, then retry. Use the same Idempotency-Key.
PLAYER_RG_RESTRICTED422RG_RESTRICTED, 422, noShow a responsible-gambling message. Do not retry.
KILL_SWITCH_ACTIVE503SERVICE_UNAVAILABLE, 503, yesShow a "not available" message. Do not retry the same request.
ROUTE_CAPABILITY_UNAVAILABLE422FEATURE_UNAVAILABLE, 403, noShow a "not available" message. Do not retry the same request.
ROUTE_FINALITY_EXCEEDS_RESERVATION422FEATURE_UNAVAILABLE, 403, noShow a "not available" message. Do not retry the same request.
CAPABILITY_NOT_SUPPORTED422FEATURE_UNAVAILABLE, 403, noShow a "not available" message. Do not retry the same request.
POSITION_QUANTITY_UNAVAILABLE409POSITION_QUANTITY_UNAVAILABLE, 409, yesWait, then retry. Use the same Idempotency-Key.
FEATURE_DISABLED403FEATURE_UNAVAILABLE, 403, noShow a "not available" message. Do not retry the same request.
EXECUTION_LIQUIDITY_LOW503SERVICE_UNAVAILABLE, 503, yesWait, then retry. Use the same Idempotency-Key.
TREASURY_UNCONFIGURED503SERVICE_UNAVAILABLE, 503, yesShow a "not available" message. Do not retry the same request.
DAILY_CAP_EXCEEDED503SERVICE_UNAVAILABLE, 503, yesShow a "not available" message. Do not retry the same request.
STAKE_LIMITS_UNCONFIGURED503SERVICE_UNAVAILABLE, 503, yesShow a "not available" message. Do not retry the same request.
BET_LIMITS_UNCONFIGURED503SERVICE_UNAVAILABLE, 503, yesShow a "not available" message. Do not retry the same request.
FEE_MODE_UNCONFIGURED503SERVICE_UNAVAILABLE, 503, yesShow a "not available" message. Do not retry the same request.
FEE_SETTINGS_EXCEEDED503SERVICE_UNAVAILABLE, 503, yesShow a "not available" message. Do not retry the same request.
LIQUIDITY_LEVELS_UNCONFIGURED503SERVICE_UNAVAILABLE, 503, yesShow a "not available" message. Do not retry the same request.
INSUFFICIENT_SIGNERS409SERVICE_UNAVAILABLE, 503, yesShow a "not available" message. Do not retry the same request.
FEE_CAP_EXCEEDED422RISK_REJECTED, 422, noShow a "not available" message. Do not retry the same request.
MAX_WINNINGS_EXCEEDED422MAX_WINNINGS_EXCEEDED, 422, yesAsk the player to change the amount.
MARKET_NOT_ENABLED422FEATURE_UNAVAILABLE, 403, noShow a "not available" message. Do not retry the same request.
REASON_CODE_NOT_ALLOWED422VALIDATION_FAILED, 400, noShow a "not available" message. Do not retry the same request.
STEP_UP_REQUIRED401STEP_UP_REQUIRED, 401, noAsk the player for stronger sign-in, then retry.
LAUNCH_TOKEN_INVALID401LAUNCH_TOKEN_INVALID, 401, noStart a new player session (new launch).
PLAYER_STATUS_CONFLICT422PLAYER_STATUS_CONFLICT, 422, noShow a "not available" message. Do not retry the same request.
CURSOR_EXPIRED410CURSOR_EXPIRED, 410, noShow a "not available" message. Do not retry the same request.
LIMIT_ABOVE_CEILING422LIMIT_ABOVE_CEILING, 422, noNo player action. Fix the request or read the message.
SESSION_EXPIRED401SESSION_EXPIRED, 401, noStart a new player session (new launch).
VALIDATION_FAILED400VALIDATION_FAILED, 400, noNo player action. Fix the request or read the message.
QUOTE_ALREADY_USED409QUOTE_ALREADY_USED, 409, noNo player action. Fix the request or read the message.
PRICE_MOVED409PRICE_MOVED, 409, yesAsk for a new quote and show it.
RG_RESTRICTED422RG_RESTRICTED, 422, noShow a responsible-gambling message. Do not retry.
PLAYER_RESTRICTED422PLAYER_RESTRICTED, 422, noShow a "not available" message. Do not retry the same request.
PLAYER_CLOSE_ONLY422PLAYER_CLOSE_ONLY, 422, noShow a "not available" message. Do not retry the same request.
LIMIT_EXCEEDED422LIMIT_EXCEEDED, 422, yesShow the limit message. Ask the player to change the amount.
POSITION_LIMIT_EXCEEDED422POSITION_LIMIT_EXCEEDED, 422, yesShow the limit message. Ask the player to change the amount.
ORDER_NOT_CANCELLABLE409ORDER_NOT_CANCELLABLE, 409, noNo player action. Fix the request or read the message.
COMBO_NOT_ALLOWED422COMBO_NOT_ALLOWED, 422, yesShow a "not available" message. Do not retry the same request.
PROMOTION_NOT_APPLICABLE422PROMOTION_NOT_APPLICABLE, 422, yesNo player action. Fix the request or read the message.
MARKET_CLOSED422MARKET_CLOSED, 422, noShow a "not available" message. Do not retry the same request.
FEATURE_UNAVAILABLE403FEATURE_UNAVAILABLE, 403, noShow a "not available" message. Do not retry the same request.
WALLET_UNAVAILABLE503WALLET_UNAVAILABLE, 503, yesWait for Retry-After seconds, then retry with the same Idempotency-Key.
SERVICE_UNAVAILABLE503SERVICE_UNAVAILABLE, 503, yesWait for Retry-After seconds, then retry with the same Idempotency-Key.
GEO_CLOSE_ONLY422GEO_CLOSE_ONLY, 422, noShow a "not available" message. Do not retry the same request.
GEO_BLOCKED422GEO_BLOCKED, 422, noShow a "not available" message. Do not retry the same request.
FEE_RATE_UNAVAILABLE422FEE_RATE_UNAVAILABLE, 422, noShow a "not available" message. Do not retry the same request.
FX_UNAVAILABLE503FX_UNAVAILABLE, 503, yesWait for Retry-After seconds, then retry with the same Idempotency-Key.
BRAND_OVERRIDE_EXCEEDS_OPERATOR400BRAND_OVERRIDE_EXCEEDS_OPERATOR, 400, noNo player action. Fix the request or read the message.
ORDER_COST_BELOW_MINIMUM422ORDER_COST_BELOW_MINIMUM, 422, yesShow the limit message. Ask the player to change the amount.
ORDER_COST_ABOVE_MAXIMUM422ORDER_COST_ABOVE_MAXIMUM, 422, yesShow the limit message. Ask the player to change the amount.

Wallet protocol codes

[BT] 400 UNSUPPORTED_VERSION; 401 INVALID_SIGNATURE, STALE_REQUEST, REPLAYED_NONCE; signed 409 IDEMPOTENCY_CONFLICT. Business outcomes are HTTP 200 with REJECTED{code}, using only the codes listed per operation in ADR-059.

Operator API

House error format by default. [FO] RFC 9457 problem+json only with S2S_PROBLEM_JSON_ENABLED. The limits route returns LIMIT_VIOLATION (ADR text: LIMIT_ABOVE_CEILING); accept both. When the operator API reuses an Idempotency-Key with a different body it also uses IDEMPOTENCY_KEY_IN_PROGRESS (409) for a request still running. See idempotency.