Operator API documentation (v1)

Introduction

St8 is a Game Aggregator that provides unified APIs to simplify workflow of casino Operators when managing their content portfolio.

St8 provides the following APIs for Operator to use (in accordance with this documentation):

  1. Game Launch API
  2. Query API
  3. Bonus API
  4. Transfer Wallet API

Should Operator choose to use Seamless Wallet, it is expected that the Operator will provide Seamless Wallet API generated in accordance with the given documentation.

Changelog

Date Change
2025-12-31 Checksums API now supports filtering by hashing algorithm.
2025-06-26 Added jackpot_debit as new transaction kind.
2025-05-06 1. Introduced rate limiting for Bonus API;
2. Added block with provider mapping information to 9 Wickets exchange transactions;
3. Public release of Regulatory API documentation
2024-11-06 Added developer_code to Cancel Transaction callback
2024-11-01 Public release of Testing API documentation
2024-08-15 Expanded list of bonus related fields that are sent in seamless transactions
2024-05-02 Added site to Balance request
2024-04-03 Added max_payout_coeff to Games response.
2024-02-05 Jurisdiction in player profile cannot be null anymore.
2023-08-10 Added volatility and hit_ratio to Games response.
2023-07-26 1. Listed additional parameters which are being sent in Cancel Transaction callback;
2. Added optional reference_transaction_id field (sent only for cancel kind) to Transactions List response.
2023-05-26 1. Added API to download 9 Wickets exchange transactions;
2. Images now available in .webp format as well;
3. Add 2 more provider transaction kinds related to bonus buying;
4. Clarified limitations of session token;
5. Added processing status to Transfer Wallet API responses.
2023-01-26 1. Added developer_code field to Seamless Wallet API callbacks;
2. Expanded description of Bonus statuses;
3. Cashier: expanded transaction status description and added `processing` status;
4. Added bonus_types field to Games method to show which games support what kind of bonus types;
2022-12-06 Added developer_code field to Transactions List and Round Info (JSON-format) responses
2022-11-24 Added round_closed field to Transactions List and Round Info (JSON-format) responses
2022-10-17 1. Changes to list of required parameters for the game launch. Now required parameters are marked with real money gameplay in mind;
2. Added bonus block to Transactions List and Seamless Wallet callbacks;
3. Added processing status to bonus instances;
4. start_time and end_time in response from Bonus API could be NULL
2022-09-27 Expanded Games method to return lists of Developers and Categories
2022-08-03 Added provider_kind to Seamless API calls and Transactions List
2022-06-13 1. Fixed spelling of Philippines license;
2. Added site to Cancel Bonus;
3. Added cancel_id to Cancel Transaction;
4. Game code in Payout and Buyin could be NULL
2022-06-02 RTP in Games changed type from float to decimal(string)
2022-05-31 1. Initial release of Bonus API documentation;
2. Informational API renamed to Query API;
3. Added support of lang parameter in Build Launch URL
2022-05-02 Added option to call Round Info with transaction_id instead of round
2022-04-12 Added note about automatic device detection during Game Launch
2022-04-10 Initial release of documentation

Seamless vs Transfer wallets

Seamless Wallet

When using Seamless Wallet Operator is responsible for holding information about player current balance (i.e. Operator is holding the wallet)

This solution suggests that the Operator itself should perform all actions with the funds such as checking the balance, increasing/decreasing amounts.

The benefit of such approach is that Operator controls wallet state and doesn't need to rely on anyone else for this matter, as well as possibility for player to play multiple games from different providers at the same time.

The downsides would be:

  • Operator’s involvement and required technical proficiency to implement all callbacks according to Seamless Wallet API definition

  • Amount of network communication between Aggregator’s platform and Operator's platform.

In regions with high network latency, this amount of network calls is the most widespread reason for poor player experience such as slower spin time, bet lags, not being able to place a bet in time and straight up transaction fails due to occasional timeouts.

Transfer Wallet

By implementing Transfer Wallet solution Operator allows Aggregator to hold information about player's balance and perform corresponding changes (i.e. Operator transfers wallet to Aggregator to manage it on Operator's behalf) With such approach Operator has to implement Transfer Wallet API calls to be able to transfer balance in and out of aggregation platform.

The benefit of such approach would be very little network communication: Operator only needs to send requests for transfering money in and out of St8 system. And even if there have been thousands of game rounds played in between deposit and withdraw, Operator doesn't need to do anything to process them, because St8 system does it on their behalf.

The downsides would be:

  • Operator needs to transfer certain amount of money from player's balance to aggregation platform. Until the money gets withdrawn back by operator, it can be used only to play games provided by St8.io

  • If the Operator wants to know what player has used his balance for, then Operator needs to query transactions or consume Apache Kafka topic.

Security

To authenticate requests going in and out of St8 system we use ECDSA signature (Elliptic Curve Digital Signature Algorithm).

Request author has to sign payload with his private key and receiving party has to validate signature with corresponding public key.

We reserve the right to add new fields in payloads of our requests and responses without prior notification. Therefore, Operator has to develop integration keeping this in mind. This also applies to signature verification: Operator has to verify signature of the whole payload and not only from the known fields ( This will be verified during integration acceptance testing).

Interactions Diagram

The diagram below illustrates how St8 and Operator generate and exchange keys during setup phase and signature validation later during operation phase.

Example with OpenSSL library

Generate private Elliptic Curve key

openssl ecparam -genkey -name prime256v1 -noout -out ec.key

You should have now file ec.key with content similar to this:


  -----BEGIN EC PRIVATE KEY-----
  MHcCAQEEIIBEdi1kkP+IAIVmbke0EP8XSyEAaEi82dwLUwr9HuY9oAoGCCqGSM49
  AwEHoUQDQgAE1yliYVgjr28KYkDD0QYkGa9Y11folImZkMrOiNdmz01Eq7a1y9G8
  l/KlnaDluWnKEpm0IBpNy1D+Y5jXIivvbQ==
  -----END EC PRIVATE KEY-----

Retrieve public key from private

openssl ec -in ec.key -pubout -out ec.pub

You should have now file ec.pub with content similar to this:

  -----BEGIN PUBLIC KEY-----
  MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1yliYVgjr28KYkDD0QYkGa9Y11fo
  lImZkMrOiNdmz01Eq7a1y9G8l/KlnaDluWnKEpm0IBpNy1D+Y5jXIivvbQ==
  -----END PUBLIC KEY-----

Generate Signature

Let's assume that "test" is our payload which we want to sign. In this case we would sign it with our private key from ec.key file and then encode it into base64. Note that we've added -n after echo so it wouldn't add new line (\n) in the end of our payload.

echo -n "test" | openssl dgst -sha256 -sign ec.key -binary | base64 > sign.txt

Now you should have a sign.text file with contents similar to:

MEQCIGyMAz34xzIpMr+wTT40L/uIe+n6Tw0L0dli4/TfrA40AiA+AUzgt57yAvrkUqVQSmNMdD0ODdr6imTVYeBJY1kwrw==

Validate Signature

Now we need to decode signature from base64:

base64 -D -i sign.txt -o sign.bin

And feed it back into OpenSSL to validate (Note that we are using public ec.pub key for validation):

echo -n "test" | openssl dgst -sha256 -verify ec.pub -signature sign.bin`

You should have received such result:

Verified OK

More Examples

To simplify integration process St8 has prepared example code of signature generation in the following programming languages/frameworks:

Game Launch

St8 platform provides two methods for Operator to launch the game:

Building launch URL

With this approach Operator doesn't need to make extra calls to St8 platform to obtain game launch URL. Game URL is built according to schema described in this documentation and given to player to load it.

Using this solution Operator has to add only a few required params to the game URL, and the rest of the player session information will be requested by St8 system via the /check callback.

One of the required parameters in game launch URL is token and we will address it as "launch token". We recommended generating unique launch token for combination of player + game + currency. It is important to generate new token on each game launch and it is a good practice to expire this token after 15 mins

Validating game launch

It's important for Operator to validate all arguments of incoming /check call and match them with what is expected to be received (is the game_code matching the game launch token was issued for?). In case of the mismatch this game launch attempt may be classified as an attempted fraudulent behaviour and should be rejected.

In case of successful validation Operator has to reply with information about player and session. One of required fields in reply is token and we will address it as "wallet token". It's required that wallet token is not the same as launch token, since the original token has been already seen by player in the URL and can be abused by malicious player to launch different game.

Please, keep all wallet tokens available for at least couple months, since some /credit or /cancel calls might reference not the latest wallet token, but a week (or more) old. The following diagram describes the processes activated as soon as the player on Operator’s side starts playing a game provided by St8.

Requesting game launch URL

With this approach Operator has to make server-to-server /launch call to St8 system and provide all player session information as payload of this call. In response St8 will return game launch URL which player has to load to start playing.

Since there is no /check callback in this scenario and player never sees request payload, token in this request should be already wallet token.

Please, keep all wallet tokens available for at least couple months, since some /credit or /cancel calls might reference not the latest wallet token, but a week (or more) old.

The following diagram describes the processes activated as soon as the player on Operator’s side starts playing a game provided by St8.

Player Information

Both approaches have one thing in common, which is optional /player_profile callback. St8 makes this request when player first time interacts with games provided by St8 or when Operator prompts St8 to do so (see documentation for /launch calls for details).

Returned player information will be used for selecting the best fitting game configuration. It will also be available in St8 back-office for player segmentation purposes.

Request Game Launch URL

The following framework describes how Operator can request game URL in server-to-server call

header Parameters
x-st8-sign
required
string
Example: MEUCIG4Sv41BkjrkWTdbrmLFQnNLihc...n00jjA=


Base64 encoded signature of request payload made by private key of the requesting party. It has to be validated using corresponding public key.

In case of GET request encoded query string is considered as payload, and for POST requests body is considered as payload.

For more details see here

Request Body schema: application/json
required

Payload of request from Operator platform to St8 system

game_code
required
string (generic_game_code)

Unique string identifier of the Game in St8 system. Can be used as argument in game launch or in other APIs.

It can be obtained from Games endpoint.

currency
required
string (currency)

Current currency code in player's active wallet. MUST comply with ISO 4217 Alpha-3 standard.

required
object (site_object)

This field informs St8 which site the player belongs to and enables use of separate back-office reports and bet limits per site, as well as being additional segmentation filter.

token
required
string [ 10 .. 255 ] characters

Player gameplay session token, serving as a unique identifier for the game session on the Operator's side. This token will be used in the following wallet callbacks. To ensure system integrity, it should be unique and not reused across different gaming sessions. Not required if fun_mode=true.

required
player (string) or null
country
string or null (country) = 2 characters

Country where the player's activity is coming from. It can be NULL if Operator is not sure where the player is currently situated. Country code must be in uppercase and comply with ISO 3166-1 Alpha-2 standard.

lang
string or null (lang)

Language code that is used for game launch. Must be lowercase and must comply with ISO 639-3 standard. If language isn't supported by game client, it will fall back to default language which is English.

device
string or null
Enum: "DESKTOP" "MOBILE"

Type of device used by the player. This will affect game layout for better user experience. St8 has its own player device detection system and will default to it, unless this parameter is provided by the Operator.

fun_mode
boolean or null

Boolean flag to inform St8 system that game is being launched in demo mode where no changes to actual balance happen. Default is false

required
object

Information about the player. Operator is required to either implement /player_profile callback or to send this object at least once (on the first interaction of the player with St8 platform).

Responses

Response Schema: application/json
One of
status
string (generic_status)
Enum: "ok" "error"

Status of action.

game_url
string

URL to game client. Operator has to redirect player to this url either by opening it inside of iframe on Operator's site or opening in a new tab (recommended for mobile devices).

Request samples

Content type
application/json
{
  • "game_code": "btsl_zeppelin",
  • "currency": "EUR",
  • "site": {},
  • "token": "3f7b0483742b3efab97c752cc40a34dd",
  • "player": "player_1234",
  • "country": "IN",
  • "lang": "eng",
  • "device": "DESKTOP",
  • "fun_mode": false,
  • "player_profile": {
    • "id": "player_1234",
    • "jurisdiction": "CW",
    • "default_currency": "EUR",
    • "reg_country": "IN",
    • "affiliate": "aff_5678",
    • "bet_limits": "low",
    • "birth_date": "1999-04-01",
    • "reg_date": "2022-04-10",
    • "attributes": {
      • "labels": [
        ]
      }
    }
}

Response samples

Content type
application/json
Example
{}

Build Game Launch URL

The following process describes how Operator needs to build game launch URL. Requires implementation of /check and /player_profile callbacks

query Parameters
operator_code
required
string
Example: operator_code=demo01

Unique identifier of Operator in St8 system. Used to authorize requests to API and choose correct configurations

game_code
required
string
Example: game_code=btsl_zeppelin

Game Identifier within St8 system. This parameter is used to inform St8 which game has to be launched

token
required
string or null [ 10 .. 255 ] characters
Example: token=94a08da1fecbb6e8b46990538c7b50b2

Identifier of gameplay session in Operator's platform. This token will be later sent to /check callback to get more information about session. Can be omitted in play for fun mode.

fun_mode
boolean or null
Example: fun_mode=false

Boolean flag to inform St8 system that game is being launched in demo mode where no changes to actual balance happen. Default is false.

device
string or null
Enum: "DESKTOP" "MOBILE"
Example: device=DESKTOP

Type of device used by the player. This will affect game layout for better user experience. St8 has its own player device detection system and will default to it, unless this parameter is provided by the Operator.

lang
string or null
Example: lang=eng

Language code that is used for game launch. Must be lowercase and must comply with ISO 639-3 standard. If language isn't supported by game client, it will fall back to default language which is English.

Responses

Response Headers
location
string
Examples: "https://provider.com/game_client?code=zeppelin"

URL to game client

Query API

Informational API that is designed to improve operational activity by providing list of available games, list of transactions or checking result of a round.

Games

Displays the list of games that are available for the Operator.
Flag required on field names means that fields are always sent, however they may be equal NULL

Game Thumbnails

St8 provides games-related media content such as thumbnails. To get thumbnails mentioned above you should build URL according to the following format:

https://{cdn_host}/{game_code}/thumb.[webp/jpg]

Where game_code is game_code which you get in response to this method and cdn_host will be shared with you during integration process.

Examples:

query Parameters
site
string
Example: site=st8casino

Operator's unique ID for site where games are played. Used to filter correct records.

header Parameters
x-st8-sign
required
string
Example: MEUCIG4Sv41BkjrkWTdbrmLFQnNLihc...n00jjA=


Base64 encoded signature of request payload made by private key of the requesting party. It has to be validated using corresponding public key.

In case of GET request encoded query string is considered as payload, and for POST requests body is considered as payload.

For more details see here

Responses

Response Schema: application/json
status
required
string (generic_status)
Enum: "ok" "error"

Status of action.

required
Array of objects (Games)
required
Array of objects (Developer)
required
Array of objects

Response samples

Content type
application/json
{
  • "status": "ok",
  • "games": [
    • {
      • "code": "btsl_zeppelin",
      • "name": "Zeppelin",
      • "enabled": true,
      • "developer": "BETSOLUTIONS",
      • "bonus_types": [
        ],
      • "category": "Crash Games",
      • "themes": [
        ],
      • "features": [
        ],
      • "rtp": "96.2",
      • "volatility": 5,
      • "max_payout_coeff": "41667",
      • "hit_ratio": "20.8",
      • "fun_mode": true,
      • "release_date": "2021-06-14",
      • "deprecation_date": "2024-09-14",
      • "restricted_territories": [
        ],
      • "prohibited_territories": [
        ]
      }
    ],
  • "developers": [
    • {
      • "name": "BETSOLUTIONS",
      • "code": "btsl",
      • "restricted_territories": [
        ],
      • "prohibited_territories": [
        ]
      }
    ],
  • "categories": [
    • {
      • "name": "Crash Games",
      • "type": "rng"
      }
    ]
}

Round Info

This method enables Operator to request additional information about game round. Type of bet (e.g. player, banker, red, black, etc.) for table games and state of reels for slots games.

This API allows to choose the format of data transmission: human readable page or JSON object.

Either round or transaction_id is required, both can be provided at the same time.

query Parameters
round
string
Example: round=9bbd993d9da7df60b3fd4a4ed721b082

Unique round ID within St8 system. Round is an entity that links debit and credit together indicating that these actions are related.

transaction_id
string
Example: transaction_id=729a2a9c-bcfd-4c88-8056-9b4cf8a06314

Unique transaction ID within St8 system. This ID is used as idempotency key, i.e. request with the same transaction_id must not be processed more than once.

player
string
Example: player=player_1234

Unique player ID on Operator's platform.

format
string
Enum: "html" "json"

What format of response Operator wants from this endpoint. Default value is html.

If html is selected, endpoint will return URL to human readable HTML page with information about game round.

If json is selected, endpoint will return JSON object with available information about game round. Note: this metadata will differ from developer to developer.

header Parameters
x-st8-sign
required
string
Example: MEUCIG4Sv41BkjrkWTdbrmLFQnNLihc...n00jjA=


Base64 encoded signature of request payload made by private key of the requesting party. It has to be validated using corresponding public key.

In case of GET request encoded query string is considered as payload, and for POST requests body is considered as payload.

For more details see here

Responses

Response Schema: application/json
One of
status
required
string (generic_status)
Enum: "ok" "error"

Status of action.

url
required
string

URL to page with game round information

Response samples

Transactions

Displays the list of transactions that are matching provided filters.
Flag required on field names means that fields are always sent, however they may be equal NULL

query Parameters
start_time
required
string <date-time>
Example: start_time=2021-02-28T23:00:13Z

Filtering the time when transaction was processed at. It has to be in the past and has to be earlier than the end_time

end_time
required
string <date-time>
Example: end_time=2021-02-28T23:00:13Z

Filtering the time when transaction was processed at. It has to be later than the start_time

cursor
string
Example: cursor=QTEyOEdDTQ....

Cursor where the previous download has stopped. If provided filters match more than limit records St8 will respond with limit number of records plus cursor pointing to where it stopped. If you make exactly same call and add cursor to parameters, you will get next limit records and new cursor. You must continue until returned cursor is NULL.

site
string
Example: site=st8casino

Operator's unique ID for site where games are played. Used to filter correct records.

player
string
Example: player=player_1234

Unique player ID on Operator's platform.

currency
string
Example: currency=EUR

Currency code of transaction. MUST comply with ISO 4217 Alpha-3 standard.

limit
integer
Example: limit=300

Limit how many transactions are returned per one request. Maximum limit is 1000, default is 100

header Parameters
x-st8-sign
required
string
Example: MEUCIG4Sv41BkjrkWTdbrmLFQnNLihc...n00jjA=


Base64 encoded signature of request payload made by private key of the requesting party. It has to be validated using corresponding public key.

In case of GET request encoded query string is considered as payload, and for POST requests body is considered as payload.

For more details see here

Responses

Response Schema: application/json
status
required
string (generic_status)
Enum: "ok" "error"

Status of action.

cursor
required
string or null

Cursor pointing to last record of this batch. Add this cursor in your next request to receive next batch.

required
Array of objects (Transaction)

Transaction List

Response samples

Content type
application/json
{
  • "status": "ok",
  • "cursor": "QTEyOEdDTQ._DexbeWI4KRvLuUMi4_BZsmx1-dftFgIOcwQ4Ki4qk61JwRtzqbJGqylI1M.9q4Qbqw_Ke2_PoGj.fuT00d-ybBk14fCs0mZDjV_gzvr58YXeQfbFfroaIoymqwX-NpH0z21CQGKur4H6S93U9re0WFkbLN6MN1yvTb7596wLxnUQ7-AdhNrApsPrrNMKNIElItgwUQ7uLQQi4xGAAhisHXQftv69QDSrFEPXtCw2RrFUkKnSIlMLhzbSvVb_5a4tEUR3jHyDfJ3emTGHC6hOpwzspXFp5keWKl2faR6gN89nnPSpeKTYg25umiYg3oow5C9sMPtEc3FNAPg7kYL9BWMbzXE9mTZEAKOTbeoLbhJwMf7Vsw.QuIxhVMgDxSZ787H3iWR8g",
  • "transactions": [
    • {
      • "operator_code": "demo01",
      • "site": "st8casino",
      • "player": "player_1234",
      • "game_code": "btsl_zeppelin",
      • "developer_code": "btsl",
      • "round": "9bbd993d9da7df60b3fd4a4ed721b082",
      • "round_closed": false,
      • "transaction_id": "729a2a9c-bcfd-4c88-8056-9b4cf8a06314",
      • "kind": "debit",
      • "provider_kind": "debit",
      • "status": "success",
      • "amount": "0.05",
      • "currency": "EUR",
      • "processed_at": "2022-01-10T23:00:13Z",
      • "provider": {
        },
      • "bonus": {
        },
      • "reference_transaction_id": "729a2a9c-bcfd-4c88-8056-9b4cf8a06314"
      }
    ]
}

9 Wickets Summary

Displays the list of 9 Wickets summary transactions that are matching provided filters.
Flag required on field names means that fields are always sent, however they may be equal NULL

query Parameters
start_time
required
string <date-time>
Example: start_time=2021-02-28T23:00:13.000Z

Filtering the time when transaction was processed at. It has to be in the past and has to be earlier than the end_time

end_time
required
string <date-time>
Example: end_time=2021-02-28T23:00:13.999Z

Filtering the time when transaction was processed at. It has to be later than the start_time

cursor
string
Example: cursor=QTEyOEdDTQ....

Cursor where the previous download has stopped. If provided filters match more than limit records St8 will respond with limit number of records plus cursor pointing to where it stopped. If you make exactly same call and add cursor to parameters, you will get next limit records and new cursor. You must continue until returned cursor is NULL.

site
string
Example: site=st8casino

Operator's unique ID for site where games are played. Used to filter correct records.

player
string
Example: player=player_1234

Unique player ID on Operator's platform.

limit
integer
Example: limit=300

Limit how many transactions are returned per one request. Maximum limit is 1000, default is 100

header Parameters
x-st8-sign
required
string
Example: MEUCIG4Sv41BkjrkWTdbrmLFQnNLihc...n00jjA=


Base64 encoded signature of request payload made by private key of the requesting party. It has to be validated using corresponding public key.

In case of GET request encoded query string is considered as payload, and for POST requests body is considered as payload.

For more details see here

Responses

Response Schema: application/json
status
required
string (generic_status)
Enum: "ok" "error"

Status of action.

cursor
required
string or null

Cursor pointing to last record of this batch. Add this cursor in your next request to receive next batch.

required
Array of objects (9w_summary_transaction)

Summary Objects

Response samples

Content type
application/json
{
  • "status": "ok",
  • "cursor": "QTEyOEdDTQ._DexbeWI4KRvLuUMi4_BZsmx1-dftFgIOcwQ4Ki4qk61JwRtzqbJGqylI1M.9q4Qbqw_Ke2_PoGj.fuT00d-ybBk14fCs0mZDjV_gzvr58YXeQfbFfroaIoymqwX-NpH0z21CQGKur4H6S93U9re0WFkbLN6MN1yvTb7596wLxnUQ7-AdhNrApsPrrNMKNIElItgwUQ7uLQQi4xGAAhisHXQftv69QDSrFEPXtCw2RrFUkKnSIlMLhzbSvVb_5a4tEUR3jHyDfJ3emTGHC6hOpwzspXFp5keWKl2faR6gN89nnPSpeKTYg25umiYg3oow5C9sMPtEc3FNAPg7kYL9BWMbzXE9mTZEAKOTbeoLbhJwMf7Vsw.QuIxhVMgDxSZ787H3iWR8g",
  • "summary_transactions": [
    • {
      • "site": "st8casino",
      • "player": "player_1234",
      • "category_type_id": 1,
      • "category_type": "BetFair",
      • "event_type_id": 1,
      • "event_type": "Soccer",
      • "event_id": 10000151,
      • "event_name": "Japan v Paraguay",
      • "market_id": 1.184953463,
      • "market_name": "Match Odds",
      • "started_at": "2021-07-02T19:30:09",
      • "settled_at": "2021-07-02T21:29:33",
      • "resettled_at": "2021-07-14T10:29:21",
      • "market_total": "1.56",
      • "stake_total": "1.05",
      • "profit_loss": "1.40",
      • "commission": "0.16",
      • "currency_code": "INR",
      • "provider": {
        },
      • "bets": [
        ]
      }
    ]
}

Regulatory API

This is a set of APIs designed for Operators working in regulated markets to help them comply with local online gambling requirements.

Checksums

Lists checksums for critical files used in the games that are available to the Operator.

query Parameters
site
string
Example: site=st8casino

Operator's unique ID for site where games are played. Used to filter correct records.

algorithms[]
Array of strings
Items Enum: "sha1" "sha256" … 1 more
Example: algorithms[]=sha1&algorithms[]=sha256

You may filter results to include only hashing algorithm that you are interested in. Array is encoded with Bracket Notation (aka PHP-style array encoding or Exploded Arrays).

header Parameters
x-st8-sign
required
string
Example: MEUCIG4Sv41BkjrkWTdbrmLFQnNLihc...n00jjA=


Base64 encoded signature of request payload made by private key of the requesting party. It has to be validated using corresponding public key.

In case of GET request encoded query string is considered as payload, and for POST requests body is considered as payload.

For more details see here

Responses

Response Schema: application/json
One of
status
required
string (generic_status)
Enum: "ok" "error"

Status of action.

required
Array of objects (Checksums for game specific files)
required
Array of objects (Developer)

Response samples

Content type
application/json
Example
{
  • "status": "ok",
  • "games": [
    • {
      • "code": "btsl_zeppelin",
      • "name": "Zeppelin",
      • "developer_code": "btsl",
      • "checksums": [
        ]
      }
    ],
  • "developers": [
    • {
      • "name": "BETSOLUTIONS",
      • "code": "btsl",
      • "checksums": [
        ]
      }
    ]
}

Bonus API

Bonus API is designed to enable Operator’s promotional activities such as rewarding players, as well as sending out big reactivation/retention campaigns.

Offers

St8 delivers a logical solution to Operators where decoding the matching bet sizes across multiple games is no longer needed. St8 provides special API method “Offers” for querying available betting options for games making the entire process more flawless.

The following method “Offers” accepts list of games as an argument and returns offers that are compatible with all of the games.

We believe that the strategy of automatic adjustment of bet size to "match the game math", which is employed by certain game developers, should be improved. Otherwise the user might receive lower value of spins that has initially been advertised, thus creating bad user experience for both casino (and marketing) managers and especially players.

Therefore, this API method will show only offers which are exactly compatible with all of the games. The following approach might lead to empty response, when there are no common offers between requested games.

This could happen due to difference in game math (number of lines or coins) as well as game developer's API limitation where they don't allow creation of bonuses for multiple games at the same time. In such cases Operator should try decreasing selection of games or swapping some of the games for more compatible ones.

There are currently three types of offers:

  1. Free bets. Player is awarded with the option of placing free bet(s) of predetermined size. Commonly used with slots products.
  2. Free Money. Player is awarded with balance of predetermined size, which he can spend on bets of any size. Commonly used with live and RNG table games products.
  3. Bonus Game. Player gets an access to bonus gameplay of selected games. Bonus games visually differentiate from regular spins and usually look more entertaining/attractive.

Bonus Creation

St8 provides Operator with API which allows creation of bonuses for multiple games and many users at the same time.

Usual scenario of bonus creation would consist of choosing supported bonus offer (maybe with help of offers method) and providing offer's details along with the list of players. If there are many players, creation process might take some time (response will say that bonus status is processing) and Operator has to come back later to get the final result.

Action sequence diagram:

Bonus Offers

Display the list of available bonus offers that are matching provided filters.

Flag required on field names means that fields are always sent, however they may be equal NULL

query Parameters
game_codes
required
string
Example: game_codes=btsl_zeppelin,btsl_mines

Comma separated list of unique game identifiers in St8 system. It can be obtained from Games endpoint. The same game_code that are being used to launch game.

currency
string (currency)
Examples: currency=EUR currency=USD

Currency code of bonus offer. MUST comply with ISO 4217 Alpha-3 standard.

type
string (bonus type)
Enum: "free_bets" "free_money" … 1 more
Examples: type=free_bets type=free_money

Type of bonus offer. The type affects behaviour of bonus.

free_bets - player will be issued a number (configured by the Operator) of free bets of the same value. Player doesn't pay anything to make those bets, however he gets the whole amount of the win.

free_money - player will be issued a balance which he may spend in the selected games. Usually this type is used for (live) table games.

bonus_game - player will be issued an access to bonus gameplay of selected games. Bonus games visually differentiate from regular spins and usually look more entertaining/attractive

betby - custom bonus type for use with the sports betting product Betby. In this case bonus has to be configured in the Betby back-office and players then atteched to the bonus via Bonus API.

site
string
Example: site=st8casino

Operator's unique ID for site where games are played. Used to filter correct records.

header Parameters
x-st8-sign
required
string
Example: MEUCIG4Sv41BkjrkWTdbrmLFQnNLihc...n00jjA=


Base64 encoded signature of request payload made by private key of the requesting party. It has to be validated using corresponding public key.

In case of GET request encoded query string is considered as payload, and for POST requests body is considered as payload.

For more details see here

Responses

Response Schema: application/json
status
required
string (generic_status)
Enum: "ok" "error"

Status of action.

required
Array of objects (Offers)

Response samples

Content type
application/json
{
  • "status": "ok",
  • "offers": [
    • {
      • "type": "free_bets",
      • "value": "0.05",
      • "currency": "EUR"
      }
    ]
}

Create Bonus

Method for Operator to issue bonus creation order.

header Parameters
x-st8-sign
required
string
Example: MEUCIG4Sv41BkjrkWTdbrmLFQnNLihc...n00jjA=


Base64 encoded signature of request payload made by private key of the requesting party. It has to be validated using corresponding public key.

In case of GET request encoded query string is considered as payload, and for POST requests body is considered as payload.

For more details see here

Request Body schema: application/json
required

Payload of request from Operator platform to St8 system

bonus_id
required
string (bonus_id) [ 2 .. 255 ] characters

Unique bonus ID within Operator's platform. This ID is used as idempotency key, i.e. request with the same bonus_id will not be processed more than once.

game_codes
required
Array of strings (game_codes)

Array of game_code. These are unique identifiers of the games in St8 system.

It can be obtained from Games endpoint.

currency
required
string (bonus_offer_currency)

Currency code of bonus offer. MUST comply with ISO 4217 Alpha-3 standard.

value
required
string (bonus_offer_value)

Monetary value of the bonus offer. Its meaning differs from type to type. Sent as stringified float value (also known as Decimal).

For free_bets it will represent monetary value of each bet.

For free_money and betby it will represent total monetary value received by the player.

For bonus_game it will represent the total cost of this bonus game. Meaning how much it would have theoretically cost the player to reach this bonus game if he had been just playing that game.

type
required
string (bonus_offer_type)
Enum: "free_bets" "free_money" … 1 more

Type of bonus offer. The type affects behaviour of bonus.

free_bets - player will be issued a number (configured by the Operator) of free bets of the same value. Player doesn't pay anything to make those bets, however he gets the whole amount of the win.

free_money - player will be issued a balance which he may spend in the selected games. Usually this type is used for (live) table games.

bonus_game - player will be issued an access to bonus gameplay of selected games. Bonus games visually differentiate from regular spins and usually look more entertaining/attractive

betby - custom bonus type for use with the sports betting product Betby. In this case bonus has to be configured in the Betby back-office and players then atteched to the bonus via Bonus API.

players
required
Array of strings (bonus_players) non-empty [ items [ 1 .. 255 ] characters ]

Array of players. Which are unique player IDs (case-sensitive) on Operator's platform.

Note: if player has never interacted with our system prior to this call, we will call Player Profile callback to learn more about the player.

count
integer (bonus_offer_count)

Number of free bets. Supported only by offers of free_bets type. For other types it will be ignored.

Example: count: 12 means that player will be awarded 12 bets of value each.

site
string (site)

Operator's site where game is being played. The same site which was returned from /check callback.

start_time
string <date-time> (bonus_start_time)

Date and time when bonus becomes active. Must be UTC timestamp and encoded according to ISO 8601. Due to limitation of game developer APIs actual start time might not always match the one requested in this field, therefore, pay attention to start_time in the returned during bonus creation instance object.

Default value: current time

duration
integer (bonus_duration)

For how long (in seconds) since the start_time bonus is supposed to be active. Due to limitation of game developer APIs actual duration might not always match the one requested, therefore, pay attention to end_time in the returned during bonus creation instance object.

Default value: 1 209 600 seconds, which is 2 weeks

Responses

Response Schema: application/json
One of
status
required
string (generic_status)
Enum: "ok" "error"

Status of action.

required
object (bonus_object)

Bonus object. Contains information about value of the bonus, games it has been applied for and the list of players. Pay attention to status of bonus and each particular instance, as it might still be pending or failed.

Request samples

Content type
application/json
{
  • "bonus_id": "bonus_1234",
  • "game_codes": [
    • "btsl_zeppelin",
    • "btsl_mines"
    ],
  • "currency": "EUR",
  • "value": "0.05",
  • "type": "free_bets",
  • "players": [
    • "player_1234"
    ],
  • "count": 12,
  • "site": "st8casino",
  • "start_time": "2022-01-10T23:00:13Z",
  • "duration": 1209600
}

Response samples

Content type
application/json
Example
{
  • "status": "ok",
  • "bonus": {
    • "bonus_id": "bonus_1234",
    • "site": "st8casino",
    • "game_codes": [
      • "btsl_zeppelin",
      • "btsl_mines"
      ],
    • "value": "0.05",
    • "currency": "EUR",
    • "count": 12,
    • "type": "free_bets",
    • "status": "finished",
    • "instances": [
      • {
        }
      ]
    }
}

Fetch Bonus

Method for Operator to fetch info about the bonus order.

query Parameters
bonus_id
required
string (bonus_id) [ 2 .. 255 ] characters
Examples: bonus_id=bonus_1234 bonus_id=20220421_happy_birthday

Unique bonus ID within Operator's platform. This ID is used as idempotency key, i.e. request with the same bonus_id will not be processed more than once.

site
string
Example: site=st8casino

Operator's unique ID for site where games are played. Used to filter correct records.

header Parameters
x-st8-sign
required
string
Example: MEUCIG4Sv41BkjrkWTdbrmLFQnNLihc...n00jjA=


Base64 encoded signature of request payload made by private key of the requesting party. It has to be validated using corresponding public key.

In case of GET request encoded query string is considered as payload, and for POST requests body is considered as payload.

For more details see here

Responses

Response Schema: application/json
One of
status
required
string (generic_status)
Enum: "ok" "error"

Status of action.

required
object (bonus_object)

Bonus object. Contains information about value of the bonus, games it has been applied for and the list of players. Pay attention to status of bonus and each particular instance, as it might still be pending or failed.

Response samples

Content type
application/json
Example
{
  • "status": "ok",
  • "bonus": {
    • "bonus_id": "bonus_1234",
    • "site": "st8casino",
    • "game_codes": [
      • "btsl_zeppelin",
      • "btsl_mines"
      ],
    • "value": "0.05",
    • "currency": "EUR",
    • "count": 12,
    • "type": "free_bets",
    • "status": "finished",
    • "instances": [
      • {
        }
      ]
    }
}

Cancel Bonus

Method for Operator to cancel previously issued bonus package.

header Parameters
x-st8-sign
required
string
Example: MEUCIG4Sv41BkjrkWTdbrmLFQnNLihc...n00jjA=


Base64 encoded signature of request payload made by private key of the requesting party. It has to be validated using corresponding public key.

In case of GET request encoded query string is considered as payload, and for POST requests body is considered as payload.

For more details see here

Request Body schema: application/json
required

Payload of request from Operator platform to St8 system.

bonus_id
required
string (bonus_id) [ 2 .. 255 ] characters

Unique bonus ID within Operator's platform. This ID is used as idempotency key, i.e. request with the same bonus_id will not be processed more than once.

site
string (site)

Operator's site where game is being played. The same site which was returned from /check callback.

players
Array of strings (players) non-empty [ items [ 1 .. 255 ] characters ]

Array of players whose bonuses has to be canceled. If this parameter is omitted, bonuses of players (with same bonus_id) will be canceled.

Responses

Response Schema: application/json
One of
status
required
string (generic_status)
Enum: "ok" "error"

Status of action.

required
object

Bonus object. Contains information about value of the bonus, games it has been applied for and the list of players. Pay attention to status of bonus and each particular instance, as it might still be pending or failed.

Request samples

Content type
application/json
{
  • "bonus_id": "bonus_1234",
  • "site": "st8casino",
  • "players": [
    • "player_1234"
    ]
}

Response samples

Content type
application/json
Example
{
  • "status": "ok",
  • "bonus": {
    • "bonus_id": "bonus_1234",
    • "site": "st8casino",
    • "game_codes": [
      • "btsl_zeppelin",
      • "btsl_mines"
      ],
    • "value": "0.05",
    • "currency": "EUR",
    • "count": 12,
    • "type": "free_bets",
    • "status": "canceled",
    • "instances": [
      • {
        }
      ]
    }
}

Transfer Wallet API

Transfer Wallet API is designated to improve gameplay experience in high network latency areas. This is set of callbacks which Operator can use to manage balance of their players in St8 system.

The following diagram describes the processes activated as soon as the player on Operator’s side starts playing a game provided by St8.

Balance

This method is used to check player's balance in St8 system.

header Parameters
x-st8-sign
required
string
Example: MEUCIG4Sv41BkjrkWTdbrmLFQnNLihc...n00jjA=


Base64 encoded signature of request payload made by private key of the requesting party. It has to be validated using corresponding public key.

In case of GET request encoded query string is considered as payload, and for POST requests body is considered as payload.

For more details see here

Request Body schema: application/json
required

Payload of request from Operator platform to St8 system

player
required
string (player) [ 1 .. 255 ] characters

Unique player ID (case-sensitive) on Operator's platform.

currency
required
string (currency)

Current currency code in player's active wallet. MUST comply with ISO 4217 Alpha-3 standard.

site
string (site)

Operator's site where game is being played. The same site which was returned from /check callback.

developer_code
string (sw_developer_code)

Unique string identifier of the game development studio. With this parameter Operator indicates that balance should be added/removed from a particular developer wallet.

Required to use 9Wickets developer.

It can be obtained from Games endpoint.

Responses

Response Schema: application/json
status
required
string (generic_status)
Enum: "ok" "error"

Status of action.

balance
required
number <string> (balance)

Current balance in player's wallet. Served as stringified float value (also known as Decimal)

currency
required
string (currency)

Current currency code in player's active wallet. MUST comply with ISO 4217 Alpha-3 standard.

player
required
string (player) [ 1 .. 255 ] characters

Unique player ID (case-sensitive) on Operator's platform.

Request samples

Content type
application/json
{
  • "player": "player_1234",
  • "currency": "EUR",
  • "site": "st8casino",
  • "developer_code": "btsl"
}

Response samples

Content type
application/json
{
  • "status": "ok",
  • "balance": "0.055",
  • "currency": "EUR",
  • "player": "player_1234"
}

Deposit

This method is used to transfer player's money from Operator's platform into St8 system to enable player's gameplay.

header Parameters
x-st8-sign
required
string
Example: MEUCIG4Sv41BkjrkWTdbrmLFQnNLihc...n00jjA=


Base64 encoded signature of request payload made by private key of the requesting party. It has to be validated using corresponding public key.

In case of GET request encoded query string is considered as payload, and for POST requests body is considered as payload.

For more details see here

Request Body schema: application/json
required

Payload of request from Operator platform to St8 system

transaction_id
required
string (tw_transaction_id)

Unique ID of this transfer. Has to be generated by Operator. This ID is used as idempotency key, i.e. request with the same transaction_id will not be processed more than once.

player
required
string (player) [ 1 .. 255 ] characters

Unique player ID (case-sensitive) on Operator's platform.

amount
required
number <string> (amount)

Monetary amount of this action. Sent as stringified float value (also known as Decimal).

currency
required
string (currency)

Current currency code in player's active wallet. MUST comply with ISO 4217 Alpha-3 standard.

site
string (site)

Operator's site where game is being played. The same site which was returned from /check callback.

developer_code
string (sw_developer_code)

Unique string identifier of the game development studio. With this parameter Operator indicates that balance should be added/removed from a particular developer wallet.

Required to use 9Wickets developer.

It can be obtained from Games endpoint.

Responses

Response Schema: application/json
status
required
string (tw_status)
Enum: "ok" "processing" … 1 more

Status of transfer wallet action. If processing returned from /deposit or /withdraw API action, then check the status of your transaction via /transfer_check action.

balance
required
number <string> (balance)

Current balance in player's wallet. Served as stringified float value (also known as Decimal)

currency
required
string (currency)

Current currency code in player's active wallet. MUST comply with ISO 4217 Alpha-3 standard.

player
required
string (player) [ 1 .. 255 ] characters

Unique player ID (case-sensitive) on Operator's platform.

Request samples

Content type
application/json
{
  • "transaction_id": "5d41402abc4b2a76b9719d911017c592",
  • "player": "player_1234",
  • "amount": "0.05",
  • "currency": "EUR",
  • "site": "st8casino",
  • "developer_code": "btsl"
}

Response samples

Content type
application/json
{
  • "status": "ok",
  • "balance": "0.055",
  • "currency": "EUR",
  • "player": "player_1234"
}

Withdraw

This method is used to transfer player's money from St8 system back into Operator's platform.

header Parameters
x-st8-sign
required
string
Example: MEUCIG4Sv41BkjrkWTdbrmLFQnNLihc...n00jjA=


Base64 encoded signature of request payload made by private key of the requesting party. It has to be validated using corresponding public key.

In case of GET request encoded query string is considered as payload, and for POST requests body is considered as payload.

For more details see here

Request Body schema: application/json
required

Payload of request from Operator platform to St8 system

transaction_id
required
string (tw_transaction_id)

Unique ID of this transfer. Has to be generated by Operator. This ID is used as idempotency key, i.e. request with the same transaction_id will not be processed more than once.

player
required
string (player) [ 1 .. 255 ] characters

Unique player ID (case-sensitive) on Operator's platform.

amount
required
number <string> (amount)

Monetary amount of this action. Sent as stringified float value (also known as Decimal).

currency
required
string (currency)

Current currency code in player's active wallet. MUST comply with ISO 4217 Alpha-3 standard.

site
string (site)

Operator's site where game is being played. The same site which was returned from /check callback.

developer_code
string (sw_developer_code)

Unique string identifier of the game development studio. With this parameter Operator indicates that balance should be added/removed from a particular developer wallet.

Required to use 9Wickets developer.

It can be obtained from Games endpoint.

Responses

Response Schema: application/json
status
required
string (tw_status)
Enum: "ok" "processing" … 1 more

Status of transfer wallet action. If processing returned from /deposit or /withdraw API action, then check the status of your transaction via /transfer_check action.

balance
required
number <string> (balance)

Current balance in player's wallet. Served as stringified float value (also known as Decimal)

currency
required
string (currency)

Current currency code in player's active wallet. MUST comply with ISO 4217 Alpha-3 standard.

player
required
string (player) [ 1 .. 255 ] characters

Unique player ID (case-sensitive) on Operator's platform.

Request samples

Content type
application/json
{
  • "transaction_id": "5d41402abc4b2a76b9719d911017c592",
  • "player": "player_1234",
  • "amount": "0.05",
  • "currency": "EUR",
  • "site": "st8casino",
  • "developer_code": "btsl"
}

Response samples

Content type
application/json
{
  • "status": "ok",
  • "balance": "0.055",
  • "currency": "EUR",
  • "player": "player_1234"
}

Check Transfer

This method is used to check status of money transfer within St8 system.

header Parameters
x-st8-sign
required
string
Example: MEUCIG4Sv41BkjrkWTdbrmLFQnNLihc...n00jjA=


Base64 encoded signature of request payload made by private key of the requesting party. It has to be validated using corresponding public key.

In case of GET request encoded query string is considered as payload, and for POST requests body is considered as payload.

For more details see here

Request Body schema: application/json
required

Payload of request from Operator platform to St8 system

transaction_id
required
string (tw_transaction_id)

Unique ID of this transfer. Has to be generated by Operator. This ID is used as idempotency key, i.e. request with the same transaction_id will not be processed more than once.

site
string (site)

Operator's site where game is being played. The same site which was returned from /check callback.

Responses

Response Schema: application/json
status
required
string (generic_status)
Enum: "ok" "error"

Status of action.

required
object

Request samples

Content type
application/json
{
  • "transaction_id": "5d41402abc4b2a76b9719d911017c592",
  • "site": "st8casino"
}

Response samples

Content type
application/json
{
  • "status": "ok",
  • "transaction": {
    • "transaction_id": "5d41402abc4b2a76b9719d911017c592",
    • "player": "player_1234",
    • "site": "st8casino",
    • "amount": "0.05",
    • "currency": "EUR",
    • "kind": "deposit",
    • "status": "success",
    • "processed_at": "2022-01-10T23:00:13Z"
    }
}

Seamless Wallet API

This chapter covers set of callbacks which Operator has to provide to enable gameplay when opting for Seamless Wallet solution.

Statuses

Here is the list of statuses that we expect Operator's platform to return in response to seamless wallet callbacks.

Status code Description
ok Operation finished successfully
player_locked Player's activity is suspended due to self-exclusion, fraudulent activity, etc.
session_expired Gameplay session has expired and operation can't be processed
player_not_found Unknown player ID
not_enough_money Player doesn't have enough of balance to place a bet
transaction_not_found Referenced transaction is not found in Operator's platform
game_disabled Operation is rejected because game is disabled or unknown
site_disabled Operation is rejected because site is disabled or unknown
spending_limit Player has reached configured wagering limit and all bets are rejected
auth_failed Operator platform could not verify request signature
unknown For all other error cases not listed above

Provider transaction kinds

St8 appreciates the need of being more transparent with data which we receive from game providers. Original type (aka "kind") of transaction is one of many examples.

This transaction kind gives an insight into origin of transaction, as well as describes some specifics of its processing.

Below you can find the table of supported provider transaction kinds and their descriptions.

Please pay attention to correction_debit.

Provider transaction kind Description
debit Regular in-game betting action, when money has to be taken from the player's balance. Processed in scope of a particular game round and active game session.
credit Regular in-game winning action, when money has to be added to the player's balance. Processed in scope of a particular game round and active game session.
jackpot_debit Action of debiting player's balance due to participation in a jackpot. Represents an entry fee required to join the jackpot pool. It may be processed outside of active gameplay and does not necessarily reference a specific game round. Transaction of this type may or may not be associated with an active game session.
jackpot_credit Action of increasing player's balance due to winning a jackpot. Could be processed when player is not in game and could reference no round or reference already closed round.
promo_credit Action of increasing player's balance due to participating in some kind of promotional activity. It can be tournaments organised by Operator or Provider. It may be processed when player is not in the game and will not reference any round.
free_debit Debiting player's balance due to his use of the issued bonuses. This amount usually equals 0 [1]. If Operator has the concept of "bonus balance", they should debit this balance. It is usually processed in scope of an active gameplay session and round. Transaction of this type should contain reference to the bonus ID[2].
free_credit Crediting player's balance due to his use of the issued bonuses. If Operator has concept of "bonus balance", they should credit this balance. It is usually processed in scope of an active gameplay session and round[3]. Transaction of this type should contain reference to the bonus ID[2].
correction_credit Crediting player's balance on demand of sports content provider due to change in odds and/or betting amount. This may also occur due to resettlement of the match results. This transaction kind is usually used by sportsbook and sports-exchange products
correction_debit Debiting player's balance on demand of sports content provider due to change in odds and/or betting amount. This may also occur due to resettlement of the match results. If the player doesn't have enough balance to fulfil this action, operator should decrease player's balance below zero or set it to 0 and "gift" the rest of the amount. In any case operator must respond `ok` to this transaction. In case of match results resettlement correction debit could be made for the full amount of the preceding credit. This transaction kind is usually used by sportsbook and sports-exchange products
bonus_buy_debit Debiting player's balance due to player buying in-game bonus game. This debit might be bigger than game max bet setting.
bonus_buy_credit Crediting player's balance due to player winning in-game bonus game, that was previously bought by the player.
[1] In most cases amount will be 0, meaning that Operator shouldn't decrease player's balance. However, there may be cases of "discounted" bets, where Operator has to debit only a part of the bet amount (e.g. player's bet is 10 but his balance should be decreased only by 1). The amount that will be sent by St8 platform is the amount to debit player's balance.
[2] True in case bonus was issued via St8 Bonus API or St8 Back-office. If bonus was initiated by Provider or by Operator via Provider Back-office, the bonus reference will be empty
[3] Many Providers send free_credit transactions without any preceding free_debit. Operator must be able to accept such transactions.

Diagram

The following diagram describes the processes activated as soon as the player on Operator’s side starts playing a game provided by St8.

Check

This callback is used by St8 system to obtain information about player and his active session from Operator's platform. It is used during game launch and rewards creation.

While loading game URL (generated by Operator) St8 will get token from query parameters and launch /check request back to Operator platform to obtain extra information about player session.

It's required to return a different token, since the original token has been already seen by player in the URL and can be abused by malicious player.

header Parameters
x-st8-sign
required
string
Example: MEUCIG4Sv41BkjrkWTdbrmLFQnNLihc...n00jjA=


Base64 encoded signature of request payload made by private key of the requesting party. It has to be validated using corresponding public key.

In case of GET request encoded query string is considered as payload, and for POST requests body is considered as payload.

For more details see here

Request Body schema: application/json
required

Payload of request from St8 to Operator platform

token
required
string

Player’s game launch token that was provided in game URL query parameters

game_code
required
string

Code of game that is being launched. Operator has to validate that game_code corresponds to the game that token was originaly issued for. In case of the game_code difference it may be classified as an attempted fraudulent behaviour

Responses

Response Schema: application/json
One of
status
required
string (sw_status)
Enum: "ok" "player_locked" … 9 more

Status of action.

See table for more details

token
required
string (wallet_token) [ 10 .. 255 ] characters

Player's gameplay session token, which was returned in /check callback or provided during game launch. This token serving as a unique identifier for the game session on the Operator's side. To ensure system integrity, it should be unique and not reused across different gaming sessions. This token will be used in the following wallet callbacks.

currency
required
string (currency)

Current currency code in player's active wallet. MUST comply with ISO 4217 Alpha-3 standard.

game_code
required
string (generic_game_code)

Unique string identifier of the Game in St8 system. Can be used as argument in game launch or in other APIs.

It can be obtained from Games endpoint.

country
required
string or null (country) = 2 characters

Country where the player's activity is coming from. It can be NULL if Operator is not sure where the player is currently situated. Country code must be in uppercase and comply with ISO 3166-1 Alpha-2 standard.

player
required
string (player) [ 1 .. 255 ] characters

Unique player ID (case-sensitive) on Operator's platform.

lang
string or null (lang)

Language code that is used for game launch. Must be lowercase and must comply with ISO 639-3 standard. If language isn't supported by game client, it will fall back to default language which is English.

object (site_object)

This field informs St8 which site the player belongs to and enables use of separate back-office reports and bet limits per site, as well as being additional segmentation filter.

Request samples

Content type
application/json
{
  • "token": "737fdef28f96a6a0e240a1081e2a45d5",
  • "game_code": "btsl_zeppelin"
}

Response samples

Content type
application/json
Example
{}

Player Profile

This callback is used by St8 system to obtain information about player from Operator's platform. It is used during game launch and rewards creation.

header Parameters
x-st8-sign
required
string
Example: MEUCIG4Sv41BkjrkWTdbrmLFQnNLihc...n00jjA=


Base64 encoded signature of request payload made by private key of the requesting party. It has to be validated using corresponding public key.

In case of GET request encoded query string is considered as payload, and for POST requests body is considered as payload.

For more details see here

Request Body schema: application/json
required

Payload of request from St8 to Operator platform

player
required
string (player) [ 1 .. 255 ] characters

Unique player ID (case-sensitive) on Operator's platform.

site
required
string (site)

Operator's site where game is being played. The same site which was returned from /check callback.

Responses

Response Schema: application/json
One of
status
required
string (sw_status)
Enum: "ok" "player_locked" … 9 more

Status of action.

See table for more details

id
required
string (player) [ 1 .. 255 ] characters

Unique player ID (case-sensitive) on Operator's platform.

jurisdiction
required
string (jurisdiction)
Enum: "CW" "IoM" … 7 more

Certain regions of the world have specific legislation in place allowing them to license and regulate companies that operate online gambling businesses or provide industry services (such as the supply of gaming software). These regions are referred to as online gambling jurisdictions or licensing jurisdictions. Return in this field jurisdiction code which has to be applied to player.

default_currency
required
string (default_currency)

Default player currency. This currency will be used for payouts and buyins, which are not directly linked to gameplay session, such as promo, jackpot, tournament payouts and entrance fees. In case of such payout or buyin, amount will be converted to default currency and sent to /payout and /buyin callbacks respectively. Therefore, Operator should provide such default currency, which they can always accept. MUST comply with ISO 4217 Alpha-3 standard.

reg_country
required
string (reg_country) = 2 characters

Country of player's registration. Country code must be in uppercase and comply with ISO 3166-1 Alpha-2 standard.

affiliate
string or null (affiliate) [ 2 .. 255 ] characters

ID of an affiliate agent to whom player should be linked. Operator will be able to segment its players by this attribute.

bet_limits
string or null (bet_limits)
Enum: "low" "medium" … 1 more

Inform St8 system whether this is high profile player, which needs increased betting limits. If game client supports different bet limits per player, St8 will launch game with requested bet limit range.

birth_date
string <date> (birth_date)

Player's date of birth. It is used to prevent underage gambling incidents and will be available as segmentation filter in St8 Back-Office.

As defined by full-date in RFC3339

reg_date
string <date> (reg_date)

Date of player's on site registration. It is used for player scoring and will be available as segmentation filter in St8 Back-Office.

As defined by full-date in RFC3339

object or null (attributes)

Metadata about player, which Operator would like to see in St8 Back-Office and use for player segmentation.

Request samples

Content type
application/json
{
  • "player": "player_1234",
  • "site": "st8casino"
}

Response samples

Content type
application/json
Example
{
  • "status": "ok",
  • "id": "player_1234",
  • "jurisdiction": "CW",
  • "default_currency": "EUR",
  • "reg_country": "IN",
  • "affiliate": "aff_5678",
  • "bet_limits": "low",
  • "birth_date": "1999-04-01",
  • "reg_date": "2022-04-10",
  • "attributes": {
    • "labels": [
      • "table game preference",
      • "language English"
      ]
    }
}

Balance

This callback is used by St8 system to obtain player’s current balance from Operator's platform.

header Parameters
x-st8-sign
required
string
Example: MEUCIG4Sv41BkjrkWTdbrmLFQnNLihc...n00jjA=


Base64 encoded signature of request payload made by private key of the requesting party. It has to be validated using corresponding public key.

In case of GET request encoded query string is considered as payload, and for POST requests body is considered as payload.

For more details see here

Request Body schema: application/json
required

Payload of request from St8 to Operator platform

player
required
string (player) [ 1 .. 255 ] characters

Unique player ID (case-sensitive) on Operator's platform.

currency
required
string (currency)

Current currency code in player's active wallet. MUST comply with ISO 4217 Alpha-3 standard.

site
required
string (site)

Operator's site where game is being played. The same site which was returned from /check callback.

token
string (wallet_token) [ 10 .. 255 ] characters

Player's gameplay session token, which was returned in /check callback or provided during game launch. This token serving as a unique identifier for the game session on the Operator's side. To ensure system integrity, it should be unique and not reused across different gaming sessions. This token will be used in the following wallet callbacks.

Responses

Response Schema: application/json
One of
status
required
string (sw_status)
Enum: "ok" "player_locked" … 9 more

Status of action.

See table for more details

balance
required
number <string> (balance)

Current balance in player's wallet. Served as stringified float value (also known as Decimal)

currency
required
string (currency)

Current currency code in player's active wallet. MUST comply with ISO 4217 Alpha-3 standard.

Request samples

Content type
application/json
{
  • "player": "player_1234",
  • "currency": "EUR",
  • "site": "st8casino",
  • "token": "3f7b0483742b3efab97c752cc40a34dd"
}

Response samples

Content type
application/json
Example
{
  • "status": "ok",
  • "balance": "0.055",
  • "currency": "EUR"
}

Debit

This callback is used by St8 system to decrease current balance of player in Operator's platform.

header Parameters
x-st8-sign
required
string
Example: MEUCIG4Sv41BkjrkWTdbrmLFQnNLihc...n00jjA=


Base64 encoded signature of request payload made by private key of the requesting party. It has to be validated using corresponding public key.

In case of GET request encoded query string is considered as payload, and for POST requests body is considered as payload.

For more details see here

Request Body schema: application/json
required

Payload of request from St8 to Operator platform

player
required
string (player) [ 1 .. 255 ] characters

Unique player ID (case-sensitive) on Operator's platform.

site
required
string (site)

Operator's site where game is being played. The same site which was returned from /check callback.

token
required
string (wallet_token) [ 10 .. 255 ] characters

Player's gameplay session token, which was returned in /check callback or provided during game launch. This token serving as a unique identifier for the game session on the Operator's side. To ensure system integrity, it should be unique and not reused across different gaming sessions. This token will be used in the following wallet callbacks.

transaction_id
required
string (transaction_id)

Unique transaction ID within St8 system. This ID is used as idempotency key, i.e. request with the same transaction_id must not be processed more than once.

round
required
string (round)

Unique round ID within St8 system. Round is an entity that links debit and credit together indicating that these actions are related.

round_closed
required
boolean or null (round_closed)

Flag which states whether game round is still open or this transaction is closing it.

game_code
required
string (sw_game_code)

Unique game identifier in St8 system. It can be obtained from Games endpoint.

Note: game code which is being sent to Operator in Seamless Wallet transactions might be different from the game code which was provided by Operator during game launch. This happens when Game Provider has their own lobby and allows players to switch from one game to another (typical behaviour for Live Dealer products). St8 tracks these changes of games and sends Operator the correct game code.

developer_code
required
string (sw_developer_code)

Unique string identifier of the game development studio.

It can be obtained from Games endpoint.

amount
required
number <string> (amount)

Monetary amount of this action. Sent as stringified float value (also known as Decimal).

currency
required
string (currency)

Current currency code in player's active wallet. MUST comply with ISO 4217 Alpha-3 standard.

provider_kind
required
string (provider_kind)

Original kind of transaction sent by Provider.

See the table for more details.

required
object (provider)

Information about game round on Provider's side. Original ID of transaction and round, name under which provider knows the player, information about original currency and transaction amount. Note: neither round nor transaction id from this block is unique and you shouldn't build any logic on this data. St8 provides this information as metadata.

object or null (sw_bonus_object)

Object with information about bonus, if this transaction is related to the previously issued bonuses.

Responses

Response Schema: application/json
One of
status
required
string (sw_status)
Enum: "ok" "player_locked" … 9 more

Status of action.

See table for more details

balance
required
number <string> (balance)

Current balance in player's wallet. Served as stringified float value (also known as Decimal)

currency
required
string (currency)

Current currency code in player's active wallet. MUST comply with ISO 4217 Alpha-3 standard.

Request samples

Content type
application/json
{
  • "player": "player_1234",
  • "site": "st8casino",
  • "token": "3f7b0483742b3efab97c752cc40a34dd",
  • "transaction_id": "729a2a9c-bcfd-4c88-8056-9b4cf8a06314",
  • "round": "9bbd993d9da7df60b3fd4a4ed721b082",
  • "round_closed": false,
  • "game_code": "btsl_zeppelin",
  • "developer_code": "btsl",
  • "amount": "0.05",
  • "currency": "EUR",
  • "provider_kind": "debit",
  • "provider": {
    • "transaction_id": "ZcoFAkJ2dfefOHeapj4",
    • "amount": "500.0",
    • "currency": "USD",
    • "player": "bx08m2vrh6",
    • "round": "r1q2bOHFiUxPp06dPVlbW8"
    },
  • "bonus": {
    • "instance_id": "player_1234_bonus_1234",
    • "status": "finished",
    • "bonus_id": "bonus_1234"
    }
}

Response samples

Content type
application/json
Example
{
  • "status": "ok",
  • "balance": "0.055",
  • "currency": "EUR"
}

Credit

This callback is used by St8 system to increase current balance of player in Operator's platform.

header Parameters
x-st8-sign
required
string
Example: MEUCIG4Sv41BkjrkWTdbrmLFQnNLihc...n00jjA=


Base64 encoded signature of request payload made by private key of the requesting party. It has to be validated using corresponding public key.

In case of GET request encoded query string is considered as payload, and for POST requests body is considered as payload.

For more details see here

Request Body schema: application/json
required

Payload of request from St8 to Operator platform

player
required
string (player) [ 1 .. 255 ] characters

Unique player ID (case-sensitive) on Operator's platform.

site
required
string (site)

Operator's site where game is being played. The same site which was returned from /check callback.

token
required
string (wallet_token) [ 10 .. 255 ] characters

Player's gameplay session token, which was returned in /check callback or provided during game launch. This token serving as a unique identifier for the game session on the Operator's side. To ensure system integrity, it should be unique and not reused across different gaming sessions. This token will be used in the following wallet callbacks.

transaction_id
required
string (transaction_id)

Unique transaction ID within St8 system. This ID is used as idempotency key, i.e. request with the same transaction_id must not be processed more than once.

round
required
string (round)

Unique round ID within St8 system. Round is an entity that links debit and credit together indicating that these actions are related.

round_closed
required
boolean or null (round_closed)

Flag which states whether game round is still open or this transaction is closing it.

game_code
required
string (sw_game_code)

Unique game identifier in St8 system. It can be obtained from Games endpoint.

Note: game code which is being sent to Operator in Seamless Wallet transactions might be different from the game code which was provided by Operator during game launch. This happens when Game Provider has their own lobby and allows players to switch from one game to another (typical behaviour for Live Dealer products). St8 tracks these changes of games and sends Operator the correct game code.

developer_code
required
string (sw_developer_code)

Unique string identifier of the game development studio.

It can be obtained from Games endpoint.

amount
required
number <string> (amount)

Monetary amount of this action. Sent as stringified float value (also known as Decimal).

currency
required
string (currency)

Current currency code in player's active wallet. MUST comply with ISO 4217 Alpha-3 standard.

provider_kind
required
string (Provider Transaction Kind)

Original kind of transaction sent by Provider.

See the table for more details.

required
object (provider)

Information about game round on Provider's side. Original ID of transaction and round, name under which provider knows the player, information about original currency and transaction amount. Note: neither round nor transaction id from this block is unique and you shouldn't build any logic on this data. St8 provides this information as metadata.

object or null (sw_bonus_object)

Object with information about bonus, if this transaction is related to the previously issued bonuses.

Responses

Response Schema: application/json
One of
status
required
string (sw_status)
Enum: "ok" "player_locked" … 9 more

Status of action.

See table for more details

balance
required
number <string> (balance)

Current balance in player's wallet. Served as stringified float value (also known as Decimal)

currency
required
string (currency)

Current currency code in player's active wallet. MUST comply with ISO 4217 Alpha-3 standard.

Request samples

Content type
application/json
{
  • "player": "player_1234",
  • "site": "st8casino",
  • "token": "3f7b0483742b3efab97c752cc40a34dd",
  • "transaction_id": "729a2a9c-bcfd-4c88-8056-9b4cf8a06314",
  • "round": "9bbd993d9da7df60b3fd4a4ed721b082",
  • "round_closed": false,
  • "game_code": "btsl_zeppelin",
  • "developer_code": "btsl",
  • "amount": "0.05",
  • "currency": "EUR",
  • "provider_kind": "free_credit",
  • "provider": {
    • "transaction_id": "ZcoFAkJ2dfefOHeapj4",
    • "amount": "500.0",
    • "currency": "USD",
    • "player": "bx08m2vrh6",
    • "round": "r1q2bOHFiUxPp06dPVlbW8"
    },
  • "bonus": {
    • "instance_id": "player_1234_bonus_1234",
    • "status": "finished",
    • "bonus_id": "bonus_1234"
    }
}

Response samples

Content type
application/json
Example
{
  • "status": "ok",
  • "balance": "0.055",
  • "currency": "EUR"
}

Cancel

This callback is used by St8 system to revert any effect made by referenced transaction to player's balance in Operator's platform.

If Operator receives transaction_id which hasn't been processed before, the transaction_id must be saved to prevent it from being processed later.

Due to specific behaviour of different game providers there might be two different payloads for this call:

  • full - where we send session token, player id, round, etc.
  • limited - where we send only transaction ID of the transaction that has to be reverted.

See examples of different payload below.

header Parameters
x-st8-sign
required
string
Example: MEUCIG4Sv41BkjrkWTdbrmLFQnNLihc...n00jjA=


Base64 encoded signature of request payload made by private key of the requesting party. It has to be validated using corresponding public key.

In case of GET request encoded query string is considered as payload, and for POST requests body is considered as payload.

For more details see here

Request Body schema: application/json
required

Payload of request from St8 to Operator platform

One of
cancel_id
required
string (cancel_id)

Unique ID of cancel action.

transaction_id
required
string (reference_transaction_id)

ID of transaction effect of which has to be canceled. Note, that it could be ID of either debit or credit transaction. Depending on the type of referenced transaction, player’s balance has to be either increased or decreased accordingly.

round
required
string (round)

Unique round ID within St8 system. Round is an entity that links debit and credit together indicating that these actions are related.

player
required
string (player) [ 1 .. 255 ] characters

Unique player ID (case-sensitive) on Operator's platform.

token
required
string (wallet_token) [ 10 .. 255 ] characters

Player's gameplay session token, which was returned in /check callback or provided during game launch. This token serving as a unique identifier for the game session on the Operator's side. To ensure system integrity, it should be unique and not reused across different gaming sessions. This token will be used in the following wallet callbacks.

amount
required
number <string> (amount)

Monetary amount of this action. Sent as stringified float value (also known as Decimal).

currency
required
string (currency)

Current currency code in player's active wallet. MUST comply with ISO 4217 Alpha-3 standard.

site
required
string (site)

Operator's site where game is being played. The same site which was returned from /check callback.

developer_code
required
string (sw_developer_code)

Unique string identifier of the game development studio.

It can be obtained from Games endpoint.

sw_game_code (string) or null

Responses

Response Schema: application/json
One of
status
required
string (sw_status)
Enum: "ok" "player_locked" … 9 more

Status of action.

See table for more details

balance
required
number <string> (balance)

Current balance in player's wallet. Served as stringified float value (also known as Decimal)

currency
required
string (currency)

Current currency code in player's active wallet. MUST comply with ISO 4217 Alpha-3 standard.

Request samples

Content type
application/json
Example
{
  • "cancel_id": "10aec35353f9c4096a71c38654c3d402",
  • "transaction_id": "729a2a9c-bcfd-4c88-8056-9b4cf8a06314",
  • "round": "9bbd993d9da7df60b3fd4a4ed721b082",
  • "player": "player_1234",
  • "token": "3f7b0483742b3efab97c752cc40a34dd",
  • "amount": "0.05",
  • "currency": "EUR",
  • "site": "st8casino",
  • "developer_code": "btsl",
  • "game_code": "btsl_zeppelin"
}

Response samples

Content type
application/json
Example
{
  • "status": "ok",
  • "balance": "0.055",
  • "currency": "EUR"
}

Buyin

This callback is used by St8 system to decrease player's current balance on Operator's platform. It's different from regular debit as it's not related to gameplay session (e.g. campaign or tournament entrance fee).

header Parameters
x-st8-sign
required
string
Example: MEUCIG4Sv41BkjrkWTdbrmLFQnNLihc...n00jjA=


Base64 encoded signature of request payload made by private key of the requesting party. It has to be validated using corresponding public key.

In case of GET request encoded query string is considered as payload, and for POST requests body is considered as payload.

For more details see here

Request Body schema: application/json
required

Payload of request from St8 to Operator platform

player
required
string (player) [ 1 .. 255 ] characters

Unique player ID (case-sensitive) on Operator's platform.

site
required
string (site)

Operator's site where game is being played. The same site which was returned from /check callback.

transaction_id
required
string (transaction_id)

Unique transaction ID within St8 system. This ID is used as idempotency key, i.e. request with the same transaction_id must not be processed more than once.

amount
required
number <string> (amount)

Monetary amount of this action. Sent as stringified float value (also known as Decimal).

currency
required
string (currency)

Current currency code in player's active wallet. MUST comply with ISO 4217 Alpha-3 standard.

sw_game_code (string) or null
developer_code
required
string (sw_developer_code)

Unique string identifier of the game development studio.

It can be obtained from Games endpoint.

provider_kind
required
string (Provider Transaction Kind)

Original kind of transaction sent by Provider.

See the table for more details.

object (provider)

Information about game round on Provider's side. Original ID of transaction and round, name under which provider knows the player, information about original currency and transaction amount. Note: neither round nor transaction id from this block is unique and you shouldn't build any logic on this data. St8 provides this information as metadata.

Responses

Response Schema: application/json
One of
status
required
string (sw_status)
Enum: "ok" "player_locked" … 9 more

Status of action.

See table for more details

balance
required
number <string> (balance)

Current balance in player's wallet. Served as stringified float value (also known as Decimal)

currency
required
string (currency)

Current currency code in player's active wallet. MUST comply with ISO 4217 Alpha-3 standard.

Request samples

Content type
application/json
{
  • "player": "player_1234",
  • "site": "st8casino",
  • "transaction_id": "729a2a9c-bcfd-4c88-8056-9b4cf8a06314",
  • "amount": "0.05",
  • "currency": "EUR",
  • "game_code": "btsl_zeppelin",
  • "developer_code": "btsl",
  • "provider_kind": "correction_debit",
  • "provider": {
    • "transaction_id": "ZcoFAkJ2dfefOHeapj4",
    • "amount": "500.0",
    • "currency": "USD",
    • "player": "bx08m2vrh6",
    • "round": "r1q2bOHFiUxPp06dPVlbW8"
    }
}

Response samples

Content type
application/json
Example
{
  • "status": "ok",
  • "balance": "0.055",
  • "currency": "EUR"
}

Payout

This callback is used by St8 system to increase player's current balance on Operator's platform. It's different from regular credit as it's not related to gameplay session (e.g. campaign or tournament payout).

header Parameters
x-st8-sign
required
string
Example: MEUCIG4Sv41BkjrkWTdbrmLFQnNLihc...n00jjA=


Base64 encoded signature of request payload made by private key of the requesting party. It has to be validated using corresponding public key.

In case of GET request encoded query string is considered as payload, and for POST requests body is considered as payload.

For more details see here

Request Body schema: application/json
required

Payload of request from St8 to Operator platform

player
required
string (player) [ 1 .. 255 ] characters

Unique player ID (case-sensitive) on Operator's platform.

site
required
string (site)

Operator's site where game is being played. The same site which was returned from /check callback.

transaction_id
required
string (transaction_id)

Unique transaction ID within St8 system. This ID is used as idempotency key, i.e. request with the same transaction_id must not be processed more than once.

amount
required
number <string> (amount)

Monetary amount of this action. Sent as stringified float value (also known as Decimal).

currency
required
string (currency)

Current currency code in player's active wallet. MUST comply with ISO 4217 Alpha-3 standard.

sw_game_code (string) or null
developer_code
required
string (sw_developer_code)

Unique string identifier of the game development studio.

It can be obtained from Games endpoint.

provider_kind
required
string (Provider Transaction Kind)

Original kind of transaction sent by Provider.

See the table for more details.

object (provider)

Information about game round on Provider's side. Original ID of transaction and round, name under which provider knows the player, information about original currency and transaction amount. Note: neither round nor transaction id from this block is unique and you shouldn't build any logic on this data. St8 provides this information as metadata.

object or null (sw_bonus_object)

Object with information about bonus, if this transaction is related to the previously issued bonuses.

Responses

Response Schema: application/json
One of
status
required
string (sw_status)
Enum: "ok" "player_locked" … 9 more

Status of action.

See table for more details

balance
required
number <string> (balance)

Current balance in player's wallet. Served as stringified float value (also known as Decimal)

currency
required
string (currency)

Current currency code in player's active wallet. MUST comply with ISO 4217 Alpha-3 standard.

Request samples

Content type
application/json
{
  • "player": "player_1234",
  • "site": "st8casino",
  • "transaction_id": "729a2a9c-bcfd-4c88-8056-9b4cf8a06314",
  • "amount": "0.05",
  • "currency": "EUR",
  • "game_code": "btsl_zeppelin",
  • "developer_code": "btsl",
  • "provider_kind": "free_credit",
  • "provider": {
    • "transaction_id": "ZcoFAkJ2dfefOHeapj4",
    • "amount": "500.0",
    • "currency": "USD",
    • "player": "bx08m2vrh6",
    • "round": "r1q2bOHFiUxPp06dPVlbW8"
    },
  • "bonus": {
    • "instance_id": "player_1234_bonus_1234",
    • "status": "finished",
    • "bonus_id": "bonus_1234"
    }
}

Response samples

Content type
application/json
Example
{
  • "status": "ok",
  • "balance": "0.055",
  • "currency": "EUR"
}

Testing API

Our Testing Tool is an essential part of integrating with our API service. It allows operators to thoroughly test API functionality, performance, and compatibility before production deployment. Additionally, it serves as an assistance tool during the integration process, aiding operators in debugging and troubleshooting.

Key features include endpoint testing, request customization, response validation, performance evaluation, security testing, and automation support.

The St8 team will provide operators with access to the Testing Tool web page during onboarding.

Upon completing the wallet integration, operators may wish to establish consistent quality control measures to ensure compliance with the latest ST8 requirements. To facilitate this objective, operators may integrate ST8 testing tool to their development processes using following API

Tests

List the available tests cases. Pay attention which tests are mandatory.

header Parameters
Authorization
required
string
Example: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Basic Auth credentials to authorize in the Testing tool. Use username and password which are shared by St8 team during onboarding process

Responses

Response Schema: application/json
Array of objects

Response samples

Content type
application/json
{
  • "tests": [
    • {
      • "code": "get_balance",
      • "description": "Operator should be able to respond to balance request.",
      • "mandatory": true,
      • "name": "Basic Balance request"
      }
    ]
}

Run tests

The following process describes how Operator can run specific list of tests

header Parameters
Authorization
required
string
Example: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Basic Auth credentials to authorize in the Testing tool. Use username and password which are shared by St8 team during onboarding process

Request Body schema: application/json
required

Payload of request from Operator platform to St8 Testing tool

required
Array of strings or string

List of test codes. Can be obtained from Tests API. Alternatively keywords all / mandatory can be used to get the relevant tests presets to be launched.

player
required
string

Player ID which will be used in test scenarios

currency
required
string (currency)

Current currency code in player's active wallet. MUST comply with ISO 4217 Alpha-3 standard.

game_code1
required
string

Game code to be sent within test scenarios. Should be set to anything, that Operator will accept.

game_code2
required
string

Alternative game_code to be sent within test scenarios. Should be set to anything, that Operator will accept. Cannot be the same value as game_code1.

token
required
string [ 10 .. 255 ] characters

Token to be sent within test scenarios. Should be set to anything, that Operator will accept.

callback
required
string

Callback URL for calls from the Testing tool. For example, if Operator's callback is https://operator.example/api/st8, requests will be sent to https://operator.example/api/st8/debit and other endpoints, as it described in Wallet API documentation

Responses

Response Schema: application/json
status
required
string
Enum: "success" "failed"
required
object

Tests scenarios and their results

Request samples

Content type
application/json
{
  • "tests": [
    • "get_balance"
    ],
  • "player": "testuser123",
  • "currency": "EUR",
  • "game_code1": "btsl_zeppelin",
  • "game_code2": "evo_crazy_time",
  • "token": "3f7b0483742b3efab97c752cc40a34dd",
}

Response samples

Content type
application/json
{
  • "status": "success",
  • "tests": {
    • "test_code": {
      • "status": "failed",
      • "expected": {
        },
      • "received": {
        }
      }
    }
}