bet_limit. Branch on the code, never on the HTTP status: most codes share 409.
How errors arrive
The element shows no error text on the game itself. Show the codes your players need to understand, such as
insufficient_funds or bet_limit, in your own page.
A few answers are plain text rather than JSON:
Sessions and connection
Bets refused
A refused bet moves no money, and the element frees its stake on screen.Rounds, reveals and proofs
Three outcomes give the stake back through a refund credit:
engine_failure (the engine could not evaluate the revealed round), key_retired (the debit applied only after a VRF key rotation) and an abandoned bet (accepted, but the player’s seed never arrived within 24 hours).
In the browser
The element and its client raise these before anything reaches your game server:Your wallet’s calls
The game server retries every one of these with the same ID and body. The bets they cover stay open, and the player’s snapshots show settlement as delayed. See How the game server reads your answer.
Posting a wallet event can answer
unauthorized (signature, timestamp or secret), wallet_binding (a player ID that breaks the pattern, or a currency you do not serve) or message_limit (a body over 4 KiB).
Game server settings
After Check now on a game server’s card, the Game server page shows these sentences in a line that starts withSettings: or Reports:. A game server that refuses the dashboard’s settings keeps its last good settings in the meantime.
The game server fetches its settings again about once a minute and tries again with its next report, so the network, timeout and HTTP codes clear on their own once the connection returns.
Solana record
The Solana record section of the Game server page shows why recording is paused in words:
Check Solana, Plan key registration and Register key can fail with:
Deploys
When a deploy fails, the game server’s card shows the sentence below. What Cloudflare said shows the stored code and Cloudflare’s or the dashboard’s message, such ascloudflare_error: ….
A failure while Cloudflare attaches your own hostname (
workers/domains in Cloudflare’s message) reads differently: Cloudflare’s code 100117 means a DNS record for the hostname already exists, 100116 means the hostname is attached to another Worker in your account, and any other code means the domain’s zone or DNS does not meet the conditions. The deploy fails on your own hostname quotes each sentence with its fix.