IGaming Non-Restrictive Integration Toolkit Ecosystem

1. Document change history

Table 1. Document change history

Date
Version
Chapter
Change Description

28.2.2024

0.1

Initial Version

23.5.2024

0.2

Added 4.5 Navigation

1.12.2024

0.3

Added 4.5.3 onDomEvent

24.2.2025

0.9

Casino integrations, revamped structure.

15.07.2025

1.0

12.

Cryptocurrencies list.

24.10.2025

1.1

8.

content and gameId added to RollbackRequest

2. Introduction

iGNITE (iGaming Non-restrictive Integration Toolkit Ecosystem) is a set of tools and systems enabling the standardized integration of Sportradar's game portfolio.

This document is designed for B2B partners (Operators, PAMs, iGaming Platforms) who wish to integrate content aggregated by Sportradar's NextGen iGaming Platform.

This includes the following content:

Table 2. Content

Category
Games

Sportsbook

Sportradar

VirtualGames

Sportradar

Casino

Sportradar, Betgames.tv

2.1. Glossary

Table 3. Glossary

Term
Description

Operator

Entity/System/Company that offers iGaming content to the users.

Operator FE App

Application owned by operator, which integrates game content. Web application, mobile application, etc…

Game UI/Game iFrame

Game frontend, e.g. Sportsbook UI, Virtual Game UI, Casino UI

iGNITE Core

Part of Sportradar's NextGen iGaming Platform that is in charge of managing punter accounts and betting transactions

Operators Platform / PAM

Single or multiple systems in charge of handling user sessions and betting transaction flow on Operators end

3. Integration overview

There are three integration concepts between operators and Sportradar's NextGen iGaming Platform.

Game UI integration (Frontend integration)

The standard integration method is to embed the game iframe in the operator’s frontend application.

circle-exclamation

Punter Session integration

Enables seamless session management between operators' and Sportradar systems.

Bet Acceptance integration

Operators are contacted for every relevant betting action (DEBIT, CREDIT, ROLLBACK).

Bet acceptance integration can be configured in two modes:

  • BASIC: Only basic wallet transaction data is shared between systems for systems that do not want to consume detailed bet data.

  • RICH_CONTENT : Basic wallet transaction data is expanded with in-depth details from each bet that occurred within the system.

circle-exclamation
circle-exclamation

Technically, high-level integration covers:

  • Frontend integration: (chapters 4, 5)

UI integration via Chatty iFrame or Simple URL launcher

  • Backend integration: (chapters 6+)

Connection between Sportradar's iGNITE Core and Operator Platform.

Figure1: Integration Overview
circle-exclamation

For seamless types of integration, the following subsequent chapters are key:

Additionally, core subsequent chapters for Casino content integrations are of value:

Core subsequent chapters for Betslip content integrations are of value:

For the transfer wallet type of integration following chapters are key:

4. Game UI integration (Frontend integration)

Depending on the type of content being integrated, UI integration can be done in two ways:

  • Simple URL Launcher: Typically used for casino content where, after loading the game, there is little to no interaction between Operators Front End and Game Content. The game is loaded via URL, and after that, there is no interaction between the two frontends.

  • Chatty iFrame: Typically used for sportsbook and virtual games scenarios that allow more interactivity between Operators Front End and Game Content. Offers a system of JavaScript events and messages that are constantly exchanged between the two frontends.

In practice, the difference between the two approaches is subtle. Chatty iFrame provides the Operator FE App with more control (for content that supports it).

Simple URL Launcher:

Figure 2: Simple URL Launcher

Chatty iFrame:

Figure 3: Chatty iFrame

4.1. Simple URL Launcher

Game content is loaded by using the game URL when a session for a specific game starts. After that, everything is delegated to the backend integration.

Along with the base URL, the following URL parameters are required for each game load:

  • x__token: Punter’s session token

  • x__externalId: Punter’s unique identifier in the operator’s system

  • x__linkId: Provided at integration, different for each game

  • x__gameId: Provided at integration, different for each game

  • x__tenantId: Provided at integration

  • x__activeCurrency: ISO 4217 currency code

  • x__activeLocale: ISO 639-1 alpha-2 language code

  • x__playMode: [REAL, DEMO]

Figure 4: Opening Launch URL

4.2. Chatty iFrame

The central piece of integration is the JavaScript SDK iGNITE.js, designed to act as a standardized communication bridge between Operator FE App and various Game iFrames.

4.2.1. iGNITE.js Overview

iGNITE.js is a JavaScript SDK designed to act as a standardized communication bridge between Operator FE App and various Game iFrames. The SDK comes in two modes:

  • Parent: To be used by Operator FE App in order to feed necessary data to games.

  • Child: To be used by Game iFrame to communicate with Operator FE App.

Figure 5: Operator FE App

4.2.2 Prerequisites

At the integration start, the operator will get the following details to be used through the integration process:

4.2.2.1 sdkParentUrl

Endpoint from which the iGNITE.js SDK should be loaded.

4.2.2.2. tenantId

A unique identifier representing the tenant within Sportradar systems. The tenant is the boundary that separates one operator from another.

On special occasions, a single operator may operate under multiple tenants for various reasons (e.g., different user pools, different platforms across countries).

4.2.2.3. gameId

A unique identifier representing the game within Sportradar systems.

4.2.2.4. gameUrl

URL to load game HTML <iframe> . Each gameId has its own gameUrl.

4.2.2.5. env

Represents the integration environment. One of:

  • staging: Used for the pre-production stage and testing.

  • production: Used for production.

4.2.3. iFrame Integration

4.2.3.1 SDK Injection to Index File

Inject <script> element into your index file:

circle-exclamation

4.2.3.2. Integrator Parent Creation

After the script is loaded, the global variable igniteIntegrator becomes available, and it is used to initialize the integrator. The integrator must be initialized before the iframe source is set. It should be done in the following manner:

  • tenantId - (UUID) Unique tenant identifier. Provided at integration start.

  • externalId - (string[100]) Unique punter identifier in the Operator's system

  • feToken - (string[1000]) Session token in the Operator's system

  • env - staging vs production

  • debug - (de)activates different debug features (like logs, etc.). Always true on staging env

  • settings - object containing settings that will be used in all child nodes

    • activeCurrency - object containing details regarding the currency used. Available currencies must be exchanged before integration starts

      • code - ISO 4217 currency code

      • symbol - Currency symbol to be displayed

    • activeLocale - ISO 639-1 alpha-2 language code

    • oddsOption - oneOf: DECIMAL, FRACTIONAL, AMERICAN

    • manualWalletsUpdate - (boolean)[optional] - Refresh balance in frame

  • b2bVal - [optional] (string[1000]) Value to propagate on every punter-initiated action from Operator FE App to Operator Platform

  • children - collection of objects that represent integrated games, with parameters:

    • frameId - Unique frame identifier assigned by Operator

    • childId - Parameter assigned at integration start for each game integration.

    • gameOptions - [optional] Object reserved for propagating options specific to each game to the specific Game iFrame. Possible options are communicated at integration start (if available)

    • b2bVal - [optional] (string[1000]) Value to propagate on every punter-initiated action from Operator FE App to Operator Platform. Has precedence over the global value set in the root settings node.

  • events - [optional] object containing a list of event handlers

    • onNavigationChanged - [optional] (function) Event handler that gets triggered when in-product navigation occurs, e.g., navigation to tournament/match details in the case of a sport product. See navigation

    • onNavigationRequested - [optional] (function) Event handler that gets triggered when external navigation is requested from a child, e.g., browser history actions back/forward, external site navigation. See navigation

    • onLoginRequested - [optional](function) Event handler that gets triggered when a user attempts to do an action for which they need to be logged in

    • onBalanceChanged - [optional](function) Event handler that gets triggered when a child detects there has been a change in active currency balance (e.g., after a bet is placed). This only works when manualWalletsUpdate is set to true

4.2.3.3. Iframe setup

For each integrated game, the operator must set the iframe element source to the provided gameUrl for the appropriate product.

iframe id must be unique since it represents the basis of communication between iGNITE.js parent and children.

4.2.4. Message exchange between parent and iframe child

4.2.4.1. setSession / destroySession

See Punter Session Integration (Chatty iFrame) for in-depth details.

4.2.4.2. updateWallets

Game iFrame must be aware of the punter’s balance in order to facilitate bet placement. Game iFrame will regularly collect this data from the backend via iGNITE Core, but for an optimal experience, additional frontend implementation is required.

  • id* - (string[100]) Wallet identifier. If not available in the Operator system, any random string value should be set.

  • type - (oneOf: REAL, BONUS) Differentiates between real and bonus money wallets.

  • balance - (string) See Amount

  • currency - (string) See Currency

  • version - Balance version. If unavailable, set the UNIX timestamp when the request was generated. This value handles race conditions between frontend and backend balances.

  • options - Node reserved for special bonus scenarios (Out of scope of this document).

4.2.4.3. updateSettings

Ability to update any settings set while the SDK parent is initialized (Integrator Parent Creation).

4.2.4.4. updateGameOptions

Ability to update any gameOptions set while the SDK parent is initialized (Integrator Parent Creation).

4.2.4.5. navigateBack/Forward

Notify child(ren) about navigation through history on the Operator’s app that should be reflected inside the child as well. E.g., the user navigates with the browser back action from event details to a full offer.

4.2.4.6. navigationChanged

Notify a child about navigation in the Operator’s app that should be reflected inside the child as well. E.g., user navigates to live sport offer.

4.2.4.7. sendMessage

When there is a need for a specific message to be sent to a specific child (or all of them, if childId is omitted), the following can be used:

Action and data structure will be agreed upon on a case-by-case basis, depending on what needs to be communicated.

4.2.5. Events

4.2.5.1. onNavigationChanged

This handler enables the Operator’s URL updating and preserving a certain product view after a page reload. It will be triggered every time navigation occurs in the child app. It receives a data parameter that looks like the following:

  • path - (string(1000)) Represents the pathname part of the child app.

  • params - [optional] Object containing product-dependent data.

Use-case:

A player navigates to a specific tournament view inside the sports child application. The Operator’s application uses the provided path and updates its own URL. On page reload, the same path should be used as a pathname for gameUrl in order to activate the same tournament view:

4.2.5.2. onNavigationRequested

This handler is used when external navigation is required. It receives a data parameter that looks like the following:

  • type - (oneOf: GO, BACK, FORWARD) Represent request type of the navigation. GO is used for external URLs, e.g. marketing banners get clicked and the operator’s page should redirect to a certain URL or open it in a new tab. BACK and FORWARD are used when simple browser history navigation is requested.

  • data - [optional] Contains additional information when navigation type GO is used.

    • url - (string) URL that is requested to be opened.

    • target - (oneOf: _blank) If provided, it will have the value _blank, indicating that the URL should be opened in a new tab.

4.2.5.3. onDomEvent

This handler is used when there’s a need to listen to certain DOM events happening in the child. It receives a data parameter that looks like the following:

  • type - represents the name of the DOM event that occurred.

  • params - different sets of data that additionally describe the DOM event. The structure is entirely dependent on the event in question. The example above shows what will be sent for the scroll event.

5. Punter Session Integration (Chatty iFrame)

circle-exclamation

In order to place bets, punters must be authenticated to the iGNITE Core.

iGNITE Core supports on-the-fly punter registration and authentication.

Session identifiers are propagated from the Operator FE App via iGNITE.js SDK.

Figure 6: Punter Session Integration

Steps necessary from operators POV:

  1. Operator FE App invokes setSession via iGNITE.js SDK

circle-exclamation
circle-exclamation

2. iGNITE Core invokes SessionCheckRequest. Operator Platform is expected to validate if the feToken matches the one issued to the Operator FE App. Operator Platform is expected to return sessionToken (can be the same or a different value as feToken)

Please refer to Punter Session Integration (backend) for in-depth API details.

3. The operator can trigger a logout action by invoking the destroySession method.

6. iGNITE Core (Backend Integration)

6.1. Overview

Figure 7: Backend Integration

All backend APIs follow the same principle. Requests are generated on iGNITE Core, and the Operator needs to build a service that responds to these requests in a documented fashion.

In-depth details of the integration will be described in Punter Session Integration(backend) chapter and onwards.

Within this chapter, we’ll mention general guidelines and requirements.

6.2. API Integration URLs

The operator platform must provide a URL when integration is ready for testing:

  • SessionCheck (POST)

  • SessionRefresh (POST)

  • FetchPunterDetails (POST)

  • Debit (POST)

  • Credit (POST)

  • Rollback (POST)

  • FetchWallets (POST)

Details of each method are described in Chapter 7 and onwards.

6.3. API - API authentication

The operator platform is expected to protect integration URLs with Basic HTTP authentication.

6.4. HTTP Headers

Standard HTTP headers will be generated on each request.

6.5. Respond with HTTP 200/OK only

The Operator platform is expected to respond with an HTTP 200/OK response as documented.

6.6. Performance requirements

circle-exclamation

6.7. Idempotency

circle-exclamation

The operator must return an identical response to any retried transaction as it would have been returned by the first call.

A retry can take place several seconds, minutes, hours, or days after the initial try.

6.8. Security

If not agreed otherwise, the operator must provide SSL/TLS URLs for all backend endpoints.

6.9. Session Validation

When received, the original sessionToken propagated from the Operator FE App must be validated by the Operator Platform.

6.10. Backwards compatibility

New features and functionality will constantly be added to iGNITE Core, which can lead to the addition of new parameters not included in this documentation.

Operator Platform must ignore, without failure, the presence of new or additional non-documented parameters.

7. Punter Session Integration (backend)

Chapter Punter Session Integration (frontend) describes the authentication flow that starts in the Operator FE App and concludes with operator session validation on the backend via the Operator Platform. Please refer to it for a larger context.

The Operator Platform is expected to respond to the following HTTP requests triggered by the iGNITE Core.

Name

Description

SessionCheck

Validates punter session

SessionRefresh

Refresh punter session

PunterDetails

Retrieves punter details

7.1. SessionCheck (POST)

Figure 8: fe Token Validation

Operator Platform validates if the feToken matches the one being propagated by the Game iFrame.

Table 4. SessionCheckRequest

Parameter
Type
Description

feToken

string(1000)

Session token propagated by frontend application

This value can be the same as sessionToken to be returned if the operator uses the same session id for frontend and backend.

externalId

string(100)

Punter identifier in operator’s system

tenantId

UUID

Tenant identifier agreed on integration start

clientIp

IP address from which punter originated. See IP.

clientUserAgent

string(1000)

User-agent used by the punter

b2bVal*

string(1000)

Contains details provided inside b2bVal iframe parameter. See iFrame integration

*Optional

Table 5. SessionCheckResponse

Parameter
Type
Description

isValid

boolean

true/false. Does feToken value match the one provided to the Operator FE App?

sessionToken

string(1000)

Session Token to be used in Betting Acceptance Integration.

This value can be the same as feToken if the operator uses the same session id for frontend and backend.

clientError- Message*

string(1000)

Error message to be presented to Punter in case of isValid:false. Applicable to selected providers.

punterDetails*

PunterDetails Response

7.2. SessionRefresh (POST)

Figure 9: Session Refresh

Operator Platform generates a valid SessionToken.

Table 6. SessionRefreshRequest

Parameter
Type
Description

SessionToken

string(1000)

Session token to be used in Betting Acceptance Integration

This value can be the same as feToken if the operator uses the same session id for frontend and backend.

externalId

string(100)

Punter identifier in operator’s system

tenantId

UUID

Tenant identifier agreed on integration start

clientIp

IP address from which punter originated. See IP.

clientUserAgent

string(1000)

User-agent used by the punter

b2bVal*

string(1000)

Contains details provided inside b2bVal iframe parameter. See iFrame integration

*Optional

Table 7. SessionRefreshResponse

Parameter
Type
Description

isValid

boolean

true/false. Does sessionToken value match the one provided to the Operator FE App?

sessionToken

string(1000)

Newly generated Session Token

clientError- Message*

string(1000)

Error message to be presented to Punter in case of isValid:false. Applicable on selected providers.

punterDetails*

PunterDetails Response

*Optional

7.3. FetchPunterDetails (POST)

Figure 10: Iframe Returning Information

Game iFrame and returns information regarding the punter.

Table 8. PunterDetailsRequest

Parameter
Type
Description

feToken*

string(1000)

Session token propagated by frontend application

externalId

string(100)

Punter identifier in operator’s system

tenantId

UUID

Tenant identifier agreed on integration start

clientIp*

IP

IP address from which punter originated. See IP.

clientUserAgent*

string(1000)

User-agent used by the punter

b2bVal

string(1000)

Contains details provided inside b2bVal iframe parameter. See iFrame integration

*Optional

Table 9. PunterDetailsResponse

Parameter
Type
Description

type

enum

oneOf:

  • PLAYER: Online player

externalId

string(1000)

Punter identifier in Operator Platform

nickname

string(200)

Nickname

brandId*

string(32)

Brand identifier in Operator Platform

agentId*

string(32)

Agent identifier in Operator Platform

affiliateId*

string(32)

Affiliate identifier in Operator Platform

dob*

date

Date of birth

email*

string(200)

Email

personal- Number*

string(200)

Personal number provided by jurisdiction.

sex*

enum

One of:

  • M: Male

  • F: Female

firstName*

string(200)

First name

lastName*

string(200)

Last name

mobileNum*

string(200)

Mobile number

resAddress*

string(200)

Residential Address

resCity*

string(200)

Residential City

resPostal- Code*

string(200)

Residential Postal Code

resCountry*

string(200)

Country of residence

taxCategory*

string(200)

Tax Category

taxRegion*

string(200)

Tax Region

rcPeriod*

Integer

Realty check period (in minutes)

Parameter

Type

Description

isTesting*

boolean

Marks test user

tags*

Tags

List of Tags assigned to a Punter. See table 10 below

*Optional

Table 10. Tags

Parameter
Type
Description

tagCode

string(1000)

Tag Code.

tagName

string(1000)

Tag Name.

8. Bet Acceptance BASIC Integration

BASIC bet acceptance integration is the foundation of Bet Acceptance and is enough for Operators that do not require in-depth bet information consumption.

Integration is done via 4 HTTP endpoints:

Name
Description

Debit

Debit (takes funds) from punters wallet/balance

Credit

Credit (award funds) to punters wallet/balance

Rollback

Rollback of debit or credit transaction

FetchWallets

Retrieves punter wallets and balances

8.1. Debit & Credit (POST)

circle-exclamation
circle-exclamation
Figure 11: Debit and Credit (POST)

Table 11. DebitRequest / CreditRequest

Parameter
Type
Description

Id

ULID

Unique transaction identifier

tenantId

UUID

Tenant identifier agreed on integration start

gameId

integer

Unique Game identifier defined on integration start

amount

Amount

Amount to be taken from user wallets/balances. See Amount

currency

Currency

punter

Punter

See Punter

occurredAt

DateTime

contentType

enum

One of:

  • BETSLIP: Betslip based games (e.g., Casino, Virtuals)

  • CASINO: Casino games

content*

RichContent

Non-null if RICH_CONTENT mode is activated.

b2bVal*

string(1000)

Value propagated from Operator FE App

*Optional

Table 12. DebitResponse / CreditResponse

Parameter
Type
Description

status

RsStatus

RsStatus (see Table 62 in Common Data Types)

wallets

[ Wallet ]

Collection of punter wallets (see Table 64 in Common Data Types)

occurredAt

DateTime

errorMessage*

string(1000)

Error message in case of NON-OK status

clientError- Message*

string(1000)

Error message to be presented to Punter in case of NON-OK status.

*Optional

8.2. Rollback (POST)

circle-exclamation
circle-exclamation

Rollback is used to reverse any Debit or Credit request.

  • In case of Rollback of Credit, funds should be taken from punters (Operators reserve the right not to do so, but still have to respond with status request OK)

  • In case of Rollback of Debit, funds should be given to the punters

Figure 12: Debit and Credit Rollback

Table 13. RollbackRequest

Parameter
Type
Description

id

ULID

Unique transaction identifier

tenantId

UUID

Tenant identifier defined on integration start

punter

Punter

See Table 63 in Common Data Types

occurredAt

DateTime

gameId

integer

Unique Game identifier defined on integration start

contentType

enum

One of:

  • BETSLIP: Betslip based games (e.g., Casino, Virtuals)

  • CASINO: Casino games

content*

RichContent

Non-null if RICH_CONTENT mode is activated.

*Optional

Table 14. RollbackResponse

Parameter
Type
Description

status

RsStatus

RsStatus (see Table 62 in Common Data Types)

wallets

[ Wallet ]

Collection of punter wallets (see Table 64 in Common Data Types)

occurredAt

DateTime

errorMessage*

string(1000)

Error message in case of NON-OK status

*Optional

8.3. FetchWallets (POST)

Figure 13: Fetch Wallets (POST)

Used to retrieve the state of punter wallets/balances.

Table 15. FetchWalletsRequest

Parameter
Type
Description

tenantId

UUID

Tenant identifier defined on integration start

punter

Punter

See Table 63 in Common Data Types

occurredAt

DateTime

Time when request is generated. See DateTime

currency*

Currency

Filter out only wallets/balances in a specific currency. See Currency

gameInfo

GameInfo

GameInfo (see Table 65 in Common Data Types)

*Optional

Table 16. FetchWalletsResponse

Parameter
Type
Description

status

RsStatus

RsStatus (see Table 62 in Common Data Types)

wallets

[ Wallet ]

Collection of punter wallets (see Table 64 in Common Data Types)

occurredAt

DateTime

errorMessage*

string(1000)

Error message in case of NON-OK status

*Optional

9. Betslip RICH_CONTENT Integration

circle-exclamation
circle-exclamation

9.1. What is a Betslip?

Figure 14: Betslip
  • A betslip represents a collection of Bets.

  • Betslip is only a container for bets, so it is unaware of data such as stake or payout amounts and is not subject to tax regulations. This data is part of each bet.

  • Each betslip has its own identifier.

  • Most betslips placed will be betslips with one bet only. But multi-bet scenarios are present in a variety of sportsbooks and virtual games scenarios.

9.2. What is a Bet?

  • A bet represents a set of selections and their predicted outcome

  • A bet is always a part of the betslip container.

  • Bets on the same betslip are independent of each other, which means that their life cycle can be in different phases.

9.3. What is a Selection?

  • A selection is part of a bet.

  • A selection is associated with the market and outcome that punters try to predict.

9.4. Systems bets (selectedSystems)

System Bet is a mixture of several accumulator bets that make it possible to lose one or more bets and still win part of the bet. All bets are communicated as systems bets. selectedSystems node gives context to the bet.

Figure 15: System bet

The Bet above is made of 8 selections.

By altering selectedSystems nodes, these bets become different accumulators. E.g.:

selectedSystems value
Number of combinations
Description

[8]

1

1 Eightfold accumulator bet

[7]

8

8 Sevenfolds accumulator bets

[6]

28

28 Sixfolds accumulator bets

[5]

56

56 Fivefolds accumulator bets

[1]

8

8 Single bets

[2,3,4,5,6,7,8]

247

“Goliath'' made up of 247 bets. 28 Doubles, 56 Trebles, 70 Fourfolds, 56 Fivefolds, 28 Sixfolds, 8 Sevenfolds and one Eightfold.

9.5. Selection Category

Each selection is placed into a certain category. categoryId is represented by a single string and using the formula:

categoryId = “cat_lvl_1” + “/” + “cat_lvl_2” + “/” + “cat_lvl_3” + “/” + "cat_lvl_4"

Where each integrated game/product has its own category hierarchy.

E.g., Sportradar's Sportsbook uses the following logic:

  • cat_level_1 = live vs prematch identifier

  • cat_level_2 = {sport ID} (e.g., Soccer, Basketball)

  • cat_level_3 = {subcategory ID} (e.g., England, Finland, International, International clubs )

  • cat_level_4 = {tournament ID} (e.g., Premier League, World Cup, FA Cup )

9.6. Bet Activity

Bet activity adds additional context to the basic CREDIT, DEBIT, and ROLLBACK methods' basic payloads.

Operators can utilize this data to get information about every detail of every bet placed.

activityId serves as an index to go down further inside bet details.

A simplified JSON example can be found below:

Figure 16: Bet Activity JSON
circle-exclamation
Bet Flow Sequence diagram

An in-depth overview of each activity can be found in the chapters below.

9.6.1. Betslip Placement (PREPARE_PLACE_BETSLIP)

circle-exclamation
Figure 17: Debit Remove Funds

9.6.2. Part of bets are rejected (CONFIRM_PLACE_BETSLIP)

circle-exclamation
circle-exclamation
Figure 18: Credit Add Funds

9.6.3. Cashout (CASHOUT_BETS)

The Cashout functionality enables punters to get money back on their bet at any time during the event they’ve bet on, not just when the event is over. This is most common, but not exclusive to, sportsbook betting games.

circle-exclamation

Expected Operator Platform Behavior: CREDIT (add) funds to punters' wallet(s).

Figure 19: Credit Add Funds

9.6.4. Bet Cancellation (CANCEL_BETS)

circle-exclamation
circle-exclamation
Figure 20: Credit Cancel Bets

9.6.5. Bet Payout (PAYOUT_BETS)

circle-exclamation
circle-exclamation
Figure 21: Credit Payout Bets

9.6.6. Bet Resettle (RESETTLE_BETS)

There are rare instances where certain game providers support “recalculation” for bets. This may occur after an incorrect sports or lottery draw result is reported or due to a punter complaint, etc.

circle-exclamation
circle-exclamation
circle-exclamation
Figure 22: Debit Resettle Bets

Figure 22. Debit Resettle Bets

Figure 23: Credit Resettle Bets

9.7. RICH_CONTENT::Betslip

circle-exclamation

Table 17. content node (Betslip)

Parameter
Type
Description

activityType

BsActivityTyp eEnum

Type of activity that occurred. See BsActivityTypeEnum (see Table 18 below)

activityId

ULID

Id of activity from betslip activities node

betslipId

ULID

Betslip identifier

betslip

Betslip

See Betslip (see Table 19 below)

OneOf:

Table 18. BsActivityTypeEnum

Constant
Description (Part of the method)

PREPARE_PLACE_BETSLIP

All bets, part of the betslip, are placed (initial bet placement) or rolled back. (DEBIT,ROLLBACK)

CONFIRM_PLACE_BETSLIP

Confirms placement of part of the bets and part of the bets are rejected. (CREDIT / return funds of rejected bets). Invoked only in case there are rejected bets.

SETTLE_BETS*

Selected bets are settled. *Part of the Auxiliary API

CASHOUT_BETS

Selected bets are cashed-out (CREDIT)

PAYOUT_BETS

Selected bets are paid out (CREDIT)

CANCEL_BETS

Selected bets are canceled (CREDIT)

RESETTLE_BETS

Bet altered after settlement (DEBIT,CREDIT)

Table 19. Betslip

Parameter
Type
Description

id

ULID

Betslip identifier. (Same value as in content node (Betslip), see Table 17 above)

context

BsContext

Adds fixed metadata for the whole betslip. See BsContext, see Table 20 above

bets

[ BsBet ]

Collection of bets. See Bet Data Type

activities

[ BsActivity ]

Collection of all historical activities that occurred on betslip.

See Bet Activity chapter

See BsActivity (Table 21 below)

origins

object

Used for omnichannel integration scenarios.

punterIdentities

object

Used for omnichannel integration scenarios.

status

object

Debugging value

Table 20. BsContext

Parameter
Type
Description

providerBetslipId

ULID

Betslip identifier in provider system.

providerId

Integer

Game provider identifier.

tenantId

UUID

Unique tenant identifier

gameId

Integer

Unique game identifier.

currency

Currency

Table 21. BsActivity

Parameter
Type
Description

type

BsActivityTyp eEnum

See BsActivityTypeEnum (see Table 18 above)

id

ULID

Unique activity identifier

acceptedBet- Ids

[ ULID ]

Present if type = CONFIRM_PLACE_BETSLIP Ids of bets that have been accepted.

rejectedBet- Ids

[ ULID ]

Present if type = CONFIRM_PLACE_BETSLIP Ids of bets that have been rejected.

payoutBetIds

[ ULID ]

Present if type = PAYOUT_BETS__Ids of bets that have been paid out.

cashoutBet- Ids

[ ULID ]

Present if type = CASHOUT_BETS__Ids of bets that have been cashed-out.

betIds

[ ULID ]

Present if type = RESETTLE_BETS__Ids of bets that have been resettled.

originId

integer

Debugging value

initiatorOccuredAt

Debugging value

startedAt

Debugging value

finishedAt

Debugging value

currentState

string

Debugging value

state

object

Debugging value

Table 22. Bet

Parameter
Type
Description

id

string

Bet identifier

selections

[ Selection ]

List of selections. See Table 23 below

selectedSystems

[ integer ]

bonusWal- lets

[ BonusWallet]

List of possible bonus wallets that can be applied for the bet. See Table 26 below

payin

[ Payin ]

Bet payin. See Table 27 below

pWinnings

PWinnings

Possible winnings after placement.

transactions

object

Wallet transactions that occurred during the bet. Used for debugging.

winnings

Winnings

Bet winnings. See Table 31 below

status

BetStatus

Bet status. See Table 32 below

Table 23. Selection

Parameter
Type
Description

id

string

Selection identifier

phase

enum

Defines one of the 3 phases of each selection,

oneOf:

  • OPEN: Selection is open, outcome is not determined

  • SETTLED: Outcome is determined

  • LIVE: Selection during cashout

event

object

Unique Event identifier

category

object

markets

[ Market ]

Selected markets. Most bets have a single market; multiple markets are reserved for Betbuilder/Custom bet functionalities. See Table 24 below

isBanker

boolean

Is selection a banker?

odds

integer

Odds at bet placement

oddsResolve*

integer

Odds at bet resolve

status*

enum

oneOf:

  • WON

  • LOST

  • VOID

  • HALF_WON

  • HALF_LOST

Table 24. Market

Parameter
Type
Description

id

string

Market identifier.

NOTE: Each game/product has its own market IDs.

baseName

string

Market name in English.

derivedName

string

Market name in the language in which the bet was placed.

tenantName

string

Market name in the main language configured for the tenant.

outcome

Outcome

Market outcome.

Table 25. Outcome

Parameter
Type
Description

id

string

Outcome identifier.

NOTE: Each game/product has its own market IDs.

baseName

string

Outcome name in English.

derivedName

string

Outcome name in the language in which the bet was placed.

tenantName

string

Outcome name in the main language configured for the tenant.

Table 26. BonusWallet

Parameter
Type
Description

id

ULID

Bonus wallet identifier

bonusId

ULID

Bonus promotion identifier

Table 27. Payin

Parameter
Type
Description

stake

Amount

Stake placed by punter. See Amount

bonuses

[ BonusBoost]

See Table 28 below

taxes

[ Tax]

See Table 29 below

total

Amount

Total stake after bonuses & taxes application. See Amount

payment

object

Based on the type property.

  • RealMoneyBetPayment (Table 33 below)

  • GameFreebetBetPayment (Table 34 below)

  • BonusBetPayment (Table 35 below)

  • BonusBetCreditsBetPayment (Table 36 below)

Table 28. BonusBoost

Parameter
Type
Description

id

ULID

Bonus wallet identifier

amount

Amount

Bonus amount. See Amount

Table 29. Tax

Parameter
Type
Description

id

string

Tax identifier

consignee

enum

oneOf:

  • PLAYER: Tax charged to the player.

  • COMPANY: Tax to be paid by the operator.

value

Amount

Tax to be charged. See Amount

Table 30. PWinnings

Parameter
Type
Description

min

Winnings

Min possible winnings. See Table 31 below

max

Winnings

Max possible winnings. See Table 31 below

Table 31. Winnings

Parameter
Type
Description

win

[ Amount]

Winning amount. See Amount

bonuses

[ BonusBoost]

See Table 28 above

taxes

[ Tax]

See Table 29 above

total

[ Amount]

Total winnings after bonuses & taxes application. See Amount.

Table 32. BetStatus

Parameter
Type
Description

phase

enum

oneOf:

  • STARTED

  • PLACED

  • REJECTED

  • CANCELLED

  • SETTLED

  • PAID_OUT

  • CASHED_OUT

resolution- Status

enum

oneOf:

  • OPEN

  • WON

  • LOST

Table 33. RealMoneyBetPayment

Parameter
Type
Description

type

enum

oneOf:

  • REAL

distribution

enum

oneOf:

  • BET

  • COMBINATION

amount

Real money bet payment amount

Table 34. GameFreebetBetPayment

Parameter
Type
Description

type

enum

oneOf:

  • GAME_FREE_BET

id

string

Game freebet identifier.

amount

Game freebet amount.

Table 35. BonusBetPayment

Parameter
Type
Description

type

enum

oneOf:

  • BONUS_BET

wallet

BonusBetWallet

Bonus bet wallet object.

amount

Bonus bet amount.

Table 36. BonusBetCreditsPayment

Parameter
Type
Description

type

enum

oneOf:

  • BONUS_BET_CREDITS

wallet

[BonusBet-Wallet]

Collection of bonus bbet credits wallets

amount

Bonus bet amount.

Table 37. BonusBetWallet

Parameter
Type
Description

id

string

Bonus bet wallet identifier. Ulid type.

bonusid

string

Bonus bet bonus identifier. Ulid type.

10. Casino RICH_CONTENT integration

circle-exclamation

Casino content consists of “transactions” that represent users “spins” or any other mechanic of various casino games.

Figure 24: Simplified Sequence Diagram

Casino transactions are separated into "In Session" transactions that occur during gameplay, and "Out of Session" transactions that happen after the playing session (round) has been completed. For “In Session” transactions, punter tokens and round data will be available, whereas for "Out of Session" transactions, there is no such information.

Figure 25: In and Out of Session Transactions

10.1. RICH_CONTENT::Casino

Table 38. content node (Casino)

Parameter
Type
Description

type

CsnTransacti onTypeEnum

Type of activity that occurred. See CsnTransactionTypeEnum (Table 39 below)

transaction

object

Based on the type property.

BET -> CasinoBetTransaction (Table 40 below)

WIN -> CasinoWinTransaction (Table 41 below)

BATCH -> CasinoBatchTransaction (Table 43 below)

JACKPOT_WIN -> CasinoJackpotWinTransaction (Table 44 below)

BET_ROLLBACK -> CasinoBetTransaction (Table 40 below)

WIN_ROLLBACK -> CasinoWinTransaction (Table 41 below)

PROMO_WIN -> CasinoPromoWinTransaction (Table 42 below)

ADJUST -> CasinoAdjustTransaction (Table 45 below)

OneOf:

Table 39. CsnTransactionTypeEnum

Constant
Description (Part of the method)

BET

Bet transaction (DEBIT)

WIN

Win transaction (CREDIT)

BATCH

Batch of multiple BET and/or WIN transactions (DEBIT,CREDIT)

JACKPOT_WIN

Jackpot Win transaction (CREDIT)

BET_ROLLBACK

Rollback of Bet transaction (CREDIT)

WIN_ROLLBACK

Rollback of Win transaction (DEBIT)

PROMO_WIN

Promo Win transaction (CREDIT)

ADJUST

Adjustment transaction (DEBIT,CREDIT)

Table 40. CasinoBetTransaction

Parameter
Type
Description

id

string

Provider’s transaction identifier

platformId

ULID

Unique platform transaction identifier (across all content)

round

CasinoTxRound

Round details. See CasinoTxRound (Table 46 below)

tenantId

UUID

Tenant identifier agreed on integration start

punterId

ULID

Punter’s unique identifier in the operator’s system

game

CasinoTxRound

Game details. See CasinoTxRound (Table 46 below)

type

oneOf:

  • REGULAR_BET: Bet placed using wallet funds during regular gameplay.

  • FREE_ROUND_BET: Bet placed as a free spin/free bet. Will not deduct any real money funds.

  • BONUS_ROUND_BET: Bet placed using wallet funds during bonus round gameplay.

  • BONUS_BUY: Wallet funds used to buy bonus round bets

jackpotContributions

[ CasinoTxJpc ]

Collection of Jackpot contributions.

See CasinoTxJpc (Table 48 below)

bonus

CasinoTxBonus

Bonus info.

See CasinoTxBonus (Table 49 below)

amount

Amount

Amount that should be deducted from the user’s wallet.

See Amount

absolute- Amount

Amount

In cases of free bets, absoluteAmount can contain the value of the free bet, while amount value stays zero (0). See Amount

currency

Currency

promo*

CasinoTxPromo

Promo information

vendorData*

string

Raw transaction data for casino vendor.

creationActivity

object

Debugging value

createdAt

Debugging value

updatedAt

Debugging value

Table 41. CasinoWinTransaction

Parameter
Type
Description

id

string

Provider’s transaction identifier

platformId

ULID

Unique platform transaction identifier (across all content)

round

CasinoTxRound

Round details. See CasinoTxRound (Table 46 below)

tenantId

UUID

Tenant identifier agreed on integration start

punterId

ULID

Punter’s unique identifier in the operator’s system

game

CasinoTxRound

Game details. See CasinoTxRound (Table 46 below)

type

oneOf:

REGULAR_WIN: Win as a result of a regular bet. FREE_ROUND_WIN: Win as a result of a free round, free spin. BONUS_ROUND_WIN: Win as a result of a bonus round.

bonus

CasinoTxBon us

Bonus info. See CasinoTxBonus (Table 49 below)

amount

Amount

Amount. See Amount

currency

Currency

promo*

CasinoTxPromo

Promo information

vendorData*

string

Raw transaction data for casino vendor.

creationActivity

object

Debugging value

createdAt

Debugging value

updatedAt

Debugging value

Table 42. CasinoPromoWinTransaction

Parameter
Type
Description

id

string

Provider’s transaction identifier

platformId

ULID

Unique platform transaction identifier (across all content)

tenantId

UUID

Tenant identifier agreed on integration start

punterId

ULID

Punter’s unique identifier in the operator’s system

game

CasinoTxRound

Game details.

See CasinoTxRound (Table 46 below)

amount

Amount

Amount. See Amount

currency

Currency

promo

CasinoTxPromo

Promo information

creationActivity

object

Debugging value

vendorData*

string

Raw transaction data for casino vendor.

createdAt

Debugging value

updatedAt

Debugging value

Table 43. CasinoBatchTransaction

Parameter
Type
Description

id

string

Provider’s transaction identifier

platformId

ULID

Unique platform transaction identifier (across all content)

tenantId

UUID

Tenant identifier agreed on integration start

punterId

ULID

Punter’s unique identifier in the operator’s system

amount

Amount

Calculated amount to debit or credit. See Amount

currency

Currency

bets

[ CasinoBetInBatch ]

Collection of bet transactions

wins

[ CasinoWinInBatch ]

Collection of win transactions

vendorData*

string

Raw transaction data for casino vendor.

creationActivity

object

Debugging value

createdAt

Debugging value

updatedAt

Debugging value

Table 44. CasinoJackpotWinTransaction

Parameter
Type
Description

id

string

Provider’s transaction identifier

platformId

ULID

Unique platform transaction identifier (across all content)

round

CasinoTxRound

Round details. See CasinoTxRound (Table 46 below)

tenantId

UUID

Tenant identifier agreed on integration start

punterId

ULID

Punter’s unique identifier in the operator’s system

game

CasinoTxRound

Game details. See CasinoTxRound (Table 46 below)

jackpotId

string

Unique jackpot identifier in the game provider system.

amount

Amount

Amount. See Amount

currency

Currency

vendorData*

object

Raw transaction data for casino vendor.

creationActivity

object

Debugging value

createdAt

Debugging value

updatedAt

Debugging value

Table 45. CasinoAdjustTransaction

Parameter
Type
Description

id

string

Provider’s transaction identifier

platformId

ULID

Unique platform transaction identifier (across all content)

round

CasinoTxRound

Round details. See CasinoTxRound (Table 46 below)

tenantId

UUID

Tenant identifier agreed on integration start

punterId

ULID

Punter’s unique identifier in the operator’s system

game

CasinoTxGame

Game details. See CasinoTxGame (Table 47 below)

reason

  • TIP_THE_DEALER

  • GAME_LOGIC_ERROR

amount

Amount

Amount. See Amount

currency

Currency

vendorData*

object

Raw transaction data for casino vendor.

creationActivity

object

Debugging value

createdAt

Debugging value

updatedAt

Debugging value

Table 46. CasinoTxRound

Parameter
Type
Description

id

string

Provider’s transaction identifier

platformId

ULID

Unique platform round identifier (across all content)

status

enum

oneOf:

  • OPEN: Round is open and subsequent transactions can be expected

  • CLOSED: Round is closed

Table 47. CasinoTxGame

Parameter
Type
Description

id

string

Provider’s transaction identifier

platformId

integer

Unique platform game identifier (across all content)

code

string

Provider’s game code

platformCode

string

Provider’s code

Table 48. CasinoTxJpc

Parameter
Type
Description

id

string

Unique jackpot identifier in game provider system.

name

string

Unique jackpot name in game provider system.

amount

string

Jackpot contribution amount. 10 decimals, in “cents”.

Table 49. CasinoTxBonus

Parameter
Type
Description

id

string

Provider’s bonus identifier

platformId*

integer

Unique platform bonus identifier (across all content)

Table 50. CasinoTxPromoWin

Parameter
Type
Description

type

enum

Type of promotional campaign. One of:

  • TOURNAMENT

  • BONUS_AWARD

campaignId

string

The unique promo campaign identifier.

reference

string

Unique promo win reference in game provider system.

winAmount

Amount

Amount of the prize. See Amount

Table 51. CasinoTxPromoBet

Parameter
Type
Description

type

enum

Type of promotional campaign. One of:

  • FREE_ROUND

campaignId

string

The unique promo campaign identifier.

reference

string

Unique promo win reference in game provider system.

betAmount

Amount

Amount of the prize. See Amount

freeRounds-Left*

integer

Number of free rounds left in promotion.

freeRounds-Assigned*

integer

Number of free rounds assigned in promotion.

  • Optional

Table 52. CasinoBetInBatch

Parameter
Type
Description

id

string

Provider’s transaction identifier.

platformId

ULID

Unique platform transaction identifier (across all content).

round

CasinoTxRound

Round details. See CasinoTxRound (Table 46 above)

game

CasinoTxGame

Game details. See CasinoTxGame (Table 47 above)

type

oneOf:

  • REGULAR_BET: Bet placed using wallet funds during regular gameplay.

  • FREE_ROUND_BET: Bet placed as free spin/free bet. Will not deduct any real money funds.

  • BONUS_ROUND_BET: Bet placed using wallet funds during bonus round gameplay.

  • BONUS_BUY: Wallet funds used to buy bonus round bets_

jackpotContributions

CasinoTxJpc

Collection of Jackpot contributions. See CasinoTxJpc (Table 48 above)

bonus

CasinoTxBonus

Bonus info. See CasinoTxBonus (Table 49 above)

amount

Amount

Raw bet amount. See Amount

absolute- Amount

Amount

In cases of free bets, absoluteAmount can contain the value of the free bet, while amount value stays zero (0) See Amount

vendorData*

string

Raw transaction data for casino vendor.

Table 53. CasinoWinInBatch

Parameter
Type
Description

id

string

Provider’s transaction identifier.

platformId

ULID

Unique platform transaction identifier (across all content).

round

CasinoTxRound

Round details. See CasinoTxRound (Table 46 above)

game

CasinoTxGame

Game details. See CasinoTxGame (Table 47 above)

type

oneOf:

  • REGULAR_WIN: Win as a result of a regular bet.

  • FREE_ROUND_WIN: Win as a result of a free round, free spin.

  • BONUS_ROUND_WIN: Win as a result of a bonus round.

bonus

CasinoTxBonus

Bonus info. See CasinoTxBonus (Table 49 above)

amount

Amount

Amount. See Amount

promo*

CasinoTxPromo

Promo information.

vendorData*

string

Raw transaction data for casino vendor.

11. Transfer Wallet Integration

circle-exclamation
circle-exclamation

11.1. Fetch Wallets (GET)

Used to check the status of the wallet transfer. Initiated by the Operators system.

Table 54. Path Parameters

Parameter
Type
Description

tenantId

UUID

Tenant identifier agreed on integration start

punterExternalId

string(100)

Punter identifier in operator’s system

Table 55. FetchWalletsResponse

Parameter
Type
Description

id

ULID

Wallet id

balance

Amount

Transfer amount. See Amount

currency

Currency

punterExternalId

string(100)

Punter identifier in operator’s system

11.2. Wallet Transfer (POST)

Used to transfer funds between systems. Initiated by the Operators system.

Table 56. Path Parameters

Parameter
Type
Description

tenantId

UUID

Tenant identifier agreed on integration start

Table 57. WalletTransferRequest

Parameter
Type
Description

id

ULID

Transfer identifier generated by integrator

punterExternalId

string(100)

Punter identifier in operator’s system

amount

Amount

Transfer amount. See Amount

currency

Currency

transferType

enum

oneOf:

  • DEPOSIT

  • WITHDRAW

Table 58. WalletTransferResponse

Parameter
Type
Description

id

ULID

Transfer identifier generated by integrator

punterExternalId

string(100)

Punter identifier in operator’s system

amount

Amount

Transfer amount. See Amount

currency

Currency

transferType

enum

oneOf:

  • DEPOSIT

  • WITHDRAW

walletId

ULID

Wallet identifier

11.3. Check Wallet Transfer (GET)

Used to check the status of the wallet transfer. Initiated by the Operators system.

Table 59. Path Parameters

Parameter
Type
Description

tenantId

UUID

Tenant identifier agreed on integration start

transferId

UUID

Transfer identifier generated by integrator

Table 60. CheckWalletTransferResponse

Parameter
Type
Description

id

ULID

Transfer identifier generated by integrator

punterExternalId

string(100)

Punter identifier in operator’s system

amount

Amount

Transfer amount. See Amount

currency

Currency

transferType

enum

oneOf:

  • DEPOSIT

  • WITHDRAW

walletid

ULID

Wallet identifier

12. Common Data Types

IP

String in the form of IPv4 or IPv6.

Amount

Monetary amounts are sent as strings and rounded based on the rules defined by each currency.

E.g., EUR 3.3311 will be sent as “3.33”.

Currency

Fiat: ISO 4217 Alpha-3 currency code.

Table 61. Cryptocurrencies

Currency
Code
Fraction digits

miliBitcoin

xmBTC

6

Tether

xUSDT

6

Bitcoin

xBTC

8

Ethereum

xETH

8

XRP

xXRP

6

Tron

xTRX

6

Litecoin

xLTC

8

Solana

xSOL

6

USD Coin

xUSDC

6

Binance Coin

xBNC

8

TON

xTON

6

DOGE

xDOGE

6

BNB

xBNB

8

DAI

xDAI

6

SHIB

xSHIB

6

PEPE

xPEPE

6

BONK

xBONK

6

MOG

xMOG

6

FARTCOIN

xFARTCOIN

6

TRUMP

xTRUMP

6

AVAX

xAVAX

6

HYPE

xHYPE

6

DateTime

ISO 8601 date and time in UTC, e.g., 2024-03-11T11:39:20.596Z

OneOf:

Table 62. RsStatus

Constant
Description (Part of the method)

OK

Request is successful

INSUFFICIENT_FUNDS*

Action failed due to insufficient funds.

RISK_VALIDATION

Action failed due to operator risk validation.

INVALID_SESSION

Invalid punter session.

PUNTER_SUSPENDED

Punter suspended from bet placement.

ACCOUNT_RESTRICTION_LIMIT_REACHED

Punter reached daily wagering limits.

INTERNAL_ERROR

Reserved for errors that cannot be matched with statuses above.

DEBIT_REJECTED

Debit rejected for reason cannot be matched with statuses above.

Table 63. Punter

Parameter
Type
Description

id

ULID

Unique punter identifier in iGNITE system

externalId

string(100)

Punter identifier in operator’s system

sessionToken*

string(1000)

Session identifier in operator’s system (if applicable)

Table 64. Wallet

Parameter
Type
Description

id

string(100)

Wallet identifier. If not available in the Operator system any random string value should be set

type

enum

oneOf:

  • REAL: Holds real money funds

  • BONUS: Holds bonus money or other bonus funds

balance

Amount

Remaining balance. See Amount

currency

Currency

version

Integer

Balance version. If not available, set a UNIX timestamp of when the request is generated. Value is used to handle race conditions between frontend and backend passed balances

options*

string(1000)

Node reserved for special bonus scenarios

Table 65. GameInfo

Parameter
Type
Description

gameId

Integer

Unique Game identifier defined at integration start.

13. Examples (Betslip)

Examples of requests to be received by the operator platform in case of betslip contentType

chevron-right[Sportsbook] Bet {One Selection} (Debit)hashtag
chevron-right[Sportsbook] System bet with bankers (Debit)hashtag
chevron-right[Sportsbook] Cashout {One Selection} (Credit)hashtag
chevron-right[Sportsbook] Cashout {Single Bet Cashout in Multi Bet} (Credit)hashtag
chevron-rightRollbackhashtag

14. Examples (Casino)

Examples of requests to be received by the operator platform in case of casino contentType

chevron-rightBET (Debit)hashtag
chevron-rightWIN (Credit)hashtag
chevron-rightBATCH (Debit or Credit)hashtag
chevron-rightBET_ROLLBACK (Credit)hashtag
chevron-rightWIN_ROLLBACK (Debit)hashtag
chevron-rightRollbackhashtag

Last updated

Was this helpful?