Error codes & rate limits
Problem codes your wallet returns
Section titled “Problem codes your wallet returns”Whole-request failures are application/problem+json (RFC 9457) with a code field:
code |
HTTP | Platform behaviour |
|---|---|---|
invalid_signature |
401 | Not retried; check the secret and your server clock. |
invalid_launch_code |
401 | Player sees an entry error and can reopen the game (new launch code). |
malformed_request |
400 | Not retried. |
player_not_found |
404 | Balance unavailable for that player. |
transaction_not_found |
404 | Audit lookups only. |
not_found |
404 | Wrong base URL or path. |
rate_limited |
429 | Retried with the same transaction ids after Retry-After. |
unavailable |
503 | Batch outcome unknown: retried with the same transaction ids after Retry-After; uncertain debits are rolled back until ok. |
internal |
500 | Retried with the same transaction ids. |
| — (timeout, connection reset) | — | Same as 503. |
Transaction statuses
Section titled “Transaction statuses”Per-item results inside an HTTP 200 batch response: ok, insufficient_funds, session_invalid, player_blocked, limit_exceeded, duplicate_mismatch, reference_not_found, rolled_back, retry. Meanings and platform actions are listed in the Wallet API guide.
Entry errors seen by players
Section titled “Entry errors seen by players”| Situation | What happens |
|---|---|
getConfig not answered within 8 s |
The page shows an entry error. |
| Launch code refused by your wallet | The page shows an entry error; reopening the game issues a new code. |
Wallet unreachable during authenticate |
The page shows an entry error. |
| Production suspended for your operator | New sessions are refused with operator_suspended; rounds in progress settle. |
insufficient_funds on a stake |
The stake is cancelled, the game shows the balance and may call gameRecharge. |
Rate limits and capacity
Section titled “Rate limits and capacity”Towards your wallet. The platform never exceeds the Max batch size and Max concurrent requests you declare in Console → Integration. When you answer 429 or 503 it waits for Retry-After (seconds) before retrying. You may also send the IETF RateLimit-Policy / RateLimit headers; they are informational.
Towards players. The game platform applies its own per-session and per-IP limits on player actions. You do not need to do anything for them.
Timeouts. Answer wallet calls quickly — ideally within a few hundred milliseconds. A batch that has not answered by the end of a betting window is treated as unknown: its debits are cancelled and rolled back.