Skip to content

MayaGames API (2.02)

Integrate 10,000+ games from 100+ providers through one REST API. Sign requests with HMAC-SHA256, launch games and keep balances in your own wallet through callbacks.

How it works

  1. Get your credentials

    Find your agent-id and API key in the MayaGames Dashboard.

  2. Load the game list

    Call Get game list for every provider and game you can offer.

  3. Launch a game

    Call Launch a game and open the game URL or HTML for the player.

  4. Answer wallet callbacks

    During play, MayaGames asks your wallet for the balance and sends bets, wins and rollbacks. See Wallet callbacks.

  5. Add free rounds (optional)

    Give players free spins on games that support them. See Free rounds.

Conventions

  • HTTPS only. Calls over plain HTTP fail.
  • Every endpoint uses POST with a JSON body and content-type: application/json.
  • Money is sent as strings. Balances have two decimals, for example "100.00".
  • IDs such as gameId, providerId and transactionId are strings.
  • Every response has status: success, or error with a code and message (see Error codes).

HTTP status codes

HTTP status codes
StatusMeaning
200OK. The request was processed. Check status in the body for the result.
400Bad Request. The request could not be understood or required parameters are missing.
403Forbidden. Access denied.
404Not Found. The resource does not exist.
500Internal Server Error. Unexpected server error.

Base URL

https://gaming.softmaya.com:8443

Error format

Content typeapplication/json
{
"status": "error",
"code": "210",
"message": "Invalid parameters"
}

Authentication

Every request carries your agent-id and an HMAC-SHA256 signature of its body.

Header parameters
Request headers
FieldType and description
content-typerequired
string

The body is JSON.

Value:"application/json"
agent-idrequired
string

Your API ID, shown in the MayaGames Dashboard.

signrequired
string = 64 characters

HMAC-SHA256 of the raw request body, keyed with your API key, as a lowercase hexadecimal string.

How to sign a request

  1. Serialize the body as compact JSON, with no spaces or line breaks (the output of JavaScript's JSON.stringify).
  2. Compute HMAC-SHA256 over that exact string with your API key as the key, and encode it as lowercase hexadecimal.
  3. Send the same string as the body, with the result in the sign header. A request without parameters sends {}, and that body is signed too.
Keep your API key on your server. Never put it in a browser, a mobile app or a public repository. If a key is exposed, replace it in the MayaGames Dashboard right away.

Check your implementation

Sign the test vector body with its example key. Your code is correct when it produces the same sign. Every request sample on this page signs its body this way.

Signed request

import { createHmac } from "node:crypto";

const API_URL = "https://gaming.softmaya.com:8443";
const AGENT_ID = process.env.MAYAGAMES_AGENT_ID;
const API_KEY = process.env.MAYAGAMES_API_KEY; // keep it on your server

export async function mayaGames(path, payload = {}) {
  const body = JSON.stringify(payload); // sign exactly the string you send
  const sign = createHmac("sha256", API_KEY).update(body).digest("hex");

  const res = await fetch(API_URL + path, {
    method: "POST",
    headers: { "content-type": "application/json", "agent-id": AGENT_ID, sign },
    body,
  });
  const text = await res.text();
  let json;
  try {
    json = JSON.parse(text);
  } catch {
    throw new Error(`MayaGames HTTP ${res.status}`); // 400/403/500 without a JSON body
  }
  if (json.status !== "success") {
    throw new Error(`MayaGames ${json.code}: ${json.message}`);
  }
  return json;
}

const { data: providers } = await mayaGames("/api/v2/game");

Test vector

API key   exampleKey0000000000000000000000   (example only)
agent-id  1234
body      {"ip":"192.168.1.1","email":"[email protected]","device":"desktop","gameId":"12112","userId":"sm04-60","countryCode":"DE","balance":"100.00","currency":"EUR"}
sign      96e57319b04f30f1711512068e0a9c29b87849a84b1059af622772505f4284a2

Games

Load the game catalogue and open games for your players. Both requests are signed as described in Authentication.

Get game list

Returns every provider and game available to your account.

Request body schema:application/jsonrequired

No parameters. Send an empty JSON object, {}.

Responses

200Success
Response schema:application/json
Success response fields
FieldType and description
statusrequired
string

The request succeeded.

Value:"success"
required
Array of objects

One entry per game provider.

Fields of data
FieldType and description
providerIdrequired
string <= 8 characters

Unique provider ID.

providerTitlerequired
string <= 128 characters

Provider name.

required
Array of objects

Games of this provider.

Fields of games
FieldType and description
gameIdrequired
string <= 8 characters

Unique game ID. Use it to launch the game and in free rounds.

gameTitlerequired
string <= 36 characters

Game name.

providerId
string <= 8 characters

Provider ID, the same as in the parent entry.

providerTitle
string <= 128 characters

Provider name, the same as in the parent entry.

imagerequired
string <uri> <= 128 characters

Game image URL.

typerequired
string <= 32 characters

Game type.

Enum:"livecasino""slot""skill"
freeRound
number

1 when the game supports free rounds.

200Error

The request was processed but failed. code tells you why.

Response schema:application/json
Error response fields
FieldType and description
statusrequired
string

The request failed.

Value:"error"
coderequired
string

Error code. See Error codes.

Example:"210"
messagerequired
string

Short description of the error.

Example:"Invalid parameters"
400Bad Request The request could not be understood or required parameters are missing.
403Forbidden Access denied.
500Internal Server Error Unexpected server error.

Request samples

Content typeapplication/json
{}

Response samples

Content typeapplication/json
{
"status": "success",
"data": [
{
"providerId": "104",
"providerTitle": "Atmosfera",
"games": [
{
"gameId": "7153",
"gameTitle": "American Bingo Roulette",
"providerId": "104",
"providerTitle": "Atmosfera",
"image": "https://imagedelivery.net/739usE9Q6DfmbPfMABXPMA/42ac843d-5251-4958-f205-90fa098fa700/public",
"type": "livecasino"
}
]
}
]
}

Launch a game

Opens a game session for a player and returns what to show them.

When type is url, open gameData in an iframe or send the player to it. When type is html, gameData is a full HTML document: render it, for example in an iframe's srcdoc. Wallet callbacks for this game carry the sessionId from the response.

Request body schema:application/jsonrequired
Launch a game: request body
FieldType and description
userIdrequired
string <= 64 characters

Your player identifier.

Example:"sm04-60"
emailrequired
string <email> <= 100 characters

Player email address.

countryCoderequired
string = 2 characters

ISO 3166-1 alpha-2 code of the country the player opens the game from.

Example:"DE"
language
string = 2 characters

Game language.

Enum:"en""de""fr""tr""es""gr"
Default:"en"
devicerequired
string

Device the player uses.

Enum:"desktop""mobile"
iprequired
string <= 64 characters

Player IP address.

balancerequired
string <= 12 characters

Player balance with two decimals.

Example:"100.00"
gameIdrequired
string <= 8 characters

gameId from the game list.

currencyrequired
string = 3 characters

Player currency, for example EUR, USD or AUD.

returnUrl
string <uri> <= 250 characters

URL the player returns to when they exit the game.

Responses

200Success
Response schema:application/json
Success response fields
FieldType and description
statusrequired
string

The request succeeded.

Value:"success"
required
object

What to show the player.

Fields of data
FieldType and description
sessionIdrequired
string <= 64 characters

Unique game session ID. Wallet callbacks for this game carry the same sessionId.

typerequired
string <= 32 characters

How the game is delivered. Some games come as a full HTML document.

Enum:"url""html"
gameDatarequired
string

The game URL when type is url, the HTML document when type is html.

200Error

The request was processed but failed. code tells you why.

Response schema:application/json
Error response fields
FieldType and description
statusrequired
string

The request failed.

Value:"error"
coderequired
string

Error code. See Error codes.

Example:"210"
messagerequired
string

Short description of the error.

Example:"Invalid parameters"
400Bad Request The request could not be understood or required parameters are missing.
403Forbidden Access denied.
500Internal Server Error Unexpected server error.

Request samples

Content typeapplication/json
{
"ip": "192.168.1.1",
"email": "[email protected]",
"device": "desktop",
"gameId": "12112",
"userId": "sm04-60",
"countryCode": "DE",
"language": "de",
"balance": "83.80",
"currency": "EUR",
"returnUrl": "https://your-casino.com/lobby"
}

Response samples

Content typeapplication/json
{
"status": "success",
"data": {
"sessionId": "c1feacee7dafadc79504bd0bda8b92b5",
"type": "url",
"gameData": "https://api.6a356a.com/api/v2/game?apitoken=a1c049aee6a76472aa3eb2d797928453&t=1650959128965"
}
}

Wallet callbacks

Balances stay in your system. During play, MayaGames sends JSON requests to your wallet endpoint, and you reply with the player's balance.

Share your wallet endpoint URL with your SoftMaya account manager during integration. Every callback is a POST with a JSON body.

Actions

Callback actions
ActionWhat to do
initThe game session starts. Return the current balance.
balanceThe game asks for the current balance.
betDebit a stake. Check the balance first.
winCredit a win.
betandwinA bet and its win in one request. Apply both, in order.
rollbackCancel an earlier transaction and restore the balance.

Rules for your wallet

  • Process each transactionId once. If the same ID arrives again, return error 320.
  • bet: check the balance first. If it is too low, debit nothing and return error 220.
  • betandwin: apply the bet, then the win, as one operation, and return the final balance.
  • rollback: cancel the transaction in rollbackId. Return 340 if it does not exist, 330 if it was already cancelled.
  • Always return balances with two decimals.
  • Sportsbook bets use the same actions with extra bet slip fields. See Sportsbook bet.

Error response

Content typeapplication/json
{
"status": "error",
"code": "220",
"message": "Insufficient funds"
}

Start session

EVENTSent to your wallet with action: "init"

POSTyour wallet endpoint

Sent when the game session starts. Return the player's current balance.

Request body schema:application/json
Start session: request body
FieldType and description
actionrequired
string <= 64 characters

Callback type.

Value:"init"
userIdrequired
string <= 64 characters

Your player identifier, as sent at launch.

sessionIdrequired
string <= 100 characters

Game session ID from the launch response.

Responses

Success
Response schema:application/json
Success response fields
FieldType and description
statusrequired
string

You read the balance.

Value:"success"
userIdrequired
string <= 64 characters

Player identifier.

balancerequired
string <= 12 characters

Current balance, with two decimals.

Example:"172.56"
Error

Return this when you cannot apply the callback, with the matching error code.

Response schema:application/json
Error response fields
FieldType and description
statusrequired
string

You could not apply the callback.

Value:"error"
coderequired
string

Error code. See Error codes.

Example:"210"
messagerequired
string

Short description of the error.

Example:"Invalid parameters"
POSTyour wallet endpoint

Request samples

Content typeapplication/json
{
"action": "init",
"userId": "sm01-26",
"sessionId": "55da022b8ddc5eff2e389a6599acae6b"
}

Response samples

Content typeapplication/json
{
"status": "success",
"userId": "sm01-26",
"balance": "172.56"
}

Get balance

EVENTSent to your wallet with action: "balance"

POSTyour wallet endpoint

Sent when the game needs the player's current balance.

Request body schema:application/json
Get balance: request body
FieldType and description
actionrequired
string <= 64 characters

Callback type.

Value:"balance"
userIdrequired
string <= 64 characters

Your player identifier, as sent at launch.

sessionIdrequired
string <= 100 characters

Game session ID from the launch response.

Responses

Success
Response schema:application/json
Success response fields
FieldType and description
statusrequired
string

You read the balance.

Value:"success"
userIdrequired
string <= 64 characters

Player identifier.

balancerequired
string <= 12 characters

Current balance, with two decimals.

Example:"172.56"
Error

Return this when you cannot apply the callback, with the matching error code.

Response schema:application/json
Error response fields
FieldType and description
statusrequired
string

You could not apply the callback.

Value:"error"
coderequired
string

Error code. See Error codes.

Example:"210"
messagerequired
string

Short description of the error.

Example:"Invalid parameters"
POSTyour wallet endpoint

Request samples

Content typeapplication/json
{
"action": "balance",
"userId": "sm01-26",
"sessionId": "55da022b8ddc5eff2e389a6599acae6b"
}

Response samples

Content typeapplication/json
{
"status": "success",
"userId": "sm01-26",
"balance": "172.56"
}

Debit a bet

EVENTSent to your wallet with action: "bet"

POSTyour wallet endpoint

Debit the stake. Check the balance first: if it is too low, debit nothing and return error 220 (insufficient funds).

Request body schema:application/json
Debit a bet: request body
FieldType and description
actionrequired
string <= 64 characters

Callback type.

Value:"bet"
userIdrequired
string <= 64 characters

Your player identifier, as sent at launch.

sessionIdrequired
string <= 100 characters

Game session ID from the launch response.

gameId
string <= 8 characters

gameId from the game list.

currency
string = 3 characters

Player currency.

required
Array of objects

One bet.

Fields of transactions
FieldType and description
typerequired
string

Transaction type.

Value:"bet"
amountrequired
string

Stake as a decimal string.

Example:"1.00"
transactionIdrequired
string

Unique ID of this transaction. Process each ID once.

roundId
string

Game round the transaction belongs to.

Responses

Success
Response schema:application/json
Success response fields
FieldType and description
statusrequired
string

You applied the transaction.

Value:"success"
userIdrequired
string <= 64 characters

Player identifier.

balancerequired
string <= 12 characters

Balance after the transaction, with two decimals.

oldBalance
string <= 12 characters

Balance before the transaction, with two decimals.

transactionId
string <= 64 characters

Your own ID for the transaction.

Error

Return this when you cannot apply the callback, with the matching error code.

Response schema:application/json
Error response fields
FieldType and description
statusrequired
string

You could not apply the callback.

Value:"error"
coderequired
string

Error code. See Error codes.

Example:"210"
messagerequired
string

Short description of the error.

Example:"Invalid parameters"
POSTyour wallet endpoint

Request samples

Content typeapplication/json
{
"action": "bet",
"gameId": "5548",
"userId": "sm01-26",
"sessionId": "55da022b8ddc5eff2e389a6599acae6b",
"currency": "AUD",
"transactions": [
{
"type": "bet",
"roundId": "ss_12358157",
"amount": "1.00",
"transactionId": "941"
}
]
}

Response samples

Content typeapplication/json
{
"status": "success",
"userId": "sm01-26",
"balance": "171.61",
"oldBalance": "172.61",
"transactionId": "7963b5247d9e7a3431f12244495784be"
}

Credit a win

EVENTSent to your wallet with action: "win"

POSTyour wallet endpoint

Credit the win to the player's balance.

Request body schema:application/json
Credit a win: request body
FieldType and description
actionrequired
string <= 64 characters

Callback type.

Value:"win"
userIdrequired
string <= 64 characters

Your player identifier, as sent at launch.

sessionIdrequired
string <= 100 characters

Game session ID from the launch response.

gameId
string <= 8 characters

gameId from the game list.

currency
string = 3 characters

Player currency.

required
Array of objects

One win.

Fields of transactions
FieldType and description
typerequired
string

Transaction type.

Value:"win"
amountrequired
string

Win as a decimal string. Wins can have more than two decimals, for example 1.275.

Example:"1.25"
transactionIdrequired
string

Unique ID of this transaction. Process each ID once.

roundId
string

Game round the transaction belongs to.

Responses

Success
Response schema:application/json
Success response fields
FieldType and description
statusrequired
string

You applied the transaction.

Value:"success"
userIdrequired
string <= 64 characters

Player identifier.

balancerequired
string <= 12 characters

Balance after the transaction, with two decimals.

oldBalance
string <= 12 characters

Balance before the transaction, with two decimals.

transactionId
string <= 64 characters

Your own ID for the transaction.

Error

Return this when you cannot apply the callback, with the matching error code.

Response schema:application/json
Error response fields
FieldType and description
statusrequired
string

You could not apply the callback.

Value:"error"
coderequired
string

Error code. See Error codes.

Example:"210"
messagerequired
string

Short description of the error.

Example:"Invalid parameters"
POSTyour wallet endpoint

Request samples

Content typeapplication/json
{
"action": "win",
"gameId": "5548",
"userId": "sm01-26",
"sessionId": "55da022b8ddc5eff2e389a6599acae6b",
"currency": "AUD",
"transactions": [
{
"type": "win",
"roundId": "ss_12358157",
"amount": "1.25",
"transactionId": "942"
}
]
}

Response samples

Content typeapplication/json
{
"status": "success",
"userId": "sm01-26",
"balance": "173.81",
"oldBalance": "172.56",
"transactionId": "7963b5247d9e7a3431f12244495784be"
}

Bet and win

EVENTSent to your wallet with action: "betandwin"

POSTyour wallet endpoint

A bet and its win in one request. Apply the bet first, then the win, as one operation, and return the final balance.

Request body schema:application/json
Bet and win: request body
FieldType and description
actionrequired
string <= 64 characters

Callback type.

Value:"betandwin"
userIdrequired
string <= 64 characters

Your player identifier, as sent at launch.

sessionIdrequired
string <= 100 characters

Game session ID from the launch response.

gameId
string <= 8 characters

gameId from the game list.

currency
string = 3 characters

Player currency.

required
Array of objects

Two transactions: the bet, then the win.

Fields of transactions
FieldType and description
typerequired
string

Transaction type.

Enum:"bet""win"
amountrequired
string

Amount as a decimal string. Wins can have more than two decimals.

Example:"1.00"
transactionIdrequired
string

Unique ID of this transaction. Process each ID once.

roundId
string

Game round the transaction belongs to.

Responses

Success
Response schema:application/json
Success response fields
FieldType and description
statusrequired
string

You applied the transaction.

Value:"success"
userIdrequired
string <= 64 characters

Player identifier.

balancerequired
string <= 12 characters

Balance after the transaction, with two decimals.

oldBalance
string <= 12 characters

Balance before the transaction, with two decimals.

transactionId
string <= 64 characters

Your own ID for the transaction.

Error

Return this when you cannot apply the callback, with the matching error code.

Response schema:application/json
Error response fields
FieldType and description
statusrequired
string

You could not apply the callback.

Value:"error"
coderequired
string

Error code. See Error codes.

Example:"210"
messagerequired
string

Short description of the error.

Example:"Invalid parameters"
POSTyour wallet endpoint

Request samples

Content typeapplication/json
{
"action": "betandwin",
"gameId": "5548",
"userId": "sm01-26",
"sessionId": "55da022b8ddc5eff2e389a6599acae6b",
"currency": "AUD",
"transactions": [
{
"type": "bet",
"roundId": "ss_12358157",
"amount": "1.00",
"transactionId": "941"
},
{
"type": "win",
"roundId": "ss_12358157",
"amount": "1.25",
"transactionId": "942"
}
]
}

Response samples

Content typeapplication/json
{
"status": "success",
"userId": "sm01-26",
"balance": "172.86",
"oldBalance": "172.61",
"transactionId": "7963b5247d9e7a3431f12244495784be"
}

Roll back a transaction

EVENTSent to your wallet with action: "rollback"

POSTyour wallet endpoint

Cancel the transaction in rollbackId, a transaction that was cancelled or not processed, and restore the balance. Return error 340 if it does not exist and 330 if it was already cancelled.

Request body schema:application/json
Roll back a transaction: request body
FieldType and description
actionrequired
string <= 64 characters

Callback type.

Value:"rollback"
userIdrequired
string <= 64 characters

Your player identifier, as sent at launch.

sessionIdrequired
string <= 100 characters

Game session ID from the launch response.

gameId
string <= 8 characters

gameId from the game list.

currency
string = 3 characters

Player currency.

required
Array of objects

One rollback.

Fields of transactions
FieldType and description
typerequired
string

Transaction type.

Value:"rollback"
amountrequired
string

Amount of the cancelled transaction.

Example:"1.00"
rollbackIdrequired
string

transactionId of the transaction to cancel.

transactionIdrequired
string

Unique ID of this transaction. Process each ID once.

roundId
string

Game round the transaction belongs to.

Responses

Success
Response schema:application/json
Success response fields
FieldType and description
statusrequired
string

You applied the transaction.

Value:"success"
userIdrequired
string <= 64 characters

Player identifier.

balancerequired
string <= 12 characters

Balance after the transaction, with two decimals.

oldBalance
string <= 12 characters

Balance before the transaction, with two decimals.

transactionId
string <= 64 characters

Your own ID for the transaction.

Error

Return this when you cannot apply the callback, with the matching error code.

Response schema:application/json
Error response fields
FieldType and description
statusrequired
string

You could not apply the callback.

Value:"error"
coderequired
string

Error code. See Error codes.

Example:"210"
messagerequired
string

Short description of the error.

Example:"Invalid parameters"
POSTyour wallet endpoint

Request samples

Content typeapplication/json
{
"action": "rollback",
"gameId": "5548",
"userId": "sm01-26",
"sessionId": "55da022b8ddc5eff2e389a6599acae6b",
"currency": "AUD",
"transactions": [
{
"type": "rollback",
"roundId": "ss_12358157",
"amount": "1.00",
"rollbackId": "920",
"transactionId": "941"
}
]
}

Response samples

Content typeapplication/json
{
"status": "success",
"userId": "sm01-26",
"balance": "173.61",
"oldBalance": "172.61",
"transactionId": "7963b5247d9e7a3431f12244495784be"
}

Sportsbook bet

EVENTSent to your wallet with action: "bet" or action: "win"

POSTyour wallet endpoint

Sportsbook bets use gameId 6583 and the same bet and win actions. Their transactions also carry betslipId, actionId and ticketDetail, the bet slip with its selections.

Request body schema:application/json
Sportsbook bet: request body
FieldType and description
actionrequired
string <= 64 characters

Callback type.

Enum:"bet""win"
userIdrequired
string <= 64 characters

Your player identifier, as sent at launch.

sessionIdrequired
string <= 100 characters

Game session ID from the launch response.

gameIdrequired
string <= 8 characters

The sportsbook.

Value:"6583"
currency
string = 3 characters

Player currency.

required
Array of objects

One transaction.

Fields of transactions
FieldType and description
typerequired
string

Transaction type.

Enum:"bet""win"
amountrequired
string

Amount as a decimal string.

Example:"1"
transactionIdrequired
string

Unique ID of this transaction. Process each ID once.

betslipId
string <= 64 characters

Bet slip ID.

actionId
string <= 64 characters

Sportsbook action ID.

ticketDetail
object

The bet slip with its selections. events has one entry per selection.

Responses

Success
Response schema:application/json
Success response fields
FieldType and description
statusrequired
string

You applied the transaction.

Value:"success"
userIdrequired
string <= 64 characters

Player identifier.

balancerequired
string <= 12 characters

Balance after the transaction, with two decimals.

oldBalance
string <= 12 characters

Balance before the transaction, with two decimals.

transactionId
string <= 64 characters

Your own ID for the transaction.

Error

Return this when you cannot apply the callback, with the matching error code.

Response schema:application/json
Error response fields
FieldType and description
statusrequired
string

You could not apply the callback.

Value:"error"
coderequired
string

Error code. See Error codes.

Example:"210"
messagerequired
string

Short description of the error.

Example:"Invalid parameters"
POSTyour wallet endpoint

Request samples

Content typeapplication/json
{
"action": "bet",
"gameId": "6583",
"userId": "sm10-1",
"currency": "AUD",
"sessionId": "681df61702ab801a3a559390450c9058",
"transactions": [
{
"type": "bet",
"amount": "1",
"actionId": "BRR:4218146",
"betslipId": "31846757873",
"ticketDetail": {
"id": "4218146",
"type": "multi",
"events": [],
"result": null,
"siteId": 360,
"status": "new",
"bonusId": null,
"taxValue": null,
"netAmount": "1",
"systemBet": 0,
"taxAmount": null,
"possibleWin": "21.03",
"reportAmount": 1,
"bonusFreeBetCount": null
},
"transactionId": "88071_bet_1674041646263_8W33bW"
}
]
}

Response samples

Content typeapplication/json
{
"status": "success",
"userId": "sm10-1",
"balance": "99.00",
"oldBalance": "100.00",
"transactionId": "c4ca4238a0b923820dcc509a6f75849b"
}

Free rounds

Give a player free rounds on games with freeRound: 1 in the game list. Keep the bonusCode from the response: you need it to cancel the free rounds.

Create free rounds

Gives a player free rounds on a game with freeRound: 1 in the game list.

Request body schema:application/jsonrequired
Create free rounds: request body
FieldType and description
userIdrequired
string <= 64 characters

Your player identifier.

userName
string <= 64 characters

Player username.

emailrequired
string <email> <= 100 characters

Player email address.

countryCoderequired
string = 2 characters

ISO 3166-1 alpha-2 country code.

Example:"DE"
currencyrequired
string = 3 characters

Player currency, for example EUR, USD or AUD.

Example:"EUR"
gameIdrequired
string <= 8 characters

A game with freeRound: 1 in the game list.

roundsrequired
integer <= 100

Number of free rounds.

betPerLinerequired
integer

Bet per line: 1 = min (0.05), 2 = mid (0.10), 3 = high (0.20).

Enum:123
startDaterequired
string <date>

First day the free rounds can be played (YYYY-MM-DD).

Example:"2026-12-01"
endDaterequired
string <date>

Last day the free rounds can be played (YYYY-MM-DD).

Example:"2026-12-07"

Responses

200Success
Response schema:application/json
Success response fields
FieldType and description
statusrequired
string

The free rounds were created.

Value:"success"
bonusCoderequired
string <= 32 characters

Free round identifier. Keep it to cancel the free rounds.

200Error

The request was processed but failed. code tells you why.

Response schema:application/json
Error response fields
FieldType and description
statusrequired
string

The request failed.

Value:"error"
coderequired
string

Error code. See Error codes.

Example:"210"
messagerequired
string

Short description of the error.

Example:"Invalid parameters"
400Bad Request The request could not be understood or required parameters are missing.
403Forbidden Access denied.
500Internal Server Error Unexpected server error.

Request samples

Content typeapplication/json
{
"userId": "sm10-62",
"userName": "sm10-62",
"email": "[email protected]",
"countryCode": "DE",
"currency": "EUR",
"gameId": "35728",
"rounds": 30,
"betPerLine": 2,
"startDate": "2026-12-01",
"endDate": "2026-12-07"
}

Response samples

Content typeapplication/json
{
"status": "success",
"bonusCode": "bb805904b10fc9321d2301b7675ada39"
}

Cancel free rounds

Cancels free rounds created with Create free rounds.

Request body schema:application/jsonrequired
Cancel free rounds: request body
FieldType and description
bonusCoderequired
string <= 32 characters

bonusCode returned when the free rounds were created.

Responses

200Success
Response schema:application/json
Success response fields
FieldType and description
statusrequired
string

The free rounds were cancelled.

Value:"success"
messagerequired
string

Result message, for example OK.

200Error

The request was processed but failed. code tells you why.

Response schema:application/json
Error response fields
FieldType and description
statusrequired
string

The request failed.

Value:"error"
coderequired
string

Error code. See Error codes.

Example:"210"
messagerequired
string

Short description of the error.

Example:"Invalid parameters"
400Bad Request The request could not be understood or required parameters are missing.
403Forbidden Access denied.
500Internal Server Error Unexpected server error.

Request samples

Content typeapplication/json
{
"bonusCode": "bb805904b10fc9321d2301b7675ada39"
}

Response samples

Content typeapplication/json
{
"status": "success",
"message": "OK"
}

Error codes

Errors return status: error with one of these codes. Your wallet uses the same codes in its callback replies.

Error code list
CodeNameWhen
210INVALID PARAMETERSA parameter is missing or has an invalid value.
220INSUFFICIENT FUNDSThe balance does not cover the bet. Return it from your bet callback.
230INVALID HMACThe sign header does not match the request body.
240USER NOT FOUNDThe userId is unknown.
250INVALID USER CURRENCYThe currency does not match the player's currency.
310TRANSACTION PARAMETER MISMATCHThe transaction data does not match an earlier request.
320DUPLICATE TRANSACTION IDThe transactionId was already processed.
330TRANSACTION ALREADY CANCELEDThe transaction in rollbackId was already cancelled.
340TRANSACTION NOT FOUNDThe transaction in rollbackId does not exist.
400GENERAL ERRORAny other error.
403GAME IS NOT AVAILABLEThe game cannot be opened, for example in this country.
500INTERNAL SERVER ERRORUnexpected server error. Retry later.

Error response

Content typeapplication/json
{
"status": "error",
"code": "210",
"message": "Invalid parameters"
}