Appearance
User Data
POST https://{PARTNER_API_URL}/user/profile
This request will be performed when user loads an iFrame and every time we will need additional information for processing user requests on our side. When you receive a request you should perform the following actions on your side:
- Check that the method is
POST. - Verify request signature.
- Verify user token.
- Respond with a user profile data.
Request examples
json
{
"token": "5caa4cabce523c2f7610c50ce9819bfb",
"requestId": "d9195aef-9492-43dd-88d0-dc1732a37f4e"
}Response examples
json
{
"userId": "1999",
"currency": "USD",
"currencies": ["USD", "EUR"],
"isTest": false,
"customFields": {
"nickname": "Mr",
"firstName": "John",
"lastName": "Smith",
"email": "[email protected]",
"birthday": "1995-12-17",
"gender": "female",
"phone": "447911123456",
"isCashOutAllowed": true,
"isVerified": true,
"userCountry": "GB",
"userStatus": "positive",
"userSessionIp": "10.10.121.120",
"userSessionCountry": "GB",
"registrationDate": "2019-09-10 12:00:01",
"percentMargin": 13.2,
"avgBet": 12,
"isAbuser": 1,
"isVIP": 1
}
}The table below describes the parameters:
| Parameter | Type | Description |
|---|---|---|
token | stringlength: 10-64 | A string that you generating for each user session to be able to identify and authorize user on backend. The string is passed during frame initialization in the SDK parameters. |
userId | stringlength: 1-64 | The user’s unique ID on the Partner’s platform. |
currency | stringlength: 3-5 | Currently active currency of the user’s account. Sets the default currency on the iFrame. |
currencies | string[] | The list of available currencies for the user. This list may be shown on the iFrame. |
isTest | boolean | Optional. If this parameter is missing, a user will be count as isTest = false. |
customFields | CustomFields | A field holding additional information about a user. This field is optional. |
requestId | stringlength: 10-64 | A unique id to identify and track this particular request. |
The CustomFields parameters are holding additional information about user. Some parts of this information (e.g., nickname, first name, last name) can be displayed in Sportsbook iFrame and may be used within the leader boards (and other additional features) visible for other users. The table below describes the CustomFields parameters:
| Parameter | Type | Description |
|---|---|---|
firstName | string | User’s first name. |
lastName | string | User’s last name. |
nickname | string | User’s nickname. |
email | string | User’s email. |
birthday | string | User’s date of birth. |
gender | string | User’s gender. Possible options: female, male, no data. |
phone | string | User’s phone number. |
isCashOutAllowed | boolean | Optional parameter that enables and disables cashout for this user. |
isVerified | boolean | The verification state of the user on the Partner’s side. |
userCountry | string | User’s country code (ISO 3166-1 alpha-2). |
userStatus | enum | Antifraud reputation status of the user in the Sportsbook system. |
userSessionIp | string | The IP address of the user’s session. |
userSessionCountry | string | User’s session country code (ISO 3166-1 alpha-2). |
registrationDate | string | User's registration date in UTC (YYYY-MM-DD hh:mm:ss). |
percentMargin | float | Value of the average margin from the Partner’s product on a specific user (int or float). |
avgBet | float | The average sum of the bet (int or float). |
Use Case
Multi-Currency Support Requirements and Usage
Overview
Our system supports multiple currencies for a single user. Operators and Aggregators may implement multi-currency handling based on their platform architecture.
Regardless of the chosen integration approach, our system always expects the current active currency in the response to the User Data request (/user/profile). Our system also always includes the currency in all bet-related interactions (placebet, settle, unsettle, rollback).
Standard Approach for Multi-Currency Integration
Flow Description:
- User open website -> our system calls
/user/profile. - The Operator/Aggregator returns the user profile, including the current active currency.
- Our system stores the returned currency.
- For all subsequent bet-related requests (placebet, settle, unsettle, rollback), our system sends the currency that was active at the moment the bet was placed.
Important Note
If a bet was placed while the user’s active currency was USD, then even if the user later switches to another currency (e.g., EUR), all future operations related to that bet continue using USD, because it was the active currency at the time the bet was placed.
Summary
- The User Data response (/user/profile) must always include the current active currency.
- All bet-related requests (placebet, settle, unsettle, rollback) include the currency.
- The
userIdmust remain constant for the same real user. - After each currency change made by the player, the token must be changed, because each userId + currency pair must have a unique token.
Important
WARNING
NOTE: Changing the userId for the same real player when their currency changes is strictly prohibited.
Reason: Our system treats each unique userId as a separate player. Changing it may lead to:
- broken limits and risk-management rules
- incorrect or incomplete bet history
- vulnerability to user fraud
- potential financial losses
OperatorUser Field Requirements and Usage
Overview
The operatorUser field is used exclusively in scenarios where an Aggregator integrates with our system and acts as an intermediary between us and the Operators connected to that Aggregator.
When requests are routed through an Aggregator, the standard userId field may contain the Aggregator’s internal identifier rather than the actual user ID used in the Operator’s system. To ensure accurate identification and proper request processing, the Aggregator must provide the Operator’s real player ID in the operatorUser field.
The operatorUser field ensures that our system knows the exact user ID used in the Operator’s system, which is necessary for correct processing and for handling Operator support requests.
When Should operatorUser Be Used?
You MUST include the operatorUser field in the following cases: when userId represents the Aggregator’s Internal ID
When operatorUser Is Not Required
If an Operator integrates directly (without an Aggregator) and passes its own user ID using userId, the operatorUser field may be omitted.
Allowed Format:
Regex:
/^[A-Za-z0-9._~-]+$/This pattern allows only URL-safe characters (alphanumeric, ., _, ~, -), preventing issues with encoding, routing, or request parsing.
Maximum length: 64 characters
This limit ensures consistent storage, indexing, and URL stability across all environments.
Response examples with operatorUser:
json
{
"userId": "1999",
"currency": "USD",
"currencies": ["USD", "EUR"],
"isTest": false,
"customFields": {
"nickname": "Mr",
"firstName": "John",
"lastName": "Smith",
"email": "[email protected]",
"birthday": "1995-12-17",
"gender": "female",
"phone": "447911123456",
"isCashOutAllowed": true,
"operatorUser": "userId in operator system",
"isVerified": true,
"userCountry": "GB",
"userStatus": "positive",
"userSessionIp": "10.10.121.120",
"userSessionCountry": "GB",
"registrationDate": "2019-09-10 12:00:01",
"percentMargin": 13.2,
"avgBet": 12,
"isAbuser": 1,
"isVIP": 1
}
}