# Singleplayer API ### Connecting with the websocket ``` shell wss://localhost:3000/ws?session={{session}} ``` ### Start: The game will start with or without a bet. The player will receive a response with the current step and multiplier. If the game is started, the player will not be able to make a bet until the game is finished. If the game starts with a bet, the player will receive a response with the current step and multiplier, and the bet will be placed. #### Start payload: ```json { "messageType": "start" } ``` #### Response example: ```json { "crash": false, "step": 117, "multiplier": 124, "denominator": 2 } ``` #### end of the round ```json { "MessageType": "crash", "ProvablyFair": { "hash": "823a40f2f63cf8202809a0e3cc3935f502c69ed2ca00845ce8600555eb5e6c66", "salt": "097f8caa-a8f4-47d4-b0a2-cc1598bab502bb93fbe9-0e0d-41f2-8e04-b3601b9437a4", "previousResult": 155, "currentResult": 321 } } ``` ### Speedup: The server sends this message when the game enters the fast phase (after 6 steps). #### Response example: ```json { "messageType": "speedup", "walkDuration": 100, "fightDuration": 100 } ``` ### Bet: ```json { "messageType": "bet", "identifier": 1, "amount": 100, "currency": "EUR" } ``` #### Response example: ```json { "messageType": "bet", "username": "Guest **", "balance": 99700, "denominator": 100, "identifier": 1, "currency": "USD", "betID": "0e4cf975-63d9-490c-b021-d3fcd3659765", "isDemo": true } ``` ### Wallet: ```json { "messageType": "wallet" } ``` #### Response example: ```json { "messageType": "wallet", "username": "Guest **98138", "balance": 101181, "denominator": 10000, "currency": "ADA", "isDemo": true, "isGameOngoing": false, "multiplierHistory": null, "bonusHistory": null, "provablyFair": { "hash": "609cf86c4037abf9e3301f199cb8c4ec42b5796dd7056d0013172991cad63a4a", "salt": null, "previousResult": 5311, "currentResult": null }, "maxBet": 273000, "minBet": 273, "defaultBet": 10000, "rtp": "95", "volatility": "high", "shortcuts": [ "1" ], "fightDuration": 200, "walkDuration": 200, "currentBets": [ { "betId": "3eb1550d-23bb-4fe3-adb9-5fa825ebe5a5", "amount": 3333, "identifier": 2 }, { "betId": "c683db2e-649d-48b0-84a2-d6d125f0990e", "amount": 333, "identifier": 1, "autoCashoutAt": 232 } ], "limitValues": { "minMultiplier": 1, "maxMultiplier": 1750, "minCrashPoint": 100, "MaxCrashPoint": 1750000 } } ``` ### CheckWin: Players can checkWin at any time after the game start. The player will receive a response with the current multiplier and the amount that can be cashed out. ```json { "messageType": "win", "betID": "550e8400-e29b-41d4-a716-446655440000", "cashoutAt": 150 } ``` #### Response example: ```json { "messageType": "cashOutResult", "username": "player123", "balance": 12000, "denominator": 2, "currency": "USD" } ``` ### BetCancel: Players can can cancel a bet at any time before the game starts. The player will receive a response with the current balance. ```json { "messageType": "bet_cancel", "betID": "9d7da6bd-90f1-4eff-85e1-a5b177016e02" } ``` #### Response example: ```json { "messageType": "bet_cancel", "betID": "9d7da6bd-90f1-4eff-85e1-a5b177016e02", "username": "player123", "balance": 9500, "denominator": 2, "currency": "USD" } ``` ### Bet history: Players can can cancel a bet at any time before the game starts. The player will receive a response with the current balance. ```json { "messageType": "bet_history" } ``` #### Response example: ```json { "messageType": "bet_history", "username": "Guest **oduyp", "history": [ { "betID": "c46330a0-e63b-4f31-9f96-1e2c0e49ec03", "createdAt": "2025-11-25 15:40:06", "amount": 100, "winAmount": 0, "denominator": 100, "currency": "BRL", "isActive": false, "isDemo": false, "roundStart": "2025-11-28 14:54:58", "provablyFair": { "hash": "a96635c72613f54e8c5d", "salt": "44de-9a22-f66b831712c5", "previousResult": 110, "currentResult": 177 } } ] } ``` # Game Error Documentation ## Error Codes Overview | Code | Message | |------|-----------------------------------------| | 1000 | SessionID expired or not found | | 1001 | Bet does not respect minimum bet amount | | 1002 | Bet does not respect maximum bet amount | | 1003 | Bet not found | | 1004 | Bet already placed | | 1005 | Bet could not be placed | | 1006 | Bet could not be canceled | | 1007 | Bet could not be cashed out | | 1008 | Minimum auto cashout value is not valid | | 1009 | Game already started | | 1010 | Game not finished | | 1011 | Game crashed | | 1012 | Ongoing game not found | | 1013 | Invalid message type | | 1014 | Invalid identifier for bet cancelation | | 1015 | Invalid time format | | 1016 | No bets placed | ## Common Message Types These message types are used across both game modes: - `wallet` - Balance operations - `bet` - Bet placement - `bet_cancel` - Bet cancellation - `win` - Win notifications - `bet_history` - Game history ## Error Response Format ```json { "messageType": "errorResponse", "error": { "message": "Invalid bet amount", "code": 400, "var": 100 } } ```