Want to make your own dice betting bot? Want to earn money while doing it? That is what we are offering.
On this page, you will find information about creating your own bot using the API provided by 999dice.
New players are automatically attached as one of your referrals on 999dice. That means you earn 0.05% of the value of every bet they make, win or lose.
We do not care if you make a bot and call it "Bob's Super-Dice Site". You do not need to mention our website at all. We do not care if you pass it off as your own site, even. To extend that idea, you could even create your own website, and have our API serve as your back-end.
What we DO care about is: PLAY FAIR. Be open and honest about what your bot does and doesn't do. We are keeping a close eye on the API usage.
A sample bot has been created using the .NET 4.5 API. Its purpose is to demonstrate to programmers some of the capabilities of the API.
An implementation of the API is available in .NET (for C#, VB, F#...).
Download the .NET API for .NET 4.5 (Build 2017-07-02, includes Async and Begin/End methods)
Download the .NET API for .NET 3.5 (Build 2017-07-02, includes Begin/End methods)
Here's a brief overview of how it works. All classes are in the Dice.Client.Web
namespace.
First, you call BeginSession(...)
, which gives you a SessionInfo
object. This object contains everything about your user, and everything else in the API requires you to have one.
Once you've got your SessionInfo
object, you can make any other call, such as PlaceBet
, CreateUser
, or Withdraw
.
Here's a brief rundown on the essential classes and methods.
Starting a session...
- SessionInfo (implements INotifyPropertyChanged)
- Contains information about your user, such as their balance, email, deposit address, and betting statistics. You must get one of these from calling
DiceWebAPI.BeginSession(...)
.
- DiceWebAPI.BeginSession(ApiKey)
- Creates a new account. You should save the AccountCookie for your user!
- DiceWebAPI.BeginSession(ApiKey, AccountCookie)
- Starts a new session for an existing user. Will return
LoginRequired=true
if the user has set up a username and password.
- DiceWebAPI.BeginSession(ApiKey, Username, Password)
- Starts a new session for an existing user who is protected by a username and password.
- DiceWebAPI.BeginSession(ApiKey, Username, Password, Totp)
- Starts a new session for an existing user who is protected by a username, password, and totp (ie Google Authenticator).
Handling user information...
- DiceWebAPI.CreateUser(Session, Username, Password)
- Creates a username and password for a user. Accounts with a username and password do not require (and cannot be accessed using) an AccountCookie.
- DiceWebAPI.ChangePassword(Session, OldPassword, NewPassword)
- Changes a user's password.
- DiceWebAPI.UpdateEmail(Session, Email)
- Updates the client's email address.
- DiceWebAPI.UpdateEmergencyAddress(Session, EmergencyAddress)
- Updates the client's emergency withdrawal address.
Funds...
- DiceWebAPI.Withdraw(Session, Amount, Address/AccountID, [Totp], Currency)
- Withdraws funds to a bitcoin address (or all funds, if Amount == 0), minus the 0.00025 BTC bitcoin transaction fee. Check the
WithdrawalPending
return value.
- DiceWebAPI.WithdrawAll(Session, Address/AccountID, [Totp], Currency)
- Withdraws all funds to a bitcoin address, minus the 0.00025 BTC bitcoin transaction fee. Check the
WithdrawalPending
return value.
- DiceWebAPI.GetDepositAddress(Session, Currency)
- Gets a new deposit address for the user. This only gives a new address if a deposit has been made, otherwise
SessionInfo.DepositAddress
will probably be returned unchanged.
- DiceWebAPI.GetBalance(Session, Currency)
- Gets the user's current balance. This is only required if the user makes a deposit. If you are polling this value, once per 60 seconds is recommended, and should not be more frequently than once per 15 seconds. Ideally, this should be manually checked by the user clicking a button (they know when they've deposited!).
Betting Calculations...
- DiceWebAPI.CalculateChanceToWin(GuessLow, GuessHigh)
- Returns the user's chance to win based on a guess range (0.0 - 1.0)
- DiceWebAPI.CalculatePayoutMultiplier(GuessLow, GuessHigh)
- Returns the payout multiplier for a winning bet based on a guess range.
- DiceWebAPI.CalculateWinPayout(PayIn, GuessLow, GuessHigh)
- Returns the payout for a winning bet based on the bet amount and guess range.
- DiceWebAPI.CalculateWinProfit(PayIn, GuessLow, GuessHigh)
- Returns the profit for a winning bet based on the bet amount and guess range.
Betting...
- DiceWebAPI.GetServerSeedHash(Session)
- Retrieves the server seed hash for the next bet.
- DiceWebAPI.SetClientSeed(Session, Seed)
- Sets the client's seed for future bets.
- DiceWebAPI.PlaceBet(Session, PayIn, GuessLow, GuessHigh, ClientSeed, Currency)
- Places a bet for
PayIn
BTC on the numbers GuessLow-GuessHigh (0-999999), inclusive. Minimum bet chance is 5%, and maximum bet chance is 95%. Bets for 0 to 0.00001 BTC are delayed 0.5-3 seconds.
- DiceWebAPI.PlaceAutomatedBets(Session, Settings)
- Place a batch of automated bets.
- Session: The user's SessionInfo object.
- Settings:
- BasePayIn: The amount of the base bet.
- GuessLow, GuessHigh: The user's guess, between 0-999999, inclusive. Minimum bet chance is 5%, and maximum bet chance is 95%.
- MaxBets: The maximum number of bets to place. Cannot be more than
SessionInfo.MaxBetBatchSize
- ResetOnWin: If true, then after a winning bet, the next bet amount will be BasePayIn.
- ResetOnLose: If true, then after a losing bet, the next bet amount will be BasePayIn.
- IncreaseOnWinPercent: If ResetOnWin=false, then after a winning bet, increase the next bet amount by IncreaseOnWinPercent. 0 is no increase. 0.5 is 50% increase. 1.0 is 100% increase (doubled). 2.0 is 200% increase (tripled). Cannot be negative.
- IncreaseOnLosePercent: If ResetOnLose=false, then after a losing bet, increase the next bet amount by IncreaseOnLosePercent. 0 is no increase. 0.5 is 50% increase. 1.0 is 100% increase (doubled). 2.0 is 200% increase (tripled). Cannot be negative.
- MaxAllowedPayIn: The maximum bet amount, or 0 for no maximum.
- ResetOnLoseMaxBet: If true, then after a losing bet where the bet amount is equal to MaxAllowedPayIn, the next bet amount will be BasePayIn.
- StopOnLoseMaxBet: If true, then after a losing bet where the bet amount is equal to MaxAllowedPayIn, betting will end.
- StopMaxBalance: After a bet, if your balance is at least this amount, then stop betting. 0 for no maximum.
- StopMaxBalance: After a bet, if your balance is at least this amount, then stop betting. 0 for no maximum.
- StopMaxBalance: After a bet, if your balance is at least this amount, then stop betting. 0 for no maximum.
- StopMinBalance: After a bet, if your balance is less than this amount, then stop betting.
- StartingPayIn: The first bet's amount (Overrides BasePayIn as the first bet's size).
- ClientSeed: The client seed to use for these bets.
- Currency: The currency for these bets.
An implementation of the API is available in Java.
Download the Java API (Build 3)
It is nearly identical to the .NET API (See above!). All classes are in the dice.client.web package.
If you aren't using a language that already has an implementation of the API, you can still access it using web requests.
- All requests are made to this URL: https://www.999dice.com/api/web.aspx
- All parameters are sent in a POST (not json).
- All results are returned to you as json.
All requests must include the action you wish to perform as the "a"
parameter.
All requests other than CreateAccount
, BeginSession
, and Login
must include a session cookie as the "s"
parameter.
For example: a=GetServerSeedHash&s=1a2b3c4d5f6 is requesting the action "GetServerSeedHash" for the user with the session cookie "1a2b3c4d5f6".
Responses
All requests can receive error responses instead of the normal response.
There are some standard error responses that may be generated for any request:
- error: Message (An error has occured)
- TooFast: 1 (You are performing an action too quickly and have been rate limited)
- TotpFailure: 1 (This action requires a valid Totp code, which was not provided)
Starting a session...
CreateAccount
- Creates a new account for the user.
- Request:
- a: CreateAccount
- Key: Your API Key
- Response:
- AccountCookie: A value that can be used with BeginSession to access this account in the future.
- SessionCookie: The value you must pass to future requests for this user during this session.
- AccountId: The user's account ID.
- MaxBetBatchSize: The maximum number of bets that can be placed in a single automated batch.
- ClientSeed: The user's seed number for betting.
- DepositAddress: A bitcoin address where the user can deposit funds to their account.
- Errors:
- InvalidApiKey: 1 (The API key you provided is invalid)
BeginSession
- Begins a session for a user with an existing account.
- Request:
- a: BeginSession
- Key: Your API Key
- AccountCookie: The cookie for the user's account you wish to access (from CreateAccount).
- Response:
- AccountCookie: A value that can be used with BeginSession to access this account in the future.
- SessionCookie: The value you must pass to future requests for this user during this session.
- AccountId: The user's account ID.
- ReferredById: The user's referrer, or 0 if none.
- MaxBetBatchSize: The maximum number of bets that can be placed in a single automated batch.
- ClientSeed: The user's seed number for betting.
- Email: The user's email address.
- EmergencyAddress: The user's emergency withdrawal bitcoin address.
- DepositAddress: A bitcoin address where the user can deposit funds to their account.
- Balance: The user's balance.
- BetCount: The total number of bets the user has made.
- BetWinCount: The total number of winning bets the user has made.
- BetPayIn: The total amount the user has bet (negative).
- BetPayOut: The total amount the user has been paid from bets.
- Doge [DepositAddress, Balance, BetCount, BetWinCount, BetPayIn, BetPayOut]: As above, but for Dogecoin.
- LTC [DepositAddress, Balance, BetCount, BetWinCount, BetPayIn, BetPayOut]: As above, but for Litecoin.
- ETH [DepositAddress, Balance, BetCount, BetWinCount, BetPayIn, BetPayOut]: As above, but for Ethereum.
- XMR [DepositAddress, Balance, BetCount, BetWinCount, BetPayIn, BetPayOut]: As above, but for Monero.
- Errors:
- InvalidApiKey: 1 (The API key you provided is invalid)
- LoginRequired: 1 (The account is protected by a username and password. Use Login instead)
Login
- Begins a session for a user with an existing account protected by a username and password.
- Request:
- a: Login
- Key: Your API Key
- Username: The user's username.
- Password: The user's password.
- Totp (optional): The user's totp code (ie Google Authenticator)
- Response:
- AccountCookie: A value that can be used with BeginSession to access this account in the future.
- SessionCookie: The value you must pass to future requests for this user during this session.
- AccountId: The user's account ID.
- ReferredById: The user's referrer, or 0 if none.
- MaxBetBatchSize: The maximum number of bets that can be placed in a single automated batch.
- ClientSeed: The user's seed number for betting.
- DepositAddress: A bitcoin address where the user can deposit funds to their account.
- Balance: The user's balance.
- Email: The user's email address.
- EmergencyAddress: The user's emergency withdrawal bitcoin address.
- BetCount: The total number of bets the user has made.
- BetWinCount: The total number of winning bets the user has made.
- BetPayIn: The total amount the user has bet (negative).
- BetPayOut: The total amount the user has been paid from bets.
- Errors:
- InvalidApiKey: 1 (The API key you provided is invalid)
- LoginInvalid: 1 (The username was not found or the password or totp is wrong)
Handling user information...
CreateUser
- Creates a username and password.
- Request:
- a: CreateUser
- s: User's session cookie
- Username: The user's username.
- Password: The user's password.
- Response:
- success: 1 (The username and password have been created)
- Errors:
- AccountHasUser: 1 (This account already has a username and password)
- UsernameTaken: 1 (The username is already taken by someone else)
ChangePassword
- Change the user's password.
- Request:
- a: ChangePassword
- s: User's session cookie
- OldPassword: The user's current password
- NewPassword: The new password.
- Response:
- success: 1 (The password is changed)
- Errors:
- WrongPassword: 1 (The wrong password was supplied)
UpdateEmail
- Update the user's email address.
- Request:
- a: UpdateEmail
- s: User's session cookie
- Email: The user's email address
- Response:
- success: 1 (The email is updated)
UpdateEmergencyAddress
- Update the user's emergency withdrawal bitcoin address.
- Request:
- a: UpdateEmergencyAddress
- s: User's session cookie
- Address: The user's emergency withdrawal bitcoin address
- Response:
- success: 1 (The address is updated)
Funds...
Withdraw
- Withdraw funds.
- Request:
- a: Withdraw
- s: User's session cookie
- Amount: The number of satoshis to withdraw, or 0 to withdraw all (100,000,000 satoshis per BTC). Bitcoin's 0.00025 BTC transaction fee will be deducted.
- Address: The bitcoin address or account ID to receive the withdrawal.
- Totp (optional): The user's totp code (ie Google Authenticator)
- Currency: btc/doge/ltc/eth/xmr
- Response:
- Pending: The number of satoshis queued for withdrawal.
- Errors:
- TooSmall: 1 (The withdrawal is too small to process)
- InsufficientFunds: 1 (The user has insufficient funds)
GetDepositAddress
- Get a bitcoin address where the user can deposit funds.
- Request:
- a: GetDepositAddress
- s: User's session cookie
- Currency: btc/doge/ltc/eth/xmr
- Response:
- Address: A bitcoin address.
GetBalance
- Get the user's current balance. This is only required if the user makes a deposit. If you are polling this value, once per 60 seconds is recommended, and should not be more frequently than once per 15 seconds. Ideally, this should be manually checked by the user clicking a button (they know when they've deposited!).
- Request:
- a: GetBalance
- s: User's session cookie
- Currency: btc/doge/ltc/eth/xmr
- Referrals: 1 (if you also want referral stats)
- Stats: 1 (if you also want your stats and referral stats)
- Response:
- Balance: The user's current balance in satoshis.
- ReferredBetsCount [if requested]: Total count of bets by referrals
- ReferredBets [if requested]: Total value of bets by referrals, in satoshis
- TotalPayIn [if requested]: Total amount risked, in satoshis
- TotalPayOut [if requested]: Total amount paid out, in satoshis
- TotalBets [if requested]: Total number of bets
- TotalWins [if requested]: Total bets won
GetBalances [new, untested, may change]
- Get the user's current balances. This is only required if the user makes a deposit. If you are polling this value, once per 60 seconds is recommended, and should not be more frequently than once per 15 seconds. Ideally, this should be manually checked by the user clicking a button (they know when they've deposited!).
- Request:
- a: GetBalances
- s: User's session cookie
- Response:
- Balances: An array of 0 or more balance records each containing
- Currency: btc/doge/ltc/eth/xmr
- Balance: The user's current balance in satoshis
- ReferredBetsCount: Total count of bets by referrals
- ReferredBets: Total value of bets by referrals, in satoshis
- TotalPayIn: Total amount risked, in satoshis
- TotalPayOut: Total amount paid out, in satoshis
- TotalBets: Total number of bets
- TotalWins: Total bets won
GetDeposits [new, untested, may change]
- Gets a list of deposits or incoming transfers
- Request:
- a: GetDeposits
- s: User's session cookie
- Token (optional): A paging token returned from a previous call to GetDeposits. Only results after the token was generated will be returned.
- Response:
- Token: A token string to use on the next call to GetDeposits
- Deposits: An array of 0 or more records each containing
- Currency: btc/doge/ltc/eth/xmr
- Date: The date the deposit was credited
- Address: The deposit address
- TransactionHash: The transaction hash of the deposit
- Value: Total amount deposited, in satoshis
- Transfers: An array of 0 or more records each containing
- Currency: btc/doge/ltc/eth/xmr
- Date: The date the deposit was credited
- Value: Total amount deposited, in satoshis
- AccountId: The account which sent the transfer
GetWithdrawals [new, untested, may change]
- Gets a list of withdrawals or outgoing transfers
- Request:
- a: GetWithdrawals
- s: User's session cookie
- Token (optional): A paging token returned from a previous call to GetWithdrawals. Only results after the token was generated will be returned. When a pending withdrawal is completed, it is not considered a new result. If you need to monitor withdrawals for completion, do not update your token until it's complete.
- Response:
- Token: A token string to use on the next call to GetWithdrawals
- Withdrawals: An array of 0 or more records each containing
- Currency: btc/doge/ltc/eth/xmr
- Address: The withdrawal address
- Value: Total amount which will be received, in satoshis
- Fee: Total fee, in satoshis
- Requested: The date the withdrawal was requested
- Completed: The date the withdrawal was completed (or null)
- TransactionHash: The transaction hash of the withdrawal (or null)
- Transfers: An array of 0 or more records each containing
- Currency: btc/doge/ltc/eth/xmr
- Value: Total amount transferred, in satoshis
- AccountId: The account receiving the transfer
- Requested: The date the transfer was requested
- Completed: The date the transfer was completed (or null)
Betting...
GetServerSeedHash
- Get the server seed's hash for the next bet.
- Request:
- a: GetServerSeedHash
- s: User's session cookie
- Response:
- Hash: The server seed's hash
SetClientSeed
The client seed is now sent along with every call to PlaceBet or PlaceAutomatedBets.
- Set the client's seed number.
- Request:
- a: SetClientSeed
- s: User's session cookie
- Seed: The user's new seed number (64 bit signed integer)
- Response:
- success: 1 (The seed is changed)
PlaceBet
- Place a bet
- Request:
- a: PlaceBet
- s: User's session cookie
- PayIn: The bet amount, in satoshis
- Low: The low number in the user's guess range. The guess range must be between 0-999,999.
- High: The high number in the user's guess range. The guess range must be between 0-999,999.
- ClientSeed: The seed to use for this bet (32 bit signed integer)
- Currency: btc/doge/ltc/eth/xmr
- ProtocolVersion: 2 [All bot owners should update their code to set this value to opt in to the new response format]
- Response:
- BetId: The bet's ID.
- PayOut: The payout from the bet (subtract PayIn to calculate profit)
- Secret: The secret number from the bet.
- StartingBalance: Your balance just before placing the bet, in satoshis.
- ServerSeed: The server seed used to generate the bet.
- Next: The next server seed hash (If all 0's, check the Warning field)
- Errors:
- ChanceTooHigh: 1 (The chance to win is too high. It must be between 5% and 95%)
- ChanceTooLow: 1 (The chance to win is too low. It must be between 5% and 95%)
- InsufficientFunds: 1 (The user has insufficient funds to make this bet)
- NoPossibleProfit: 1 (There is no possible way for the user to profit from this bet)
- MaxPayoutExceeded: 1 (The bet, if won, would exceed the maximum possible payout for the casino)
PlaceAutomatedBets
- Place a batch of automated bets
- Request:
- a: PlaceAutomatedBets
- s: User's session cookie
- BasePayIn: The base bet amount, in satoshis
- Low: The low number in the user's guess range. The guess range must be between 0-999,999.
- High: The high number in the user's guess range. The guess range must be between 0-999,999.
- MaxBets: The maximum number of bets to make. Current limit is 200.
- ResetOnWin (optional): If true, after winning a bet, the next bet amount will be BasePayIn.
- ResetOnLose (optional): If true, after losing a bet, the next bet amount will be BasePayIn.
- IncreaseOnWinPercent (optional): If ResetOnWin is false, after winning a bet, increase the next bet by this percent. 0.5 = 50%, 1.0 = 100% (double), 2.0 = 200% (triple). Cannot be negative.
- IncreaseOnLosePercent (optional): If ResetOnLose is false, after losing a bet, increase the next bet by this percent. 0.5 = 50%, 1.0 = 100% (double), 2.0 = 200% (triple). Cannot be negative.
- MaxPayIn (optional): The maximum bet amount, or 0 for no maximum.
- ResetOnLoseMaxBet (optional): If true, then after a losing bet where the bet amount is equal to MaxPayIn, the next bet amount will be BasePayIn.
- StopOnLoseMaxBet (optional): If true, then after a losing bet where the bet amount is equal to MaxPayIn, betting will end.
- StopMaxBalance (optional): After a bet, if your balance is at least this amount, then stop betting. 0 for no maximum.
- StopMinBalance (optional): After a bet, if your balance is less than this amount, then stop betting.
- StartingPayIn (optional): The first bet's amount, in satoshis (Overrides BasePayIn as the first bet's size)
- Compact (optional): If true, a compact response is sent. This will save bandwidth and yield quicker responses. For example, 200 bets may take 4000 bytes of bandwidth whereas the compact result might be only 100 bytes.
- ClientSeed: The seed to use for these bets (32 bit signed integer)
- Currency: btc/doge/ltc/eth/xmr
- ProtocolVersion: 2 [All bot owners should update their code to set this value to opt in to the new response format]
- Response:
- BetId: The bet ID of the first bet (Each subsequent bet, add 1).
- PayIns: The amounts of the bets
- PayOuts: The payouts from the bets (subtract PayIns to calculate profit)
- Secrets: The secret numbers from the bets.
- StartingBalance: Your balance just before beginning the bets, in satoshis.
- Next: The next server seed hash (If all 0's, check the Warning field)
- Compact Response:
- BetId: The bet ID of the first bet (Each subsequent bet, add 1).
- BetCount: The total number of bets
- PayIn: The total amount bet
- PayOut: The total amount of all bet payouts (subtract PayIn to calculate profit)
- Seed: The server seed used to calculate the bet results.
- StartingBalance: Your balance just before beginning the bets, in satoshis.
- Next: The next server seed hash (If all 0's, check the Warning field)
- Errors:
- ChanceTooHigh: 1 (The chance to win is too high. It must be between 5% and 95%)
- ChanceTooLow: 1 (The chance to win is too low. It must be between 5% and 95%)
- InsufficientFunds: 1 (The user has insufficient funds to make this bet)
- NoPossibleProfit: 1 (There is no possible way for the user to profit from this bet)
- MaxPayoutExceeded: 1 (The bet, if won, would exceed the maximum possible payout for the casino)
- Seed: The server seed used to calculate the bet results.
General Information...
GetCurrencies
- Gets a list of supported currencies.
- Request:
- Response:
- Currencies: A list of currencies.
Samples
Request: a=UpdateEmergencyAddress&s=1a2b3c4d5e6f&Address=1BitcoinAddress123
Response: {success: 1}
Request: a=Withdraw&s=1a2b3c4d5e6f&Amount=5000000&Address=1BitcoinAddress123&Currency=btc
Response: {Pending: 5000000}
or Response: {InsufficientFunds: 1}
Request: a=GetBalance&s=1a2b3c4d5e6f
Response: {Balance: 123450000}
or Response: {TooFast: 1}
Request: a=PlaceBet&s=1a2b3c4d5e6f&PayIn=1000&Low=0&High=499499&ClientSeed=12345678&Currency=doge
Response: {BetId:123, PayOut: 2000, Secret: 222222, StartingBalance: 5000, ServerSeed: "a1b2c3d4e5f60708a1b2c3d4e5f60708a1b2c3d4e5f60708a1b2c3d4e5f60708"}
or Response: {BetId:123, PayOut: 0, Secret: 888888, StartingBalance: 5000, ServerSeed: "a1b2c3d4e5f60708a1b2c3d4e5f60708a1b2c3d4e5f60708a1b2c3d4e5f60708"}
or Response: {InsufficientFunds: 1}
or Response: {TooFast: 1}
Request: a=PlaceAutomatedBets&s=1a2b3c4d5e6f&BasePayIn=1000&Low=0&High=499499&MaxBets=3&ResetOnWin=1&ResetOnLose=0&IncreaseOnWinPercent=0&IncreaseOnLosePercent=1.0&MaxPayIn=2500&ResetOnLoseMaxBet=0&StopOnLoseMaxBet=0&StopMaxBalance=0&ClientSeed=987654321&Currency=doge
Response: {BetId:123, PayIns: [-1000, -2000, -2500], PayOuts: [0, 0, 5000], Secrets: [777777, 888888, 222222], StartingBalance: 5000, Seed: "a1b2c3d4e5f60708a1b2c3d4e5f60708a1b2c3d4e5f60708a1b2c3d4e5f60708"}
or Response: {BetId:123, PayIns: [-1000, -1000, -1000], PayOuts: [2000, 2000, 0], Secrets: [222222, 333333, 777777], StartingBalance: 5000, Seed: "a1b2c3d4e5f60708a1b2c3d4e5f60708a1b2c3d4e5f60708a1b2c3d4e5f60708"}
or Response: {InsufficientFunds: 1}
or Response: {TooFast: 1}
Request: a=PlaceAutomatedBets&s=1a2b3c4d5e6f&BasePayIn=1000&Low=0&High=499499&MaxBets=200&ResetOnWin=1&ResetOnLose=1&IncreaseOnWinPercent=0&IncreaseOnLosePercent=0&MaxPayIn=2500&ResetOnLoseMaxBet=0&StopOnLoseMaxBet=0&StopMaxBalance=0&ClientSeed=987654321&Currency=btc&Compact=1
Response: {BetId: 123, BetCount: 200, PayIn: -200000, PayOut: 300000, Seed: "a1b2c3d4e5f60708a1b2c3d4e5f60708a1b2c3d4e5f60708a1b2c3d4e5f60708", StartingBalance: 5000}
or Response: {InsufficientFunds: 1}
or Response: {TooFast: 1}