Overview
This document serves as a guide to integration of direct partners.
Definitions
Partner
A partner is responsible for supplying the provider with players and managing their wallet accounts. Casinos act as partners.
Provider
A provider supplies virtual space for betting activities. Winfinity acts as a provider.
Player
A player is a user who has a gaming account with a partner. Each user has a unique ID uid.
Game
The term ‘game’ refers to what is traditionally known as a ‘round’. Each table hosts multiple games during its active hours. Each game has a unique game ID gid. All players participate in the same round with the identical game identifier gid if they are playing at the same table simultaneously.
Table
A table is a physical setup with gaming equipment on which games are played.
Transactions
Financial transactions include payment transactions. Each of them has a transaction ID tid.
There are three types of transactions available: PayIn, PayOut, and Refund.
PayIn A payin represents a payment transaction where money is deducted from a player’s account for betting purposes. It is considered a betting or debit operation.
PayOut
A payout transaction credits an amount of money to a player’s account, signifying the settlement of a bet. It is considered a credit operation. A payout is always associated with a specific payin transaction, and the reference/associated ID refid equals to the payin tid.
Refund
Refund is the cancellation of a specific payin. The refund tid corresponds to the payin tid.
Promo PayOut
Promotional bonus payout in case a player has won a reward. A promo payout is always associated with a specific payin transaction, and the reference/associated ID refid equals to the payin tid.
Master session
The master session msid is a global session within our system, and it is associated with the user id uid and the selected currency cur.
Table session
The table session sid tracks the activity of a master session ID msid within a specific table tbid.
Termination
The terminate or terminateAll command manually calls the master session msid to expire.
The following notification is displayed: “The session has expired, operations on it are no longer accepted.”
Interaction manual
Partner registration
To register a partner with Winifnity Web BackOffice, contact our account manager with the info on:
- partner name;
- site name;
- the callback URL for your site, which is the endpoint where Winfinity will send requests for transactions such as payins and payouts;
- provide currency rates (external URL or doc for your own currency source API);
Once your site is registered with Winfinity, you will receive a pair of credentials:
- client_id and
- client_secret.
You need this pair to get the authorization token.
Both terms, client_id and site_id, are used interchangeably.
General
- The partner initiates the startMasterSession method via the Winfinity API and receives an iFrame URL along with a master session ID.
- The partner then redirects the player to the provided iFrame URL or embeds this URL within their own iFrame.
- When a player joins a table, Winfinity generates a session ID and forwards it to the partner.
Subsequently, Winfinity utilizes table session
sidand master sessionmsidIDs to interact with the partner for conducting monetary transactions, retrieving user information, and other necessary actions. - Once the game starts, the user is able to place bets. For additional information, please refer to the Interaction Manual.
- Partners may notify Winfinity of changes to users’ balances using the changeUserBalance method within the Winfinity API.
Sessions
Our system utilizes two types of sessions:
- master session
msid - table sessions
sid
Master session specifics
Master session relationship
erDiagram
USER ||--o{ MASTER_SESSION : has
USER {
string uid
string user_name
}
MASTER_SESSION {
string msid
string uid
string cur
}
Master session lifecycle
sequenceDiagram rect rgb(0, 0, 0) Player ->>+ Partner: select Winfinity Partner->>+Winfinity: start master session
uid, cur Winfinity-->>- Partner: frameUrl, msid Partner-->>- Player: open Winifinity frameUrl end opt join a table Player-->Winfinity : join a table, play game (see in table session section) end rect rgb(0, 0, 0) note right of Winfinity: All table sessions have already expired
No actions in the lobby for some time par logout player Winfinity-->> Player: redirect to partner page and master session expired Winfinity-->> Partner: master session expired
com=6, msid, uid end end
Master session generation
flowchart TD
startMasterSession([Winfinity recieves a start master session request])
startMasterSession -- startMasterSession with uid and cur -->
if_msid_exist{if msid exists for
uid and currency
and msid has not expired}
if_msid_exist -- no --> generateNew
generateNew(generate new msid)
if_msid_exist -- yes, msid already exists --> existing
existing(return existing msid)
generateNew -- new msid --> response
existing -- existing msid --> response
response([send response to partner])
This global session is linked to a user’s ID (uid) and their chosen currency (cur). A new msid is assigned for each unique uid and cur combination or when an existing msid expires.
Table session specifics
Session relationship
erDiagram
USER ||--o{ MASTER_SESSION : has
USER {
string uid
string user_name
}
MASTER_SESSION ||--o{ SESSION : has
MASTER_SESSION {
string msid
string uid
string cur
}
SESSION {
string sid
string msid
string tbid
}
Session lifecycle
sequenceDiagram Player-->Partner: select Winifinity
(see in master session section) rect rgb(0, 0, 0) Player->>+Winfinity: join a table Winfinity->>+Partner: start game session
com=7, sid, msid, tbid, uid alt succees Partner-->>-Winfinity: 200 ok Winfinity-->>- Player: open table rect rgb(30, 34, 36) loop game Player-->Winfinity: play game
see in game flow section end end note right of Winfinity: No actions at selected table
for some time par logout to lobby Winfinity-->> Player: redirect to lobby page and session expired Winfinity-->> Partner: session expired
com=4, sid, msid, uid end else create session failed Partner-->>Winfinity: error activate Winfinity Winfinity-->> Player: redirect to the lobby page deactivate Winfinity end end
Table session generation
flowchart TD
joinTable([player joins a table])
joinTable -- msid, tbid -->
if_sid_exist{if sid exists for
msid and tbid
and sid not expired}
if_sid_exist -- no --> generateNew
generateNew(generate new sid) -- msid, uid, tbid, new sid -->
send(send com=7 to partner)
if_sid_exist -- yes, load table tbid for existing sid --> showTable
send -- show table tbid for new sid --> showTable
showTable([show the table to the player])
This specialized session monitors master session’s (msid) activities within a specific table (tbid).
A unique sid is generated when a player first joins a table. This sid remains consistent for the player for all subsequent games at the same table, provided it has not expired.
Parameter sid can be disabled on Winfinity side by reaching out to Winfinity team, meaning that Table Session Registration (com=7) and Table Session Expiration (com=4) notifications will not be sent out.
Without the sid parameter in request you can rely on master session and table identifiers, getting rid of table sessions completely.
Notes
Commands from Winfinity always include the msid.
Should the integration of table sessions (sid) be unnecessary or challenging, partners may opt to omit the ‘Expire Table Session’ command (com=4) and disregard the sid in commands.
Game flow
sequenceDiagram Player-->Partner: select Winifinity
(see in master session section) opt join table Player-->Winfinity: join a table
(see in table session section) rect rgb(0, 0, 0) loop for each round, until session is expired or table is closed loop place bets note over Winfinity, Player: Attention: it is a loop section, because multiple pay ins are available Winfinity--> Player: betting phase end loop for each successful bet note over Winfinity, Player: Attention: it is a loop section, because multiple pay outs are available Winfinity--> Player: deсision phase end Winfinity--> Player: finish phase end end end
A game is divided into three phases:
- betting
- decision
- finish
Betting phase
sequenceDiagram Player-->Partner: select Winifinity
(see in master session section) opt join table Player-->Winfinity: join a table
(see in table session section) loop for each round, until session expired or table closed Winfinity-->> Player: game started activate Player rect rgb(0, 0, 0) loop place bets Player->>+Winfinity: place bets Winfinity->>+Partner: payin
com=1, sid, msid, tbid, uid, cur ... alt succeed Partner-->>-Winfinity: ok Winfinity-->>-Player: bet accepted else payin failed Partner-->>Winfinity: error activate Winfinity Winfinity-->>Player: bet rejected deactivate Winfinity else Winfinity didn't recieve response in time Partner--x+ Winfinity: timeout Winfinity-->>-Player: bet rejected loop retry refund untill successful or retry count is over Winfinity->>+Partner: cancelled
com=3, sid, msid, tbid, uid, cur ... Partner-->>-Winfinity: response end % loop refund end end % place bet loop end loop for each successful bet Winfinity--> Player: desision phase end Winfinity--> Player: finish phase end end
Once a game has started, players can place bets. During the betting phase, Winfinity can send payins com=1. It is possible for multiple payins to be sent for the same player in the same game.
If we do not receive a response or receive a timeout response during the betting phase, we initiate refund requests com=3 for these payins.
The refund message contains a transaction id tid, which matches the tid of the payin that needs to be canceled.
Winfinity will keep retrying the refund process until it succeeds. Refund success refers to any received response, excluding timeouts or 5xx status codes.
Decision phase
sequenceDiagram Player-->Partner: select Winifinity
(see in master session section) opt join table Player-->Winfinity: join a table
(see in table session section) loop for each round, until session expired or table closed Winfinity-->> Player: game started activate Player loop place bets Player-->Winfinity: place bets
see previos chapter end % loop place bets rect rgb(0, 0, 0) loop for each successful bet opt if bet wins par notify player about win Winfinity-->> Player: win deactivate Player activate Winfinity and send payout to partner Winfinity->>+Partner: payout
com=2, sid, msid, tbid, uid, cur ... alt payout succeed Partner-->>-Winfinity: 200 ok else error Partner-->> Winfinity: error else timeout Partner--x Winfinity: timeout loop retry payout until any response is received, except timeout or retry count exceeded Winfinity->>+Partner: payout
com=2, sid, msid, tbid, uid, cur ... Partner-->>-Winfinity: response end %loop retry payout end %payout state end %par win end %opt win end %bets end Winfinity--> Player: finish phase end %games end
If a player has accepted payins and some of their bets win in the game, Winfinity will send payout requests com=2 for these winning bets. Each payout message contains a reference to the corresponding payin in the refid field. This allows us to precisely identify which bets have resulted in a win. Even if some bets were previously canceled for this player during the game, we can always process payouts for the successful bets.
In case we encounter a timeout while processing payouts, we will make repeated attempts to perform the same payout until it succeeds. Payout success refers to any received response, excluding timeouts or 5xx status codes.
Finish phase
sequenceDiagram Player-->Partner: select Winifinity
(see in master session sectio) opt join table Player-->Winfinity: join a table
(see in table session section) loop for each round, until session expired or table closed Winfinity-->> Player: game started activate Player loop place bets Player-->>Winfinity: place bets (see previous chapter) activate Winfinity end % place bets loop for each successful bet Winfinity-->> Player: decision phase (see previous chapter) end % decision phase rect rgb(0, 0, 0) par notify player about game finishing Winfinity-->> Player: game finished deactivate Player and send finish to partner
in case the Zero Win message is not enabled Winfinity->>+Partner: finish
com=8, sid, msid, tbid, uid, cur ... Partner-->>-Winfinity: 200 ok deactivate Winfinity end %finish phase end end %games end %take table
When a player places bets in a game, regardless of whether they are accepted or not, we will send a ‘finish’ message com=8 for that player.
This finish message is sent only after we have received responses for all payment transactions (payin, payout, refund), including any retries for payouts or refunds.
Therefore, the finish message indicates that all operations for a specific player will conclude during the round in which the player participated.
Alternatively, a Zero Win message can be sent instead. These two approaches signify the end of all operations and are mutually exclusive.
Game scenarios
Let’s define a user uid=u1, with currency cur=eur, who has a master session msid=m1, plays at table tbid=tb1, with game type gtp=gtp1, and session sid=s1.
All payment commands will contain:
msid = m1
sid = s1
tbid = tb1
gtp = gtp1
uid = u1
cur = eur
Game 1: all bets accepted, there are no winning bets
sequenceDiagram loop Player-->>+Winfinity: place bet end note right of Winfinity: Bets were split into two payins Winfinity -->> Partner: com: 1, tid: 1 activate Partner Winfinity -->> Partner: com: 1, tid: 2 activate Partner Partner -->> Winfinity: 200 deactivate Partner Partner -->> Winfinity: 200 deactivate Partner Winfinity -->>- Player: bets accepted Winfinity -->> Player: there are no wins Winfinity -->> Partner: com: 8
The player places their first bets, which will be split into two payments:
-
Winfinity sends the first payin to partner:
com= 1
gid= 1
tid= 1
timestamp= 1
{common part, see above} -
Winfinity sends the second payin to partner:
com= 1
gid= 1
tid= 2
timestamp= 2
{common part} -
As there are no wins, Winfinity sends a finish round command:
com= 8
gid= 1
timestamp= 3
{common part}
Game 2: one timeout, there are no winning bets
sequenceDiagram loop Player-->>+Winfinity: place bet end note right of Winfinity: Bets were split into two payins Winfinity -->> Partner: com: 1, tid: 3 activate Partner Winfinity -->> Partner: com: 1, tid: 4 activate Partner Partner -->> Winfinity: 200 note right of Winfinity: Time for waiting for a response
from partner is finished Winfinity -->>- Player: some bets are accepted
some bets are rejected deactivate Partner Winfinity -->> Player: there are no wins Partner --x Winfinity: there could be any response
500, 200, 400
it doesn't matter, because desision phase is finished deactivate Partner activate Winfinity Winfinity -->>+ Partner: com: 3, tid: 3 Partner -->>- Winfinity: 200 deactivate Winfinity Winfinity -->> Partner: com: 8
The player places their first bets, which will be split into two payments:
-
Winfinity sends a first payin to partner:
com= 1
gid= 2
tid= 3
timestamp= 4
{common part} -
Winfinity sends a second payin to partner:
com= 1
gid= 2
tid= 4
timestamp= 5
{common part} -
There is no response from partner for the first payment in this game, so Winfinity sends a refund command:
com= 3
gid= 2
tid= 3 (tidof the first payin, because it is not a new transaction, it is a cancellation of the existing one)
refid= 3 (tidof the first payin)
{common part} -
Finish Round command will only be sent after payment and refund commands:
com= 8
gid= 2
timestamp= 7
{common part}
Game 3: two bets, first bet wins
sequenceDiagram loop Player-->>+Winfinity: place bet end note right of Winfinity: Bets were split into two payins Winfinity -->> Partner: com: 1, tid: 5 activate Partner Winfinity -->> Partner: com: 1, tid: 6 activate Partner Partner -->> Winfinity: 200 Partner -->> Winfinity: 200 deactivate Partner Winfinity -->>- Player: bets accepted Winfinity -->> Player: win Winfinity -->>+ Partner: com: 2, tid: 7, refid: 6 Partner -->>- Winfinity: 200 Winfinity -->> Partner: com: 8
The player places their first bets, which will be split into two payments:
-
Winfinity sends a first payin to partner:
com= 1
gid= 3
tid= 5
timestamp= 8
{common part} -
Winfinity sends a second payin to partner:
com= 1
gid= 3
tid= 6
timestamp= 9
{common part} -
There are no refunds, first bet wins, so Winfinity sends a payout command:
com= 2
gid= 3
tid= 7 new tid for a payout command
timestamp= 10
refid= 5 tid of the first payment
{common part} -
Finish Round command will only be sent after payment commands:
com= 8
gid= 3
timestamp= 11
{common part}
Game 4: two bets, one refund, one win
sequenceDiagram loop Player-->>Winfinity: place bet activate Winfinity end note right of Winfinity: Bets were split into two payins Winfinity -->> Partner: com: 1, tid: 8 activate Partner Winfinity -->> Partner: com: 1, tid: 9 activate Partner Partner -->> Winfinity: 200 deactivate Partner Winfinity -->> Player: some bets are accepted
some bets are rejected deactivate Winfinity Partner --x Winfinity: there could be any response
500, 200, 400
it doesn't matter, because the decision phase is finished deactivate Partner activate Winfinity par Winfinity -->>+ Partner: com: 3, tid: 8 Partner -->>- Winfinity: 200 deactivate Winfinity and Winfinity -->> Player: you win and Winfinity -->>+ Partner: com: 2, tid: 10, refid: 9 Partner -->>- Winfinity: 200 end Winfinity -->> Partner: com: 8
The player places their first bets, which will be split into two payments:
-
Winfinity sends the first payin to partner:
com= 1
gid= 4
tid= 8
timestamp= 11
{common part} -
Winfinity sends the second payin to partner:
com= 1
gid= 4
tid= 9
timestamp= 12
{common part} -
There is no response for the first payin, so Winfinity refunds it:
com= 3
gid= 4
tid= 8 same as the second payin tid, which should be refunded
refid= 8 same as payin tid
{common part} -
Winfinity sends a payout command for the second payin:
com= 2
gid= 4
tid= 10 new tid, because it is a new payment
timestamp= 14
refid= 9 same as the first payin tid, because the first bet won
{common part} -
Finish Round command will only be sent after payment and refund commands:
com= 8
gid= 4
timestamp= 15
{common part}
Winfinity API
General info
- We support RESTful protocol with lightweight JSON-formatted requests and responses;
- Requests and responses contain the headers
Content-Type: application/json;Accept: application/json.;
- Requests are made via HTTP POST method;
- Communication happens over HTTPS to ensure security and privacy. Unencrypted HTTP is not supported;
- Supporting HTTP status codes: 2xx, 4xx, 5xx;
Obtain access token
After partner registration you obtain client_id and client_secret.
You need these parameters to obtain an access token.
Request
Request example
curl --location '{{gw_api_url}}/connect/token' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{
"grant_type": "client_credentials",
"client_id": "630f3428de590a4b876cfc41",
"client_secret": "c680aeba-9173-46bc-979b-b218244fbdfc",
"scope": [
"partner_client.call"
]
}'
| Parameter | Type | Description |
|---|---|---|
| client_id | string | client_id you obtain after partner registration |
| client_secret | string | client_secret you obtain after partner registration |
| scope | string[] | ["partner_client.call"] |
| grant_type | string | client_credentials |
Method: POST
Successful response
Successful response example
HTTP status code 200
{
"access_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjhFM0Y5QjBGODI4NTdCMjAwNTIxNjUwNDAzNzIyOEI0QTYxMjJFRjNSUzI1NiIsInR5cCI6ImF0K2p3dCIsIng1dCI6ImpqLWJENEtGZXlBRklXVUVBM0lvdEtZU0x2TSJ9.eyJuYmYiOjE2OTk5MDk2NTgsImV4cCI6MTY5OTkxMzI1OCwiaXNzIjoiaHR0cDovL3Bhc3Nwb3J0IiwiYXVkIjoiYmFja29mZmljZV9hcGkiLCJjbGllbnRfaWQiOiJwb3N0bWFuX2NsaWVudCIsImNsaWVudF9yb2xlIjoicG9zdG1hbiIsImp0aSI6IkExMjc3MTBFOUM5MUIzRUEzQUQxMEYzREE1QjFGOTEyIiwiaWF0IjoxNjk5OTA5NjU4LCJzY29wZSI6WyJiYWNrb2ZmaWNlX2FwaS5jYWxsIl19.gtH9v6AWjPdTldIRy78wXz_aXqMhWCG8PmFip77lDPh23AQVZwMmIgw8yHiNSMNQlsnwt67F49YJtjPdPI9JlYYphQpdf_KPeIMjEp5F0JNjJkBCZrw74l55kxC6sXuXUp11dmR8iQEt4SHJzFWlVluay3q8UxiA5v2BciOx8vyYPzRJX8IexRE0OabLv1yQSQ_ML_XFhtFOH6bQ6ARp1IYfEHMLZCjjPsZ9lcyW2IrQ5_E_2AmklHX-dWJuAaK6MQ2PUizt1vIf4BPI39xXuajqubCxABI31iNMLZwY6YtiEcFWyUjveZ3uWk88U5m_Wc6A329iseeDikze32XlFg",
"expires_in": 3600,
"token_type": "Bearer",
"scope": "partner_client.call"
}
| Parameter | Type | Description |
|---|---|---|
| access_token | string | you need to use it in every response to Winfinity Authorization: Bearer {{access_token}} |
| expires_in | long | after this time your access_token will be invalid |
| token_type | string | token type in Authorization header |
| scope | string | same as you requested partner_client.call |
Failed response
There could be 4xx, 5xx HTTP status codes
Fail response example
HTTP status code 400
"{\"error\":\"invalid_client\"}"
Obtain available tables
Returns a list of tables available for users from the partner’s site. These tables will be shown from our lobby with a possibility to display them on the partner’s site.
Explicitly defined currency limits are returned by default. If you need other currencies, use the optional currencies param in the query.
Request
Request example
curl --location 'https://{{gw_api_url}}/partners/tables?partnerSiteId=630f3428de590a4b876cfc41¤cies=USD¤cies=VND' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjhFM0Y5QjBGODI4NTdCMjAwNTIxNjUwNDAzNzIyOEI0QTYxMjJFRjNSUzI1NiIsInR5cCI6ImF0K2p3dCIsIng1dCI6ImpqLWJENEtGZXlBRklXVUVBM0lvdEtZU0x2TSJ9.eyJuYmYiOjE2OTk5MDk2NTgsImV4cCI6MTY5OTkxMzI1OCwiaXNzIjoiaHR0cDovL3Bhc3Nwb3J0IiwiYXVkIjoiYmFja29mZmljZV9hcGkiLCJjbGllbnRfaWQiOiJwb3N0bWFuX2NsaWVudCIsImNsaWVudF9yb2xlIjoicG9zdG1hbiIsImp0aSI6IkExMjc3MTBFOUM5MUIzRUEzQUQxMEYzREE1QjFGOTEyIiwiaWF0IjoxNjk5OTA5NjU4LCJzY29wZSI6WyJiYWNrb2ZmaWNlX2FwaS5jYWxsIl19.gtH9v6AWjPdTldIRy78wXz_aXqMhWCG8PmFip77lDPh23AQVZwMmIgw8yHiNSMNQlsnwt67F49YJtjPdPI9JlYYphQpdf_KPeIMjEp5F0JNjJkBCZrw74l55kxC6sXuXUp11dmR8iQEt4SHJzFWlVluay3q8UxiA5v2BciOx8vyYPzRJX8IexRE0OabLv1yQSQ_ML_XFhtFOH6bQ6ARp1IYfEHMLZCjjPsZ9lcyW2IrQ5_E_2AmklHX-dWJuAaK6MQ2PUizt1vIf4BPI39xXuajqubCxABI31iNMLZwY6YtiEcFWyUjveZ3uWk88U5m_Wc6A329iseeDikze32XlFg' \
| Parameter | Type | Description |
|---|---|---|
| partnerSiteId | string | client_id you obtain after partner registration |
| currencies | string optional | Three letter currency code. Max 50 currencies. supported currencies |
Method: GET
Headers
Authorization:Bearer {{access_token}}. To get access token see obtain-access-token
Success response
Response: HTTP 200
{
"data": [
{
"id": "1fec54685b50bcd660332c12",
"gameType": "Roulette",
"name": "Venice Roulette",
"workingSchedule24By7": true,
"workingSchedule": "09:00-12:00",
"onlinePlayersCount": 4,
"limits": {
"EUR": {
"minBetLimit": 0.1,
"maxBetLimit": 900
},
"USD": {
"minBetLimit": 1,
"maxBetLimit": 100
},
"VND": {
"minBetLimit": 0.01,
"maxBetLimit": 0.1
}
},
"lobbyCategories": [
{
"name": "Roulette",
"index": 0,
"subCategories": [
{
"name": "Venice",
"description": "VIP",
"index": 0
}
]
},
{
"name": "custom",
"index": 1,
"subCategories": []
}
],
"branding": "General",
"demoUrl": "https://demo.game.winfinity.live"
}
]
}
| Parameter | Type | Description |
|---|---|---|
| id | string | Identifier of a table (game) |
| gameType | string | Type of the game. See below |
| name | string | Name of a table (game) |
| description | string optional | |
| workingSchedule24By7 | bool | Indicates whether the game works 24/7 |
| workingSchedule | string | Used if workingSchedule24By7 is false. Format example: “18:00-21:00” |
| onlinePlayersCount | integer | Current online players count |
| limits | object | A map with bet limits by currency |
| lobbyCategories | object | Array of lobby categories this table belongs to |
| branding | string | Type of a branding. See below |
| demoUrl | string | The URL to launch a free-play game mode |
Limit: The key of the map is 3 or 4 letters identifier of currency in upper case (ISO 4217)
| Parameter | Type | Description |
|---|---|---|
| minBetLimit | number | |
| maxBetLimit | number |
Lobby category:
| Parameter | Type | Description |
|---|---|---|
| name | string | Name of the lobby category |
| index | number | Position inside this lobby category |
Branding types:
- General (no branding)
- Digital
- Physical
Failed response
Fail response example
HTTP status code 400
{
"error": {
"code": 400,
"message": "Bad request"
}
}
There could be 4xx, 5xx HTTP status codes.
Start master session
Log in a player into the Winfinity system.
Request
Request
curl --location 'https://{{gw_api_url}}/partners/startMasterSession' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjhFM0Y5QjBGODI4NTdCMjAwNTIxNjUwNDAzNzIyOEI0QTYxMjJFRjNSUzI1NiIsInR5cCI6ImF0K2p3dCIsIng1dCI6ImpqLWJENEtGZXlBRklXVUVBM0lvdEtZU0x2TSJ9.eyJuYmYiOjE2OTk5MDk2NTgsImV4cCI6MTY5OTkxMzI1OCwiaXNzIjoiaHR0cDovL3Bhc3Nwb3J0IiwiYXVkIjoiYmFja29mZmljZV9hcGkiLCJjbGllbnRfaWQiOiJwb3N0bWFuX2NsaWVudCIsImNsaWVudF9yb2xlIjoicG9zdG1hbiIsImp0aSI6IkExMjc3MTBFOUM5MUIzRUEzQUQxMEYzREE1QjFGOTEyIiwiaWF0IjoxNjk5OTA5NjU4LCJzY29wZSI6WyJiYWNrb2ZmaWNlX2FwaS5jYWxsIl19.gtH9v6AWjPdTldIRy78wXz_aXqMhWCG8PmFip77lDPh23AQVZwMmIgw8yHiNSMNQlsnwt67F49YJtjPdPI9JlYYphQpdf_KPeIMjEp5F0JNjJkBCZrw74l55kxC6sXuXUp11dmR8iQEt4SHJzFWlVluay3q8UxiA5v2BciOx8vyYPzRJX8IexRE0OabLv1yQSQ_ML_XFhtFOH6bQ6ARp1IYfEHMLZCjjPsZ9lcyW2IrQ5_E_2AmklHX-dWJuAaK6MQ2PUizt1vIf4BPI39xXuajqubCxABI31iNMLZwY6YtiEcFWyUjveZ3uWk88U5m_Wc6A329iseeDikze32XlFg' \
--data '{
"user": {
"partnerSiteId": "630f3428de590a4b876cfc41",
"userId": "3899",
"language": "EN",
"timeZoneOffset": "04:00:00",
"screenName" : "test1701859045485"
},
"tableId": "633565bd9a0db90b1f931517",
"currency": "RUB",
"country": "RU",
"device": "mobile",
"ipAddress": "80.251.117.218",
"balance": 3248.02,
"test" : true,
"lobbyCategory": "Roulette",
"urls" : {
"signOutUrl" : "http://signout.test",
"responsibleGamblingUrl" : "http://gamblin.test",
"cashierUrl" : "http://cashier.test",
"lobbyUrl" : "http://lobby.test"
}
}'
| Parameter | Type | Description |
|---|---|---|
| tableId | string optional | Identifier of a table (game) for directly launching the game. If tableId parameter is not passed in the request, the user will end up in the lobby. |
| currency | string | supported currencies |
| country | string | 2-letter country identifier (ISO 3166 ) |
| device | string | Device, which can be identified from Player’s User-Agent |
| ipAddress | string | Player’s IP address (IPv4) |
| lobbyCategory | string optional | Optional lobby category name to open in the lobby. Available values: Roulette, BlackJack, BankerGames, GameShows. |
| user | User | |
| urls | Urls optional | |
| balance | number optional | Initial balance. Should always be sent, if possible. We will make a balance call right after this, if it is not sent. |
| test | bool optional | If true, the related transactions will be ignored in reports. |
| stage | string optional | Table stage. Available values: Monaco, Symphony, Royal, Venice, Bar, Le Rouge, BigBang, Tao Yuan, Shangrila, Luxe, Golden |
| group | string optional | Table group. Available values: Private |
Urls:
| Parameter | Type | Description |
|---|---|---|
| signOutUrl | string optional | URL where the user will be redirected after their playing session finishes |
| responsibleGamblingUrl | string optional | Responsible Gambling URL |
| cashierUrl | string optional | URL where the user will be redirected in order to make a deposit |
| lobbyUrl | string optional | URL where the user will be redirected after exiting a table (game) |
User:
| Parameter | Type | Description |
|---|---|---|
| partnerSiteId | string | Partner’s identifier (obtained from account manager) |
| userId | string | Identifier of a player on the partner’s side |
| language | string | 2-letter language identifier (ISO 639-1, download) |
| timeZoneOffset | string optional | Format example: “04:00:00” - 4h |
| screenName | string optional | If null, a random name will be set |
Method: POST
Headers
Authorization:Bearer {{access_token}}. To get access token see obtain-access-token
Success response
Response: HTTP 200
{
"data": {
"frameUrl": "https://lobby_frame_url",
"masterSessionId": "21277bf55bb24e15ac30be8fc510ce02"
}
}
| Parameter | Type | Description |
|---|---|---|
| frameUrl | string | Url for Winfinity game or lobby. Redirect user to this url or open it in your own iFrame. |
| masterSessionId | string | We will use this value as msid in request to partner |
Failed response
Error response example
HTTP status code 400
{
"error": {
"code": 602,
"message": "Current user is blocked "
}
}
There could be 4xx, 5xx HTTP status codes
Error code in message 4xx, 5xx, 6xx, 7xx
| Error code | Message | Meaning |
|---|---|---|
| 602 | Current user is blocked | |
| 603 | Player from this country is not allowed | |
| 701 | Game is not available right now | Selected table is not active in our system, this table could be in lobby, please check available tables |
| 702 | Currency is not allowed | |
| 703 | Partner site does not exist | |
| 704 | Country is not allowed |
Start demo session
Creates a demo session for unregistered players without requiring user credentials. Betting is disabled in demo sessions — they are intended for observation purposes only. Please contact your account manager to enable this feature.
Request
Request
curl --location 'https://{{gw_api_url}}/partners/startDemoSession' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjhFM0Y5QjBGODI4NTdCMjAwNTIxNjUwNDAzNzIyOEI0QTYxMjJFRjNSUzI1NiIsInR5cCI6ImF0K2p3dCIsIng1dCI6ImpqLWJENEtGZXlBRklXVUVBM0lvdEtZU0x2TSJ9.eyJuYmYiOjE2OTk5MDk2NTgsImV4cCI6MTY5OTkxMzI1OCwiaXNzIjoiaHR0cDovL3Bhc3Nwb3J0IiwiYXVkIjoiYmFja29mZmljZV9hcGkiLCJjbGllbnRfaWQiOiJwb3N0bWFuX2NsaWVudCIsImNsaWVudF9yb2xlIjoicG9zdG1hbiIsImp0aSI6IkExMjc3MTBFOUM5MUIzRUEzQUQxMEYzREE1QjFGOTEyIiwiaWF0IjoxNjk5OTA5NjU4LCJzY29wZSI6WyJiYWNrb2ZmaWNlX2FwaS5jYWxsIl19.gtH9v6AWjPdTldIRy78wXz_aXqMhWCG8PmFip77lDPh23AQVZwMmIgw8yHiNSMNQlsnwt67F49YJtjPdPI9JlYYphQpdf_KPeIMjEp5F0JNjJkBCZrw74l55kxC6sXuXUp11dmR8iQEt4SHJzFWlVluay3q8UxiA5v2BciOx8vyYPzRJX8IexRE0OabLv1yQSQ_ML_XFhtFOH6bQ6ARp1IYfEHMLZCjjPsZ9lcyW2IrQ5_E_2AmklHX-dWJuAaK6MQ2PUizt1vIf4BPI39xXuajqubCxABI31iNMLZwY6YtiEcFWyUjveZ3uWk88U5m_Wc6A329iseeDikze32XlFg' \
--data '{
"partnerSiteId": "630f3428de590a4b876cfc41",
"language": "EN",
"timeZoneOffset": "04:00:00",
"tableId": "633565bd9a0db90b1f931517",
"country": "RU",
"device": "mobile",
"ipAddress": "80.251.117.218",
"test" : true,
"lobbyCategory": "Roulette",
"urls" : {
"signOutUrl" : "http://signout.test",
"responsibleGamblingUrl" : "http://gamblin.test",
"cashierUrl" : "http://cashier.test",
"lobbyUrl" : "http://lobby.test"
}
}'
| Parameter | Type | Description |
|---|---|---|
| partnerSiteId | string | Partner’s identifier (obtained from account manager) |
| language | string | 2-letter language identifier (ISO 639-1) |
| timeZoneOffset | string optional | Format example: “04:00:00” - 4h |
| tableId | string optional | Identifier of a table (game) for directly launching the game. If not passed, the user will end up in the lobby. |
| country | string optional | 2-letter country identifier (ISO 3166) |
| device | string optional | Device, which can be identified from Player’s User-Agent |
| ipAddress | string optional | Player’s IP address (IPv4) |
| lobbyCategory | string optional | Optional lobby category name to open in the lobby. Available values: Roulette, BlackJack, BankerGames, GameShows. |
| urls | Urls optional | |
| test | bool optional | Indicates whether the session is created for testing purposes |
| stage | string optional | Table stage. Available values: Monaco, Symphony, Royal, Venice, Bar, Le Rouge, BigBang, Tao Yuan, Shangrila, Luxe, Golden |
| group | string optional | Table group. Available values: Private |
Urls:
| Parameter | Type | Description |
|---|---|---|
| signOutUrl | string optional | URL where the user will be redirected after their playing session finishes |
| responsibleGamblingUrl | string optional | Responsible Gambling URL |
| cashierUrl | string optional | URL where the user will be redirected in order to make a deposit |
| lobbyUrl | string optional | URL where the user will be redirected after exiting a table (game) |
Method: POST
Headers
Authorization:Bearer {{access_token}}. To get access token see obtain-access-token
Success response
Response: HTTP 200
{
"data": {
"frameUrl": "https://lobby_frame_url"
}
}
| Parameter | Type | Description |
|---|---|---|
| frameUrl | string | Url for Winfinity game or lobby. Redirect user to this url or open it in your own iFrame |
Failed response
Error response example
HTTP status code 400
{
"error": {
"code": 703,
"message": "Partner site does not exist"
}
}
There could be 4xx, 5xx HTTP status codes
Error code in message 4xx, 5xx, 6xx, 7xx
| Error code | Message | Meaning |
|---|---|---|
| 701 | Game is not available right now | Demo sessions are not enabled in our system or selected table is not active in our system, this table could be in lobby, please check available tables |
| 703 | Partner site does not exist | |
| 704 | Country is not allowed | |
| 705 | Demo sessions are not allowed |
Terminate master session
Terminate all
This endpoint terminates all partner master sessions.
Request
Request example
curl --location 'https://{{gw_api_url}}/partners/terminateAll' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjhFM0Y5QjBGODI4NTdCMjAwNTIxNjUwNDAzNzIyOEI0QTYxMjJFRjNSUzI1NiIsInR5cCI6ImF0K2p3dCIsIng1dCI6ImpqLWJENEtGZXlBRklXVUVBM0lvdEtZU0x2TSJ9.eyJuYmYiOjE2OTk5MDk2NTgsImV4cCI6MTY5OTkxMzI1OCwiaXNzIjoiaHR0cDovL3Bhc3Nwb3J0IiwiYXVkIjoiYmFja29mZmljZV9hcGkiLCJjbGllbnRfaWQiOiJwb3N0bWFuX2NsaWVudCIsImNsaWVudF9yb2xlIjoicG9zdG1hbiIsImp0aSI6IkExMjc3MTBFOUM5MUIzRUEzQUQxMEYzREE1QjFGOTEyIiwiaWF0IjoxNjk5OTA5NjU4LCJzY29wZSI6WyJiYWNrb2ZmaWNlX2FwaS5jYWxsIl19.gtH9v6AWjPdTldIRy78wXz_aXqMhWCG8PmFip77lDPh23AQVZwMmIgw8yHiNSMNQlsnwt67F49YJtjPdPI9JlYYphQpdf_KPeIMjEp5F0JNjJkBCZrw74l55kxC6sXuXUp11dmR8iQEt4SHJzFWlVluay3q8UxiA5v2BciOx8vyYPzRJX8IexRE0OabLv1yQSQ_ML_XFhtFOH6bQ6ARp1IYfEHMLZCjjPsZ9lcyW2IrQ5_E_2AmklHX-dWJuAaK6MQ2PUizt1vIf4BPI39xXuajqubCxABI31iNMLZwY6YtiEcFWyUjveZ3uWk88U5m_Wc6A329iseeDikze32XlFg' \
--data ''
Method: POST
Headers
Authorization:Bearer {{access_token}}. To get access token see obtain-access-token
Success response
Response: HTTP 200
{
"data": {
"activeMasterSessionsCount": 0,
"terminatedMasterSessionsCount": 2
}
}
| Parameter | Type | Description |
|---|---|---|
| activeMasterSessionsCount | number | The number of active master sessions, it will always be 0 for this endpoint. |
| terminatedMasterSessionsCount | number | The number of master sessions terminated by this endpoint call. |
Failed response
There could be 4xx, 5xx HTTP status codes.
Error response example
HTTP status code 400
{
"error": {
"code": 400,
"message": "Bad request"
}
}
Terminate
This endpoint terminates specific requested partner master sessions.
Request
Request example for userIds
curl --location 'https://{{gw_api_url}}/partners/terminate' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjhFM0Y5QjBGODI4NTdCMjAwNTIxNjUwNDAzNzIyOEI0QTYxMjJFRjNSUzI1NiIsInR5cCI6ImF0K2p3dCIsIng1dCI6ImpqLWJENEtGZXlBRklXVUVBM0lvdEtZU0x2TSJ9.eyJuYmYiOjE2OTk5MDk2NTgsImV4cCI6MTY5OTkxMzI1OCwiaXNzIjoiaHR0cDovL3Bhc3Nwb3J0IiwiYXVkIjoiYmFja29mZmljZV9hcGkiLCJjbGllbnRfaWQiOiJwb3N0bWFuX2NsaWVudCIsImNsaWVudF9yb2xlIjoicG9zdG1hbiIsImp0aSI6IkExMjc3MTBFOUM5MUIzRUEzQUQxMEYzREE1QjFGOTEyIiwiaWF0IjoxNjk5OTA5NjU4LCJzY29wZSI6WyJiYWNrb2ZmaWNlX2FwaS5jYWxsIl19.gtH9v6AWjPdTldIRy78wXz_aXqMhWCG8PmFip77lDPh23AQVZwMmIgw8yHiNSMNQlsnwt67F49YJtjPdPI9JlYYphQpdf_KPeIMjEp5F0JNjJkBCZrw74l55kxC6sXuXUp11dmR8iQEt4SHJzFWlVluay3q8UxiA5v2BciOx8vyYPzRJX8IexRE0OabLv1yQSQ_ML_XFhtFOH6bQ6ARp1IYfEHMLZCjjPsZ9lcyW2IrQ5_E_2AmklHX-dWJuAaK6MQ2PUizt1vIf4BPI39xXuajqubCxABI31iNMLZwY6YtiEcFWyUjveZ3uWk88U5m_Wc6A329iseeDikze32XlFg' \
--data '{
"userIds": [
"32144f111bb24e15ac30be8fc645ab77"
]
}'
Request example for masterSessionIds
curl --location 'https://{{gw_api_url}}/partners/terminate' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjhFM0Y5QjBGODI4NTdCMjAwNTIxNjUwNDAzNzIyOEI0QTYxMjJFRjNSUzI1NiIsInR5cCI6ImF0K2p3dCIsIng1dCI6ImpqLWJENEtGZXlBRklXVUVBM0lvdEtZU0x2TSJ9.eyJuYmYiOjE2OTk5MDk2NTgsImV4cCI6MTY5OTkxMzI1OCwiaXNzIjoiaHR0cDovL3Bhc3Nwb3J0IiwiYXVkIjoiYmFja29mZmljZV9hcGkiLCJjbGllbnRfaWQiOiJwb3N0bWFuX2NsaWVudCIsImNsaWVudF9yb2xlIjoicG9zdG1hbiIsImp0aSI6IkExMjc3MTBFOUM5MUIzRUEzQUQxMEYzREE1QjFGOTEyIiwiaWF0IjoxNjk5OTA5NjU4LCJzY29wZSI6WyJiYWNrb2ZmaWNlX2FwaS5jYWxsIl19.gtH9v6AWjPdTldIRy78wXz_aXqMhWCG8PmFip77lDPh23AQVZwMmIgw8yHiNSMNQlsnwt67F49YJtjPdPI9JlYYphQpdf_KPeIMjEp5F0JNjJkBCZrw74l55kxC6sXuXUp11dmR8iQEt4SHJzFWlVluay3q8UxiA5v2BciOx8vyYPzRJX8IexRE0OabLv1yQSQ_ML_XFhtFOH6bQ6ARp1IYfEHMLZCjjPsZ9lcyW2IrQ5_E_2AmklHX-dWJuAaK6MQ2PUizt1vIf4BPI39xXuajqubCxABI31iNMLZwY6YtiEcFWyUjveZ3uWk88U5m_Wc6A329iseeDikze32XlFg' \
--data '{
"masterSessionIds": [
"21277bf55bb24e15ac30be8fc510ce02"
]
}'
| Parameter | Type | Description |
|---|---|---|
| masterSessionIds | array of strings | Array of master session identifiers |
| userIds | array of strings | Array of user identifiers |
Only masterSessionIds or userIds must be specified.
Method: POST
Headers
Authorization:Bearer {{access_token}}. To get access token see obtain-access-token
Success response
Response: HTTP 200
{
"data": {
"activeMasterSessionsCount": 1,
"terminatedMasterSessionsCount": 2
}
}
| Parameter | Type | Description |
|---|---|---|
| activeMasterSessionsCount | number | The number of active master sessions left. |
| terminatedMasterSessionsCount | number | The number of master sessions terminated by this endpoint call. |
Failed response
There could be 4xx, 5xx HTTP status codes.
Error response example
HTTP status code 400
{
"error": {
"code": 400,
"message": "Bad request"
}
}
Obtain public RSA key
Using this key you can validate whether a message belongs to Winfinity.
Request
Request
curl --location 'https://{{gw_api_url}}/partners/jwtpublickey' \
--header 'Accept: text/plain' \
--header 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjhFM0Y5QjBGODI4NTdCMjAwNTIxNjUwNDAzNzIyOEI0QTYxMjJFRjNSUzI1NiIsInR5cCI6ImF0K2p3dCIsIng1dCI6ImpqLWJENEtGZXlBRklXVUVBM0lvdEtZU0x2TSJ9.eyJuYmYiOjE2OTk5MDk2NTgsImV4cCI6MTY5OTkxMzI1OCwiaXNzIjoiaHR0cDovL3Bhc3Nwb3J0IiwiYXVkIjoiYmFja29mZmljZV9hcGkiLCJjbGllbnRfaWQiOiJwb3N0bWFuX2NsaWVudCIsImNsaWVudF9yb2xlIjoicG9zdG1hbiIsImp0aSI6IkExMjc3MTBFOUM5MUIzRUEzQUQxMEYzREE1QjFGOTEyIiwiaWF0IjoxNjk5OTA5NjU4LCJzY29wZSI6WyJiYWNrb2ZmaWNlX2FwaS5jYWxsIl19.gtH9v6AWjPdTldIRy78wXz_aXqMhWCG8PmFip77lDPh23AQVZwMmIgw8yHiNSMNQlsnwt67F49YJtjPdPI9JlYYphQpdf_KPeIMjEp5F0JNjJkBCZrw74l55kxC6sXuXUp11dmR8iQEt4SHJzFWlVluay3q8UxiA5v2BciOx8vyYPzRJX8IexRE0OabLv1yQSQ_ML_XFhtFOH6bQ6ARp1IYfEHMLZCjjPsZ9lcyW2IrQ5_E_2AmklHX-dWJuAaK6MQ2PUizt1vIf4BPI39xXuajqubCxABI31iNMLZwY6YtiEcFWyUjveZ3uWk88U5m_Wc6A329iseeDikze32XlFg' \
--data ''
Method: GET
Headers
Authorization:Bearer {{access_token}}. To get access token see obtain-access-token
Success response
Response: HTTP 200
Content-Type: text/plain
-----BEGIN PUBLIC KEY-----
xHkrM8S8EEkXtbd4Ai2izI3DgBZsqwftYYQgEsP73oIQlW13jv8K/gqxqG8fTOnr
.......
xHkrM8S8EEkXtbd4Ai2izI3DgBZsqwftYYQgEsP73oIQlW13jv8K/gqxqG8fTOnr
-----END PUBLIC KEY-----
Failed response
There could be 4xx, 5xx HTTP status codes
Balance change notification
Please send this message each time the user balance changes without a request from Winfinity. It signifies that the player spent his money in another system/casino.
Request
Request
curl --location --request PUT 'https://{{gw_api_url}}/partners/changeUserBalance' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjhFM0Y5QjBGODI4NTdCMjAwNTIxNjUwNDAzNzIyOEI0QTYxMjJFRjNSUzI1NiIsInR5cCI6ImF0K2p3dCIsIng1dCI6ImpqLWJENEtGZXlBRklXVUVBM0lvdEtZU0x2TSJ9.eyJuYmYiOjE2OTk5MDk2NTgsImV4cCI6MTY5OTkxMzI1OCwiaXNzIjoiaHR0cDovL3Bhc3Nwb3J0IiwiYXVkIjoiYmFja29mZmljZV9hcGkiLCJjbGllbnRfaWQiOiJwb3N0bWFuX2NsaWVudCIsImNsaWVudF9yb2xlIjoicG9zdG1hbiIsImp0aSI6IkExMjc3MTBFOUM5MUIzRUEzQUQxMEYzREE1QjFGOTEyIiwiaWF0IjoxNjk5OTA5NjU4LCJzY29wZSI6WyJiYWNrb2ZmaWNlX2FwaS5jYWxsIl19.gtH9v6AWjPdTldIRy78wXz_aXqMhWCG8PmFip77lDPh23AQVZwMmIgw8yHiNSMNQlsnwt67F49YJtjPdPI9JlYYphQpdf_KPeIMjEp5F0JNjJkBCZrw74l55kxC6sXuXUp11dmR8iQEt4SHJzFWlVluay3q8UxiA5v2BciOx8vyYPzRJX8IexRE0OabLv1yQSQ_ML_XFhtFOH6bQ6ARp1IYfEHMLZCjjPsZ9lcyW2IrQ5_E_2AmklHX-dWJuAaK6MQ2PUizt1vIf4BPI39xXuajqubCxABI31iNMLZwY6YtiEcFWyUjveZ3uWk88U5m_Wc6A329iseeDikze32XlFg' \
--data '{
"partnerSiteId": "630f3428de590a4b876cfc41",
"balances": [
{
"masterSessionId": "08a4c87bd9f246ebb073b460fce0d97a",
"balance": 155,
"timestamp": 1704794454
}
]
}'
| Parameter | Type | Description |
|---|---|---|
| partnerSiteId | string | Partner’s identifier (obtained from account manager) |
| balances | array of Balance objects |
Balance:
| Parameter | Type | Description |
|---|---|---|
| masterSessionId | string | Identifier of the master session |
| balance | number | Player’s balance in the currency of the master session |
| timestamp | long | Unix Epoch timestamp in microseconds. Indicates when the balance was changed. |
Method: PUT
Headers
Authorization:Bearer {{access_token}}. To get access token see obtain-access-token
Success response
There could be 2xx HTTP status codes
Failed response
There could be 4xx, 5xx HTTP status codes
Round check
Provides a player’s game details.
Request
curl --location 'https://{{gw_api_url}}/partners/roundCheck?userId=6492d6e35094ed2e14c19d69&gameId=4667bbb208b743519c0b073151cd714b' \
--header 'Accept: text/plain' \
--header 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjhFM0Y5QjBGODI4NTdCMjAwNTIxNjUwNDAzNzIyOEI0QTYxMjJFRjNSUzI1NiIsInR5cCI6ImF0K2p3dCIsIng1dCI6ImpqLWJENEtGZXlBRklXVUVBM0lvdEtZU0x2TSJ9.eyJuYmYiOjE2OTk5MDk2NTgsImV4cCI6MTY5OTkxMzI1OCwiaXNzIjoiaHR0cDovL3Bhc3Nwb3J0IiwiYXVkIjoiYmFja29mZmljZV9hcGkiLCJjbGllbnRfaWQiOiJwb3N0bWFuX2NsaWVudCIsImNsaWVudF9yb2xlIjoicG9zdG1hbiIsImp0aSI6IkExMjc3MTBFOUM5MUIzRUEzQUQxMEYzREE1QjFGOTEyIiwiaWF0IjoxNjk5OTA5NjU4LCJzY29wZSI6WyJiYWNrb2ZmaWNlX2FwaS5jYWxsIl19.gtH9v6AWjPdTldIRy78wXz_aXqMhWCG8PmFip77lDPh23AQVZwMmIgw8yHiNSMNQlsnwt67F49YJtjPdPI9JlYYphQpdf_KPeIMjEp5F0JNjJkBCZrw74l55kxC6sXuXUp11dmR8iQEt4SHJzFWlVluay3q8UxiA5v2BciOx8vyYPzRJX8IexRE0OabLv1yQSQ_ML_XFhtFOH6bQ6ARp1IYfEHMLZCjjPsZ9lcyW2IrQ5_E_2AmklHX-dWJuAaK6MQ2PUizt1vIf4BPI39xXuajqubCxABI31iNMLZwY6YtiEcFWyUjveZ3uWk88U5m_Wc6A329iseeDikze32XlFg' \
--data ''
| Parameter | Type | Description |
|---|---|---|
| userId | string | Identifier of a player on the partner’s side |
| gameId | string | Identifier of the game/round |
Method: GET
Headers
Authorization:Bearer {{access_token}}. To get an access token see obtain-access-token
Success response
There could be 2xx HTTP status codes.
Body with http page.
Failed response
There could be 4xx, 5xx HTTP status codes
Create Magic chips
Creates a Magic chips promo campaign for selected users and tables.
Request
Request example
curl --location 'https://{{gw_api_url}}/partners/createMagicChips' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{access_token}}' \
--data '{
"name": "Magic chips campaign",
"startDate": "2026-08-12T10:00:00Z",
"endDate": "2026-08-20T10:00:00Z",
"expiredDate": "2026-08-18T10:00:00Z",
"tableIds": [
"633565bd9a0db90b1f931517"
],
"userIds": [
"3899"
],
"siteId": "630f3428de590a4b876cfc41",
"chipsNumber": 10,
"chipsValue": 1.5,
"currency": "USD",
"winLimit": 100,
"betLimit": 5
}'
| Parameter | Type | Description |
|---|---|---|
| name | string | Campaign name |
| startDate | datetime | Campaign start date (UTC) |
| endDate | datetime | Campaign end date (UTC). Must be greater than startDate |
| expiredDate | datetime optional | UTC date by which the user must use at least one chip; otherwise the chips expire. When set, must be greater than startDate and less than endDate |
| tableIds | string[] | Table identifiers where Magic chips can be used |
| userIds | string[] | Partner user identifiers (external user ids) |
| siteId | string | Partner’s site identifier |
| chipsNumber | integer | Number of Magic chips granted to each user. Must be greater than 0 |
| chipsValue | number | Value of a single Magic chip in the campaign currency. Must be greater than 0 |
| currency | string | 3- or 4-letter currency identifier in upper case. See Supported currencies |
| winLimit | number | Maximum win amount for the campaign. Must be greater than 0 |
| betLimit | integer | Maximum number of bets. Must be greater than 0 |
Method: POST
Headers
Authorization:Bearer {{access_token}}. To get an access token see obtain-access-token
Success response
Response: HTTP 200
{
"data": {
"promoId": "cf0ae75a-fd1f-48c2-af1c-22715c0c229d"
}
}
| Parameter | Type | Description |
|---|---|---|
| promoId | string | Identifier of the created Magic chips campaign |
Failed response
Error response example
HTTP status code 400
{
"error": {
"code": 400,
"message": "Bad request"
}
}
There could be 4xx, 5xx HTTP status codes
Get Magic chips
Returns details of an existing Magic chips campaign.
Request
Request example
curl --location 'https://{{gw_api_url}}/partners/getMagicChips?promoId=cf0ae75a-fd1f-48c2-af1c-22715c0c229d' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {{access_token}}'
| Parameter | Type | Description |
|---|---|---|
| promoId | string | Identifier of the Magic chips campaign |
Method: GET
Headers
Authorization:Bearer {{access_token}}. To get an access token see obtain-access-token
Success response
Response: HTTP 200
{
"data": {
"name": "Magic chips campaign",
"startDate": "2026-08-12T10:00:00Z",
"endDate": "2026-08-20T10:00:00Z",
"expiredDate": "2026-08-18T10:00:00Z",
"siteId": "630f3428de590a4b876cfc41",
"tableIds": [
"633565bd9a0db90b1f931517"
],
"userIds": [
"3899"
],
"chipsNumber": 10,
"chipsValue": 1.5,
"currency": "USD",
"winLimit": 100,
"betLimit": 5,
"promoId": "cf0ae75a-fd1f-48c2-af1c-22715c0c229d",
"status": "LIVE"
}
}
| Parameter | Type | Description |
|---|---|---|
| name | string | Campaign name |
| startDate | datetime | Campaign start date (UTC) |
| endDate | datetime | Campaign end date (UTC) |
| expiredDate | datetime optional | UTC date by which the user must use at least one chip; otherwise the chips expire |
| siteId | string | Partner’s site identifier |
| tableIds | string[] | Table identifiers where Magic chips can be used |
| userIds | string[] | User identifiers associated with the campaign |
| chipsNumber | integer | Number of Magic chips granted to each user |
| chipsValue | number | Value of a single Magic chip in the campaign currency |
| currency | string | Campaign currency |
| winLimit | number | Maximum win amount for the campaign |
| betLimit | integer | Maximum number of bets |
| promoId | string | Identifier of the Magic chips campaign |
| status | string | Campaign status (for example LIVE) |
Failed response
Error response example
HTTP status code 400
{
"error": {
"code": 400,
"message": "Bad request"
}
}
There could be 4xx, 5xx HTTP status codes
Abort Magic chips
Aborts an existing Magic chips campaign.
Request
Request example
curl --location --request PUT 'https://{{gw_api_url}}/partners/abortMagicChips' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{access_token}}' \
--data '{
"promoId": "cf0ae75a-fd1f-48c2-af1c-22715c0c229d"
}'
| Parameter | Type | Description |
|---|---|---|
| promoId | string | Identifier of the Magic chips campaign |
Method: PUT
Headers
Authorization:Bearer {{access_token}}. To get an access token see obtain-access-token
Success response
Response: HTTP 200
{
"data": "cf0ae75a-fd1f-48c2-af1c-22715c0c229d"
}
| Parameter | Type | Description |
|---|---|---|
| data | string | Identifier of the aborted Magic chips campaign |
Failed response
Error response example
HTTP status code 400
{
"error": {
"code": 400,
"message": "Bad request"
}
}
There could be 4xx, 5xx HTTP status codes
Game types
Game types can be represented as string and as integer. Currently supported:
Roulette=0BlackJack=1Baccarat=2MoneyWheel=3DragonTiger=4SicBo=6TopCard=7AndarBahar=9RngRoulette=12RngBlackjack=13Xball=17
Supported currencies
USD, EUR
3- or 4- letter currency identifier in upper case.
Partner API
Winfinity API communicates with the Partner API through HttpClient that calls the endpoint implemented by the partner and registered in Winfinity’s BackOffice.
The body of the request contains a signed RSA JWT (you need to get the public key through the API for decoding).
Request params
| Parameter | Type | Size | Description |
|---|---|---|---|
| com | integer | see below | command type |
| tid | string | 32 symbols (GUID) | transaction identifier (financial transactions only) |
| msid | string | 32 symbol (GUID) | master session identifier (for command types 0, 6, 7) |
| tbid | string | 24 symbols | table identifier (for command type 7) |
| uid | string | user identifier (financial transactions only) | |
| cur | string | 3- or 4- letter currency identifier in upper case (ISO 4217) | |
| gtp | string | see above | game type (financial transactions only) |
| sid | string | 32 symbol (GUID) | session identifier (for command types 0-5, 7) |
| gid | string | 32 symbols (GUID) | game Id (financial transactions only) |
| sum | number | sum (financial transactions only) | |
| timestamp | long | unix epoch timestamp in microseconds. Indicates when the financial transaction or the finish round was registered | |
| refid | string | 32 symbol (GUID) | reference PayIn transaction identifier. (for command types 2, 3, 9) |
| promoId | string | Optional. Promo identifier. - Filled for command types 1 and 2 only when a promo campaign is active and promoType = MagicChips. - Always filled for command type 9. |
|
| promoType | string | Optional. Type of promo: Wdrops, Jackpot, Tournament, MagicChips. - Filled for command types 1 and 2 only when a promo campaign is active (MagicChips only). - Always filled for command type 9. |
|
| partnerId | string | Partner identifier. Filled for command types 1, 2, 3, 9. |
Response params
Successful response params
| Parameter | Type | Description |
|---|---|---|
| data.transaction | string | Optional. For financial transactions only. Transaction identifier of financial operations on the partner’s side |
| data.balance | number | User balance after operation in requested currency. |
| data.timestamp | long | Unix Epoch timestamp in microseconds. Indicates when the operation was processed. |
Failed response params
There could be 2xx, 5xx HTTP status codes.
Error code in message 4xx, 5xx, 6xx, 7xx, 9xx
| Parameter | Type | Description |
|---|---|---|
| error.code | integer | Business error code (not HTTP status code). Codes are defined below. |
| error.message | string | Error text. |
Response should contain a data or error field. If the response contains an error field, it will be treated as an error. Examples of successful and unsuccessful responses below.
The message field can contain the error text in free form. The message will not be displayed on the UI but will be logged, which will help to further investigate the problem.
Common errors could be achived on each command.
| Code | Message | Meaning |
|---|---|---|
| 400 | Bad request | Request is not formatted correctly or did not pass the validation rules. |
| 500 | Unknown error | |
| 504 | Request timeout | |
| 601 | Wrong session identifier | Session expired or has never been registered. |
| 602 | Current user is blocked | User is blocked in your system. |
Commands
Get balance
Request example
POST https://{{partners_api_url}}
{
"com": 0,
"msid": "90aa7247b3ed113223245c6199322431",
"sid": "90aa7247b3ed113223245c6199322312"
}
com : 0
Get balance for a user with requested msid.
Successful response example
{
"data": {
"balance": 123.45,
"timestamp": 1658415028084125
}
}
Failed response example
HTTP status code 200
{
"error": {
"code": 601,
"message": "Wrong session identifier"
}
}
PayIn
Request example
POST https://{{partners_api_url}}
{
"com": 1,
"tid": "1ad5045f673f44c89d46e1a3dc250f54",
"msid": "90aa7247b3ed113223245c6199322431",
"tbid": "456884123abcPOPJxihB6n",
"uid": "unique_user_id",
"cur": "USD",
"gtp": "Roulette",
"sid": "90aa7247b3ed113223245c6199322312",
"gid": "90aa7247b3ed11ec94245c619932d0d6",
"sum": 123.45,
"timestamp": 1694505755000000,
"partnerId": "partner_id_example"
}
com : 1 It’s refundable
Successful response example
{
"data": {
"transaction": "1f42fcc7419eec35b1275284",
"balance": 123.45,
"timestamp": 1658415028084125
}
}
Failed response example
HTTP status code 200
{
"error": {
"code": 600,
"message": "Not enough funds for current operation"
}
}
Additional failed codes:
| Code | Message | Meaning |
|---|---|---|
| 600 | Not enough funds for current operation | |
| 654 | Operation is not allowed in finished round | No more transactions will be accepted during this round. |
| 700 | Game is not available | This game is currently disabled on the partner’s side. |
| 900 | Player reached customized bet limit | |
| 901 | Player exceeded his personal limit of session time | |
| 902 | Bet exceeded max bet limit | |
| 903 | Player exceeded the maximum loss limit |
PayOut
Request example
POST https://{{partners_api_url}}
{
"com": 2,
"tid": "1ad5045f673f44c89d46e1a3dc250f54",
"msid": "90aa7247b3ed113223245c6199322431",
"tbid": "456884123abcPOPJxihB6n",
"uid": "unique_user_id",
"cur": "USD",
"gtp": "Roulette",
"sid": "90aa7247b3ed113223245c6199322312",
"gid": "90aa7247b3ed11ec94245c619932d0d6",
"refid": "zjcp6ug249nywjkbna35ene2",
"sum": 123.45,
"timestamp": 1694505755000000,
"partnerId": "partner_id_example"
}
com : 2
Payout for a specific PayIn transaction.
refid refers to payin tid
It’s retriable
Successful response example
{
"data": {
"transaction": "1f42fcc7419eec35b1275284",
"balance": 123.45,
"timestamp": 1658415028084125
}
}
Failed response example
HTTP status code 200
{
"error": {
"code": 654,
"message": "Operation is not allowed in finished round "
}
}
Additional failed codes:
| Code | Message | Meaning |
|---|---|---|
| 650 | Could not make PayOut request because PayIn transaction is not found | |
| 654 | Operation is not allowed in a finished round | No more transactions will be accepted during this round. |
Refund
Request example
POST https://{{partners_api_url}}
{
"com": 3,
"tid": "1ad5045f673f44c89d46e1a3dc250f54",
"msid": "90aa7247b3ed113223245c6199322431",
"tbid": "456884123abcPOPJxihB6n",
"uid": "unique_user_id",
"cur": "USD",
"gtp": "Roulette",
"sid": "90aa7247b3ed113223245c6199322312",
"gid": "90aa7247b3ed11ec94245c619932d0d6",
"refid": "zjcp6ug249nywjkbna35ene2",
"sum": 123.45,
"partnerId": "partner_id_example"
}
com : 3
Refund a PayIn operation.
tid and refid contain payin tid which should be refunded.
It’s retriable
Successful response example
{
"data": {
"transaction": "1f42fcc7419eec35b1275284",
"balance": 123.45,
"timestamp": 1658415028084125
}
}
Failed response example
HTTP status code 200
{
"error": {
"code": 654,
"message": "Operation is not allowed in finished round "
}
}
Additional failed codes:
| Code | Message | Meaning |
|---|---|---|
| 650 | Could not make a Refund request because the PayIn transaction is not found | |
| 654 | Operation is not allowed in a finished round | No more transactions will be accepted during this round. |
| 655 | Refund is not allowed |
Expired table session (Optional)
Note: Contact our team if you want to disable this command
Request example
POST https://{{partners_api_url}}
{
"com": 4,
"msid": "90aa7247b3ed113223245c6199322431",
"uid": "unique_user_id",
"sid": "90aa7247b3ed113223245c6199322312"
}
com : 4 Expired session notification which was created by com: 7. Operations on it are no longer accepted.
Successful response example
{
"data": {
"balance": 123.45,
"timestamp": 1658415028084125
}
}
Failed response example
HTTP status code 200
{
"error": {
"code": 601,
"message": "Wrong session identifier"
}
}
Expired master session
Request example
POST https://{{partners_api_url}}
{
"com": 6,
"msid": "90aa7247b3ed113223245c6199322431",
"uid": "unique_user_id"
}
com : 6 Expired master session notification which was created by start master session The session has expired, operations on it are no longer accepted.
Successful response example
{
"data": {
"balance": 123.45,
"timestamp": 1658415028084125
}
}
Failed response example
HTTP status code 200
{
"error": {
"code": 601,
"message": "Wrong session identifier"
}
}
Register session on partner side (Optional)
Note: Contact our team if you want to disable this command
Request example
POST https://{{partners_api_url}}
{
"com": 7,
"msid": "90aa7247b3ed113223245c6199322431",
"tbid": "456884123abcPOPJxihB6n",
"uid": "unique_user_id",
"sid": "90aa7247b3ed113223245c6199322312"
}
com : 7 Register the session on the partner side as soon as a player tries to take a seat at a table.
Successful response example
{
"data": {
"balance": 123.45,
"timestamp": 1658415028084125
}
}
Failed response example
HTTP status code 200
{
"error": {
"code": 601,
"message": "Wrong session identifier"
}
}
Finish round
Request example
POST https://{{partners_api_url}}
{
"com": 8,
"msid": "90aa7247b3ed113223245c6199322431",
"tbid": "456884123abcPOPJxihB6n",
"uid": "unique_user_id",
"gtp": "Roulette",
"sid": "90aa7247b3ed113223245c6199322312",
"gid": "90aa7247b3ed11ec94245c619932d0d6",
"timestamp": 1694505755000000
}
com : 8
The game is finished for the current user, no more transactions should be accepted for the gid + sid pair during this game.
Successful response example
{
"data": {
"balance": 123.45,
"timestamp": 1658415028084125
}
}
Failed response example
HTTP status code 200
{
"error": {
"code": 601,
"message": "Wrong session identifier"
}
}
Zero win message
Zero Win messages for lost bets are disabled by default. A Finish Round message is sent instead.
By making a request to Winfinity account managers, this behavior can be changed to enable Zero Win Messages. In this case the Finish Round message will not be sent, and each bet will have its corresponding win message, even in case of a loss.
Request example
POST https://{{partners_api_url}}
{
"com": 2,
"tid": "1ad5045f673f44c89d46e1a3dc250f54",
"msid": "90aa7247b3ed113223245c6199322431",
"tbid": "456884123abcPOPJxihB6n",
"uid": "unique_user_id",
"cur": "USD",
"gtp": "Roulette",
"sid": "90aa7247b3ed113223245c6199322312",
"gid": "90aa7247b3ed11ec94245c619932d0d6",
"refid": "zjcp6ug249nywjkbna35ene2",
"sum": 0.0,
"timestamp": 1694505755000000
}
Promo PayOut
Request example
POST https://{{partners_api_url}}
{
"com": 9,
"cur": "USD",
"msid": "90aa7247b3ed113223245c6199322431",
"tid": "1ad5045f673f44c89d46e1a3dc250f54",
"uid": "unique_user_id",
"sum": 123.45,
"refid": "zjcp6ug249nywjkbna35ene2",
"timestamp": 1694505755000000,
"tbid": "456884123abcPOPJxihB6n",
"promoId": "11abaebc4ced4fc09",
"promoType": "Wdrops",
"partnerId": "partner_id_example"
}
com : 9 Reward a user with a certain amount. It’s retriable
Successful response example
{
"data": {
"transaction": "1f42fcc7419eec35b1275284",
"balance": 123.45,
"timestamp": 1658415028084125
}
}
Failed response example
HTTP status code 200
{
"error": {
"code": 601,
"message": "Wrong session identifier"
}
}
Timeouts
- Some time-critical commands have a short response timeout. These are Balance(
com:0), PayIn(com:1) and SessionRegistration(com:7). We wait 4 seconds before canceling the request. - Other commands have a much longer timeout. We try to wait for a response as long as possible.
Idempotent payment command
Idempotency is a property of certain operations or API requests, which guarantees that performing the operation multiple times will yield the same result as executing it only once.
Please develop idempotent methods for all payment commands.
For example:
If you received a payout with tid : 1 and processed it successfully, you replied with HTTP 200.
Then if you recieve the same payout with tid : 1, please send us the same response you had previously sent, which would be HTTP 200.
If you receive a payout with tid : 1 and decline it due to insufficient funds, next time you receive the same payout, please send us the same response with insufficient funds.
Transaction retry mechanism
In case of a response error for payment transactions, a retry/refund mechanism will be launched:
- if a business error is present and the code is 0 or 5xx;
- if a business error is absent and the HTTP response code is 5xx;
A PayIn transaction (com: 1) will be refunded (com: 3) and the refund transaction will be repeated with a retry mechanism.
To stop the refund attempts, the expected response status code must be 200.
A PayOut transaction (com: 2) or Promo PayOut transaction (com: 9) will be repeated with retry mechanism.
To stop the retry attempts, the expected reponse must contain a valid .json with data or error information.
To stop the refund attempts, the expected response HTTP status code must be 200 with a success body or with appropriate business error in data.error.
Each retry attempt should be idempotent from the partner’s side.
If a limit is reached, a notification is sent to all interested parties, the transaction is set to the EXPIRED status, and the mechanism stops.
UI requirements
Iframe settings:
| Attribute | Meaning | How we use it |
|---|---|---|
scr |
Specifies the address of the document to embed | src="https://....winfinity.live...." |
width |
Specifies the width of an <iframe> |
width="100%" |
height |
Specifies the height of an <iframe> |
height="100%" |
allow |
Gives permission for features such as fullscreen and copy text (from round history for customer support purposes) | allow="fullscreen; clipboard-write" |
Testing
As soon as the development is complete from your side and you are ready for integration, please provide the following info for our own testing purposes:
- Test accounts:
- URL for login
- credentials It will be beneficial if you create at least two test accounts for us.
- If you have some problems or errors, provide as much data as possible It can be:
- site name, site_id/client_id, callback_url
- master_session_id, user_id, session_id, currency
- table_id
- transaction_id
- date time
FAQ
Can there be two or more Site IDs and why?
Yes. In this way we can divide your sites inside one integration. For example, if you operate several casinos.
Can we have multiple access tokens? Does token generation invalidate the previously generated versions?
Yes, you can have multiple tokens. No, each new token doesn’t invalidate the previous one.
Do you have transaction reports via API?
No, you can use the backoffice to manually generate reports. Please tell us if such an API is required.
Changelog
Here you can see changes according to documentation version:
1.16.19
09.10.2026
- Added Start demo session
1.16.18
15.09.2026
- Create Magic chips
- Updated
expiredDatedescription
- Updated
- Get Magic chips
- Updated
expiredDatedescription
- Updated
1.16.17
14.09.2026
- PayIn
- Add: parameter
partnerId
- Add: parameter
- PayOut
- Add: parameter
partnerId
- Add: parameter
- Refund
- Add: parameter
partnerId
- Add: parameter
- Promo PayOut
- Add: parameter
partnerId
- Add: parameter
1.16.16
24.08.2026
- Obtain available tables
- Added a parameter
demoUrlto the response
- Added a parameter
1.16.15
12.08.2026
- Create Magic chips
- Added new endpoint to Winfinity API
- Get Magic chips
- Added new endpoint to Winfinity API
- Abort Magic chips
- Added new endpoint to Winfinity API
1.16.14
21.07.2026
- Start master session
- Updated
stageavailable values
- Updated
1.16.13
30.06.2026
- Start master session
- Added optional parameters
stageandgroup
- Added optional parameters
1.16.12
23.06.2026
1.16.11
02.06.2026
- Promo PayOut
- Add: parameters
promoIdandpromoType
- Add: parameters
1.16.10
11.05.2026
- Start master session
- Added new error code 703:
Partner site does not exist - Added new error code 704:
Country is not allowed
- Added new error code 703:
1.16.9
23.03.2026
- Start master session
- Added optional parameter
lobbyCategorywith allowed valuesRoulette,BlackJack,BankerGames,GameShows
- Added optional parameter
1.16.8
23.03.2026
- Promo PayOut
- Deleted: parameter
sid
- Deleted: parameter
1.16.7
26.01.2026
- Updated Game types
- Added: RngRoulette, RngBlackjack, Xball
- Deleted: Bingo
1.16.6
11.09.2025
- Updated supported languages:
- Deleted: Bihari
1.16.5
09.09.2025
- Updated supported currencies:
- fiat:
- Deleted: ANG
- fiat:
1.16.4
19.08.2025
- Updated supported currencies:
1.16.3
13.08.2025
- Table session
- Optional table session commands
1.16.2
- Game types
- Add new game type
AndarBahar
- Add new game type
1.16.1
1.16.0
- Terminate master session
- Added 2 new endpoints to Winfinity API
1.15.1
- Promo PayOut
- Added a parameter
tbid
- Added a parameter
1.15.0
- Obtain available tables
- Added a parameter
brandingto the response
- Added a parameter
1.14.3
- Promo PayOut
- Added a parameter
refid
- Added a parameter
1.14.2
- Removed the obsolete command 651
1.14.1
- Removed the obsolete information regarding tipping
1.14.0
- Start master session
- Added a description on landing into lobby
- Structure and typo correction
1.13.0
- Zero win message
- Added a new command to Partner API
1.12.0
- Game scenarios
- Removed timestamp from refund requests
1.11.0
- Game types
- Add new game types
SicBo,TopCard
- Add new game types
1.10.0
- Obtain available tables
- Add optional
currenciesquery parameter to query table limits
- Add optional
- Start master session
- Add optional
lobbyUrlquery parameter, user will be redirected to after exiting a game
- Add optional
- Round check
- Add new endpoint to check game details.
1.9.2
- Promo PayOut
- Add a new command to partners api
1.9.1
- Start master session
- SVC currency is not supported
1.9.0
- Game types
- Add new game types
MoneyWheel,DragonTigerandBingo
- Add new game types
1.8.11
- Start master session
- Time zone is optional
1.8.10
- Partner api
- Make
msidrequired incom=0
- Make
1.8.9
- Partner api
- Additional parameter
refidin the PayOut and refund transactions.
- Additional parameter
1.8.8
- Partner api
- Additional parameter
timestampin the financial transactions and in the finish round.
- Additional parameter
1.8.7
- Partner api
- Additional parameters
msidanduidin all commands.
- Additional parameters
1.8.6
- Transaction retry mechanism
- Split logic for payment transaction error handling into retry and refund strategy. On PayIn error make refunds. On PayOut and Tips error make retry.
- Split command timeouts for time-critical commands and others
- Partner errors
- Added new error code 654
OperationNotAllowedInFinishedRound
- Added new error code 654
1.8.5
- Command types
- Added new command
FinishRound - In
Command typestable added new column with list of included parameters for each command type
- Added new command
1.8.4
- The beginning of the story