Download OpenAPI specification:Download
REST API
Method: GET/POST, depends on each endpoint specification
Format: JSON
Uri prefix: /gameapi/v2
Example:
POST /gameapi/v2/create_player HTTP/1.1
Content-Type: application/json; charset=utf-8
Host: <api server>
Connection: close
Content-Length: 255
Request:
{
"merchant_code": "04e17735ba374dcd898746c6ac8118e4",
"auth_token": "59ddb8dd71f8494485ff200f78bc4dba",
"username": "merchant.player2",
"sign": "20fbee96a0f436a6d8386b192a569a27bcc1c689"
}
Response:
{
"success": true,
"code": 0,
"detail": {
"id": 11216,
"role": 3,
"username": "o2p1632998628",
"company": 11198
}
}
Standard result:
success: false), this provides the error message. Please refer to Error List for details.| Game Code | Name |
|---|---|
| lobby | Game Lobby |
| Game Code | Game Tag | Name | RTP | Rank of last month | Released |
|---|---|---|---|---|---|
| football | 2 | Goal Win | 96% | New | 2026/04/22 |
| crash2 | 2 | Shadow Rush | 96% | New | 2026/03/16 |
| road | 1 | Ice Hop | 95% ~ 97% | New | 2025/11/10 |
| crash | 1 | Crash | 98.99% | 1 | 2022/6/30 |
| baccarat | 1 | Baccarat | 98.99% | 2 | 2024/12/26 |
| triple | 1 | Triple | 96.5% | 3 | 2022/6/30 |
| plinko | 1 | Plinko | 92.3% ~ 96.6% | 4 | 2022/6/30 |
| mine | 1 | Mine | 96.96% | 5 | 2022/6/30 |
| coin | 1 | Goal | 97% | 6 | 2022/6/30 |
| dice | 1 | Lucky Beer | 98% | - | 2022/6/30 |
| limbo | 1 | Limbo | 94% ~ 95% | - | 2022/6/30 |
| space-max | 2 | Space Max | 98.99% | - | 2023/5/15 |
| double | 1 | Double | 95% | - | 2022/6/30 |
| keno | 1 | Keno | 92% | - | 2022/6/30 |
| crypto | 1 | Crypto | 97% | - | 2022/6/30 |
| hilo | 1 | Hilo | 98% | - | 2022/6/30 |
| tower | 1 | Tower | 96% | - | 2022/6/30 |
| bingo | 1 | Bingo | 92% | - | 2023/3/1 |
| poker | 1 | Video Poker | 98.37% | - | 2023/4/1 |
| wheel | 1 | Wheel | 96% ~ 97% | - | 2023/6/30 |
| nine | 1 | Nine | 92% | - | 2023/10/4 |
| color | 1 | Color | 95% | - | 2024/1/3 |
| racing | 1 | Racing | 95% | - | 2024/1/26 |
| space | 1 | Space | 95% | - | 2024/8/8 |
| Game Code | Game Tag | Name | RTP | Rank of last month | Released |
|---|---|---|---|---|---|
| m-mine | 3 | Monster Mine | 96.96% | 1 | 2023/9/1 |
| m-plinko | 3 | Rock Plinko | 92.3% ~ 96.6% | 2 | 2023/9/1 |
| m-tower | 3 | Monster Tower | 96% | 3 | 2023/9/1 |
| m-fight | 3 | Monster Fight | 97% | 4 | 2023/9/1 |
| m-crypto | 3 | Monster Crypto | 97% | - | 2023/9/1 |
| m-triple | 3 | Monster Triple | 96.5% | - | 2023/9/1 |
| m-hilo | 3 | Monster HiLo | 98% | - | 2024/3/1 |
| m-dice | 3 | Monster Dice | 98% | - | 2024/3/1 |
| m-crash | 3 | Monster Crash | 98.99% | - | 2024/4/9 |
| Game Code | Game Tag | Name | RTP | Released |
|---|---|---|---|---|
| 3001 | 10 | Happy Farm | 95% | 2024/1/25 |
| 3002 | 10 | Opportunity 10 | 92% | 2024/1/25 |
| 3003 | 10 | Ultra 777 | 93% | 2024/1/25 |
| 3004 | 10 | Gem Bomb | 92% | 2024/1/25 |
| 3005 | 10 | Mad Scientist | 93% | 2024/1/25 |
| 3006 | 10 | Beach NiuNiu | 92% | 2024/1/25 |
| Game Code | Game Tag | Name | RTP | Released |
|---|---|---|---|---|
| 7001 | 30 | Molten Dragon | 94.04% | 2024/9/12 |
| 7002 | 30 | Magic Girl | 92% ~ 95% | 2024/9/12 |
| 7003 | 30 | Jungle Travel | 92% ~ 95% | 2024/9/12 |
| 7005 | 30 | Hash Tiger | 92% ~ 95% | 2026/6/18 |
| 7007 | 30 | Hash Rabbit | 92% ~ 95% | 2026/6/18 |
| 7008 | 30 | Pyramid Paws | 92% ~ 95% | 2026/9/3 |
| 7009 | 30 | Wild Fox | 92% ~ 95% | 2026/9/3 |
| Game Code | Game Tag | Name | RTP | Released |
|---|---|---|---|---|
| lottery_lobby | 20 | Lottery Lobby | 95% | 2025/12/15 |
| 5001 | 20 | Lotinha | 95% | 2025/12/15 |
| 5002 | 20 | Quininha | 95% | 2025/12/15 |
| 5003 | 20 | Seninha | 95% | 2025/12/15 |
| 5011 | 20 | 60s 5D | 95% | 2025/12/15 |
| 5012 | 20 | 300s 5D | 95% | 2025/12/15 |
| 5013 | 20 | 600s 5D | 95% | 2025/12/15 |
| 5016 | 20 | 60s PK10 | 95% | 2025/12/15 |
| 5017 | 20 | 300s PK10 | 95% | 2025/12/15 |
| 5018 | 20 | 600s PK10 | 95% | 2025/12/15 |
| 5021 | 20 | 60s K3 | 95% | 2025/12/15 |
| 5022 | 20 | 300s K3 | 95% | 2025/12/15 |
| 5023 | 20 | 600s K3 | 95% | 2025/12/15 |
| 5036 | 20 | 60s HK6 | 95% | 2025/12/15 |
| 5037 | 20 | 300s HK6 | 95% | 2025/12/15 |
| 5038 | 20 | 600s HK6 | 95% | 2025/12/15 |
| 5041 | 20 | 60s WinGo | 95% | 2025/12/15 |
| 5042 | 20 | 300s WinGo | 95% | 2025/12/15 |
| 5043 | 20 | 600s WinGo | 95% | 2025/12/15 |
| 5046 | 20 | Hash28 60s | 95% | 2025/12/15 |
| 5047 | 20 | Hash28 300s | 95% | 2025/12/15 |
| 5048 | 20 | Hash28 600s | 95% | 2025/12/15 |
| 5051 | 20 | VN North 60s | 95% | 2025/12/15 |
| 5052 | 20 | VN North 300s | 95% | 2025/12/15 |
| 5053 | 20 | VN North 600s | 95% | 2025/12/15 |
| 5056 | 20 | VN Central 60s | 95% | 2025/12/15 |
| 5057 | 20 | VN Central 300s | 95% | 2025/12/15 |
| 5058 | 20 | VN Central 600s | 95% | 2025/12/15 |
| 5061 | 20 | VN South 60s | 95% | 2025/12/15 |
| 5062 | 20 | VN South 300s | 95% | 2025/12/15 |
| 5063 | 20 | VN South 600s | 95% | 2025/12/15 |
| 5066 | 20 | SicBo 60s | 95% | 2025/12/15 |
| 5067 | 20 | SicBo 300s | 95% | 2025/12/15 |
| 5068 | 20 | SicBo 600s | 95% | 2025/12/15 |
| Code | Message | Description |
|---|---|---|
| 1 | InvalidSignature | Invalid signature |
| 2 | InvalidMerchantCode | Invalid merchant code |
| 3 | InvalidSecureKey | Invalid secure key |
| 4 | InvalidAuthToken | Invalid authentication token |
| 5 | InvalidGamePlatformId | Invalid game platform ID |
| 6 | InvalidUsername | Invalid username |
| 7 | InvalidPassword | Invalid password |
| 8 | DuplicateUsername | Duplicate username |
| 9 | InvalidExtraInfo | Invalid extra information |
| 10 | InvalidGamePlatformSettings | Invalid game platform settings |
| 11 | InvalidBetLimit | Invalid bet limit configuration |
| 12 | InvalidActionType | Invalid action type |
| 13 | InvalidAmount | Invalid amount |
| 14 | DuplicateExternalTransId | Duplicate external transaction ID |
| 15 | NoEnoughBalance | Insufficient balance |
| 16 | InvalidFromDateTime | Invalid start date/time |
| 17 | InvalidToDateTime | Invalid end date/time |
| 18 | InvalidExternalTransId | Invalid external transaction ID |
| 19 | SecureKeyNotAllowed | Secure key not allowed |
| 20 | BonusRequired | Bonus group is required |
| 21 | InvalidBonus | Invalid bonus group |
| 22 | InvalidRebate | Invalid rebate percentage |
| 23 | AccountDuplicated | Account username duplicated |
| 24 | SubAccountNotFound | Specified sub-account not found |
| 25 | InvalidParent | Invalid parent agent |
| 26 | RequestDataRequired | Request data is required |
| 27 | RequestTooFast | Request rate exceeded |
| 28 | TransactionIdRequired | Transaction ID or external transaction ID is required |
| 29 | PlayerNotFound | Player not found |
| 30 | InvalidGameCode | Invalid game code |
| 31 | BetNotFound | Bet not found |
Hide the internal server domain or IP from players.
Configure allowed IP addresses on your servers.
For the staging environment, it is necessary to add allowed IPs for visiting game front-end through the Back Office.
Any 32 characters (letters and numbers), provided via email.
Testing key: dd35aPO0bd186dc6ace6We2e0fb48s70
Any 32 characters (letters and numbers), provided via email.
Testing key: dd35aPO0bd186dc6ace6We2e0fb48s70
sign.sign key at the end, and then compute the SHA1 hash to obtain the signature.Suppose the sign key is SIGN_KEY_EXAMPLE, and we need to sign the following parameter object:
{
"b": 1.1,
"a": 1,
"d": "some string",
"e": "",
"c": true,
"sign": "abcdefg",
"g": {
"x": 1,
"y": 2
},
"f": null
}
The signing procedure is as follows:
Ignore fields without value, of object type, or named sign:
{
"b": 1.1,
"a": 1,
"d": "some string",
"c": true
}
Order params by key ascendingly:
{
"a": 1,
"b": 1.1,
"c": true,
"d": "some string"
}
Concatenate values in the sorted order and append the sign key:
11.1truesome stringSIGN_KEY_EXAMPLE
Perform SHA1 hash on the concatenated string to obtain the signature:
91bef33b208ba98ac2d889b9c4e996651ca58146
auth_token using merchant_code and secure_key.auth_token as a parameter when invoking any API endpoint.If client wants to use seamless mode of chain games, client has to implement webhooks described below, and provide us client’s host_url.
Sign algorithm is the same as described in Security Mode chapter.
We may send the same bet, payout or refund more than once. Client must deduplicate these requests, otherwise a player may be debited, paid or refunded more than once:
unique_id. unique_id only identifies a single call and must not be used to tell whether two requests are the same transactionHow to deduplicate: use "callback type (/bet, /payout, /refund) + game_code + bet_id" as the unique key of a transaction. The bet, payout and refund of the same bet are different transactions and must be handled separately.
bet_id alone: mini games, slots, lottery and scratch cards number their bet_id independently, so the same bet_id can appear in different productsround_id: in some games (e.g. crash) all players in the same round share the round IDis_success: true with the player's current balance and we will stop retryingQuery client-side player information.
| Name | Type | Description |
|---|---|---|
| unique_id | string | Unique ID for each transaction |
| timestamp | number | Unix timestamp (seconds) |
| merchant_code | string | Merchant code |
| username | string | Player username |
| sign | string | Signature |
{
"unique_id": "sampleId",
"timestamp": 1654752446,
"merchant_code": "testMerchant",
"username": "testPlayer",
"sign": "testSign"
}
| Name | Type | Description |
|---|---|---|
| is_success | boolean | Whether the operation succeeded, defaults to true |
| err_msg | string | Error message if failed |
| username | string | Player username |
| balance | number | Player balance |
| currency | string | Player currency |
{
"is_success": true,
"err_msg": "",
"username": "test",
"balance": 100,
"currency": "test"
}
Process a player bet.
| Name | Type | Description |
|---|---|---|
| unique_id | string | Unique ID for each transaction |
| timestamp | number | Unix timestamp (seconds) |
| merchant_code | string | Merchant code |
| username | string | Player username |
| amount | number | Bet amount |
| currency | string | Player currency |
| game_code | string | Game code |
| bet_id | number | Bet ID |
| round_id | string or number | Round number (currently string only for double game) |
| number | string | Updated bet content |
| sign | string | Signature |
number detail
| game | Type | Description |
|---|---|---|
| crash | string | sample: 1000 |
| double | string | sample: 1; 0 yellow, 1 green, 2 blue |
| plinko | string | sample: {"layer":8,"level":0}; level: 0 blue, 1 green, 2 red |
| keno | string | sample: {"number":"[1,2,3]","level":0}; level (risk): 0 low, 1 medium, 2 high |
| dice | string | sample: {"point":90,"game_type":1}; type 1 under, 2 over |
| triple | string | sample: {"position":[10,2,3],"level":0}, level (risk): 0 low, 1 medium, 2 high |
| bingo | string | sample: {"card":"[44,53,63,9,64,30,13,57,17,24,36,71,1,58,35,61,7,48,75,45,40,18,69,16]","count":45}; card: cards dealt to player; count: reveal cards count chosen by player |
| limbo | string | sample: {"point":2}; point: cashout point |
| crypto | string | sample: {}; constant |
| coin | string | sample: {"position":"[1]","type":1} for instant, {"type":2} for multiple; position: 1 head, 2 tail; type: 1 instant, 2 multiple |
| mine | string | sample: {"count":1} for normal bet or {"count":1,"position":"[0]"} for instant bet; count: how many ghosts; position: player's choice |
| tower | string | sample: {"count":1} for normal bet or {"count":1,"position":"[0]"} for instant bet; count: bombs per floor; position: player's choice at each floor |
| hilo | string | sample: {}; constant |
| poker | string | sample: {"poker_init":"[49,18,31,7,11]"} initial hand, 0~51 ♠♥♣♦ |
| wheel | string | sample: {"level":1,"segments":20}, level: difficulty; segments: player's choice |
| nine | string | sample: {} for normal bet or {"position":"[0]"} for instant bet; position: the line player cuts |
| 3001 | string | sample: {"content":[49,49,20,"顺",15,51,22,9,49,44,3,46,4],"lucky_draw":[6,8,16,18,66,68,88,"顺","发"]}; scratch card content and symbols that are counted as hits |
| 3002 | string | sample: {"content":[15,28,24,51,77,47,75,12,29,59,36,91,6,9,88,22,41,12,26,73,90,33,55,94,94,64,48,86,55,95,85,14,66,13,89,72,69,12,95,66,16,58,90,96,14,24,74,62,41,62,30,38],"lucky_draw":46}; scratch card content and symbol which is counted as hit |
| 3003 | string | sample: {"content":[220,158,398,519,638,514,893,238,602,215,830,126,780,524,66,758,350,809,396,192,894,667,107,694,234,535,159,226,917,912,85,194,344,740,506,378,327,707,410,684,466,246,147,840,605,0,24,717,722],"lucky_draw":[0,7,77,777]}; scratch card content and symbols that are counted as hits |
| 3004 | string | sample: {"content":[2,7,1,8,5,4,0,4,7],"lucky_draw":[]}; scratch card content, only 7 are considered for hit patterns; lucky_draw is always empty |
| 3005 | string | sample: {"content":[1,0,0,0,0,0,0,0,0,0,0,0],"lucky_draw":[1]}; scratch card content, 1 means hit; lucky_draw is always one element of 1 |
{
"unique_id": "testId",
"timestamp": 1654752446,
"merchant_code": "testMerchant",
"username": "testPlayer",
"amount": 30,
"currency": "USD",
"game_code": "double",
"bet_id": 99,
"round_id": "testRound",
"number": "white",
"sign": "testSign"
}
| Name | Type | Description |
|---|---|---|
| is_success | boolean | Whether the bet succeeded, defaults to true |
| err_msg | string | Error message if failed |
| balance | number | Player balance |
| currency | string | Player currency |
| need_refund | boolean | if the failed bet needs refund, default true |
Refund Control
is_success false), client can add a field need_refund, which is optional and defaults to true; the effects are as followsneed_refund false: we don't invoke client's refund webhook for this failed betneed_refund true: we invoke client's refund webhook for this failed betneed_refund is not in response: we invoke client's refund webhook for this failed bet, like the behavior before we introduce this fieldis_success true), client don't have to specify this field in response{
"is_success": true,
"err_msg": "",
"balance": 100,
"currency": "test"
}
This API will be invoked when a bet is settled, regardless of win or lose.
| Name | Type | Description |
|---|---|---|
| unique_id | string | Unique ID for each transaction |
| timestamp | number | Unix timestamp (seconds) |
| merchant_code | string | Merchant code |
| username | string | Player username |
| amount | number | Payout amount |
| currency | string | Player currency |
| game_code | string | Game code |
| bet_id | number | Bet ID |
| round_id | string or number | Round number (currently string only for double game) |
| number | string | Updated bet content |
| is_free_spin | boolean | (Optional) Only sent for Free Spin promotional payouts with value true. Normal bets will NOT include this field. |
| sign | string | Signature |
【Important Note】About the
is_free_spinfield:
- Normal Bets: This field will never be included (the key will not exist at all) in payout requests for regular real-money spins or Buy Feature spins, ensuring 100% backward compatibility without affecting any existing operator integrations.
- Free Spin Promotional Bets: This field is attached as
"is_free_spin": trueonly when a payout is generated from a Free Spin promotional campaign. Operators can use this flag to credit winnings into either the real-money cash balance or a bonus wallet with wagering requirements.
number detail
| game | Type | Description |
|---|---|---|
| crash | string | sample: 1.2 |
| double | string | sample: 1; 0 yellow, 1 green, 2 blue |
| plinko | string | sample: {"layer":8,"level":0}; level: 0 blue, 1 green, 2 red |
| keno | string | sample: {"number":[1,2,3],"level":0}; level (risk): 0 low, 1 medium, 2 high |
| dice | string | sample: 90 |
| triple | string | sample: {"position":[10,2,3],"level":0}, level (risk): 0 low, 1 medium, 2 high |
| bingo | string | sample: [58,22,65,39,5,17,68,18,29,38,47,46,45,48,11,41,74,64,20,51,73,63,21,57] |
| limbo | string | sample: 2 |
| crypto | string | always an empty string |
| coin | string | sample: 1 or "[1,1]" (instant or multiple); 1 head, 2 tail |
| mine | string | sample: [0] |
| tower | string | sample: [0] |
| hilo | string | sample: [0,2,3]; 0 skip, 1 equal, 2 less, 3 larger |
| poker | string | sample: [ 32, 44, 26, 39, 2 ] |
| wheel | string | always an empty string |
| nine | string | sample: [0] |
| 3001 | string | sample: {"content":[49,49,20,"顺",15,51,22,9,49,44,3,46,4],"lucky_draw":[6,8,16,18,66,68,88,"顺","发"]}; scratch card content and symbols that are counted as hits |
| 3002 | string | sample: {"content":[15,28,24,51,77,47,75,12,29,59,36,91,6,9,88,22,41,12,26,73,90,33,55,94,94,64,48,86,55,95,85,14,66,13,89,72,69,12,95,66,16,58,90,96,14,24,74,62,41,62,30,38],"lucky_draw":46}; scratch card content and symbol which is counted as hit |
| 3003 | string | sample: {"content":[220,158,398,519,638,514,893,238,602,215,830,126,780,524,66,758,350,809,396,192,894,667,107,694,234,535,159,226,917,912,85,194,344,740,506,378,327,707,410,684,466,246,147,840,605,0,24,717,722],"lucky_draw":[0,7,77,777]}; scratch card content and symbols that are counted as hits |
| 3004 | string | sample: {"content":[2,7,1,8,5,4,0,4,7],"lucky_draw":[]}; scratch card content, only 7 are considered for hit patterns; lucky_draw is always empty |
| 3005 | string | sample: {"content":[1,0,0,0,0,0,0,0,0,0,0,0],"lucky_draw":[1]}; scratch card content, 1 means hit; lucky_draw is always one element of 1 |
{
"unique_id": "testId",
"timestamp": 1654752446,
"merchant_code": "testMerchant",
"username": "testPlayer",
"amount": 60,
"currency": "USD",
"game_code": "double",
"bet_id": 99,
"round_id": "testRound",
"number": "white",
"sign": "testSign"
}
| Name | Type | Description |
|---|---|---|
| is_success | boolean | Whether the bet succeeded, defaults to true |
| err_msg | string | Error message if failed |
| balance | number | Player balance |
| currency | string | Player currency |
{
"is_success": true,
"err_msg": "",
"balance": 100,
"currency": "test"
}
Client needs to check bet_id, round_id, and verify whether amount matches the original bet amount.
Important Note:
For all failed bets, we will invoke the refund endpoint. Client needs to verify whether player balance was previously deducted for these failed bets; if not, client's refund webhook should NOT add the bet amount back to player balance.
| Name | Type | Description |
|---|---|---|
| unique_id | string | Unique ID for each transaction |
| timestamp | number | Unix timestamp (seconds) |
| merchant_code | string | Merchant code |
| username | string | Player username |
| amount | number | Refund amount |
| currency | string | Player currency |
| game_code | string | Game code |
| bet_id | number | Bet ID |
| round_id | string or number | Round number (currently string only for double game) |
| type | integer | 1: refund, 2: payout failed, 3: issue cancel |
| sign | string | Signature |
{
"unique_id": "testId",
"timestamp": 1654752446,
"merchant_code": "testMerchant",
"username": "testPlayer",
"amount": 30,
"currency": "USD",
"game_code": "double",
"bet_id": 99,
"round_id": "testRound",
"type": 1,
"sign": "testSign"
}
| Name | Type | Description |
|---|---|---|
| is_success | boolean | Whether the bet succeeded, defaults to true |
| err_msg | string | Error message if failed |
| balance | number | Player balance |
| currency | string | Player currency |
{
"is_success": true,
"err_msg": "",
"balance": 100,
"currency": "test"
}
Generate token by merchant code and secure key
| merchant_code required | string |
| secure_key required | string |
| sign required | string signatrue of request payload, created by rule written in Security Mode |
{- "merchant_code": "string",
- "secure_key": "string",
- "sign": "string"
}{- "success": true,
- "code": 0,
- "detail": {
- "auth_token": "8f5a3598a8c44f46b41d0a5a8fc3cee0",
- "timeout": 7198
}
}create player account
| auth_token required | string 32 characters from authentication API |
| merchant_code required | string |
| username required | string [ 6 .. 100 ] characters only letter, number, hyphen, underscore |
| sign required | string signatrue of request payload, created by rule written in Security Mode |
{- "auth_token": "stringstringstringstringstringst",
- "merchant_code": "string",
- "username": "string",
- "sign": "string"
}{- "success": true,
- "code": 0,
- "detail": {
- "id": 11354,
- "role": 3,
- "username": "o2p1633071566",
- "company": 11336
}
}query player detail
| auth_token required | string 32 characters from authentication API |
| merchant_code required | string |
| username required | string [ 6 .. 100 ] characters only letter, number, hyphen, underscore |
| sign required | string signatrue of request payload, created by rule written in Security Mode |
{- "success": true,
- "code": 0,
- "detail": {
- "id": 11354,
- "role": 3,
- "username": "o2p1633071566",
- "company": 11336
}
}kick player
| auth_token required | string 32 characters from authentication API |
| merchant_code required | string |
| username required | string [ 6 .. 100 ] characters only letter, number, hyphen, underscore |
| sign required | string signatrue of request payload, created by rule written in Security Mode |
{- "auth_token": "stringstringstringstringstringst",
- "merchant_code": "string",
- "username": "string",
- "sign": "string"
}{- "success": true,
- "code": 0,
- "detail": "ok"
}block player
| auth_token required | string 32 characters from authentication API |
| merchant_code required | string |
| username required | string [ 6 .. 100 ] characters only letter, number, hyphen, underscore |
| sign required | string signatrue of request payload, created by rule written in Security Mode |
{- "auth_token": "stringstringstringstringstringst",
- "merchant_code": "string",
- "username": "string",
- "sign": "string"
}{- "success": true,
- "code": 0,
- "detail": {
- "blocked": true
}
}unblock player
| auth_token required | string 32 characters from authentication API |
| merchant_code required | string |
| username required | string [ 6 .. 100 ] characters only letter, number, hyphen, underscore |
| sign required | string signatrue of request payload, created by rule written in Security Mode |
{- "auth_token": "stringstringstringstringstringst",
- "merchant_code": "string",
- "username": "string",
- "sign": "string"
}{- "success": true,
- "code": 0,
- "detail": {
- "blocked": false
}
}launch game
| auth_token required | string 32 characters from authentication API | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| merchant_code required | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| game_code required | string Values of Game Code in Game List section If game code is passed with value | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| username required | string [ 6 .. 100 ] characters only letter, number, hyphen, underscore | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| language required | string Enum: "en" "zh" "vi" "th" "id" "pt" "ar" "de" "es-MX" "es" "fr" "hu" "it" "ro" "ko" "ja" "tr" "ru"
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| sign required | string signatrue of request payload, created by rule written in Security Mode | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| home_link | string If provided, game UI will display a button to navigate user to this url | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| trial | boolean whether launch trial game or not
|
{- "success": true,
- "code": 0,
- "detail": {
- "game_url": "test"
}
}query mini game history stream (recommended)
| auth_token required | string 32 characters from authentication API |
| merchant_code required | string |
| from required | string start of bet time range, format |
| to required | string end of bet time range, format |
| sign required | string signatrue of request payload, created by rule written in Security Mode |
| game_code | string Values of Game Code of Classic series and Monster series in Game List section |
| time_type | integer Enum: 1 2 time type for query filter; default to 1
|
| last_bet_id | string 指定要返回 ID 比这个值更大的记录 |
{- "success": true,
- "code": 0,
- "time": 1708570865824,
- "rid": 1923,
- "cost": 10,
- "detail": {
- "has_next": false,
- "total_rows_current_page": 2,
- "game_history": [
- {
- "uniqueid": "crash_1000000775",
- "username": "o2p1708570800",
- "game_code": "crash",
- "game_tag": 1,
- "bet_time": 1708570803,
- "payout_time": 1708570803,
- "game_finish_time": 1708570803,
- "bet_amount": 100,
- "payout_amount": 0,
- "status": 5,
- "bet_details": {
- "period": "10516",
- "cashout": 999,
- "cashout_auto": 1000,
- "try_cashout": true
}, - "result_details": {
- "result_point": 3.31,
- "result_seed": "c9ac9fe477475e71c119c4db8777acfacb9378da627afc051e7a44c8b029e083"
}
}, - {
- "uniqueid": "crash_1000000811",
- "username": "o2p1708570800",
- "game_code": "crash",
- "game_tag": 1,
- "bet_time": 1708570855,
- "payout_time": 1708570855,
- "game_finish_time": 1708570855,
- "bet_amount": 100,
- "payout_amount": 120,
- "status": 4,
- "bet_details": {
- "period": "10517",
- "cashout": 1.2,
- "cashout_auto": 1.2,
- "try_cashout": false
}, - "result_details": {
- "result_point": 3.89,
- "result_seed": "7b8d6cd658b0fcb4c8507184844c6b395c14fa722b408266cc6f717a15826d5c"
}
}
]
}
}query scratch game history stream (recommended)
| auth_token required | string 32 characters from authentication API |
| merchant_code required | string |
| from required | string start of bet time range, format |
| to required | string end of bet time range, format |
| sign required | string signatrue of request payload, created by rule written in Security Mode |
| game_code | string Values of Game Code of Scratch series in Game List section |
| time_type | integer Enum: 1 2 time type for query filter; default to 1
|
| last_bet_id | string 指定要返回 ID 比这个值更大的记录 |
{- "success": true,
- "code": 0,
- "time": 1708572889906,
- "rid": 2173,
- "cost": 11,
- "detail": {
- "has_next": false,
- "total_rows_current_page": 15,
- "game_history": [
- {
- "uniqueid": "3001_100943",
- "username": "o2p1708572807",
- "game_code": "3001",
- "game_tag": 10,
- "bet_time": 1708572859,
- "payout_time": 1708572859,
- "game_finish_time": 1708572859,
- "bet_amount": 100,
- "payout_amount": 0,
- "status": 3,
- "bet_details": {
- "content": [
- 38,
- 71,
- 68,
- 58,
- 4,
- 39,
- 57,
- 32,
- 33,
- 80,
- 70,
- 7,
- 7
], - "lucky_draw": [
- 6,
- 8,
- 16,
- 18,
- 66,
- 68,
- 88,
- "顺",
- "发"
]
}, - "result_details": {
- "award": [
- [
- 8,
- 10000,
- 50000
], - [
- 7,
- 1000,
- 5000
], - [
- 6,
- 100,
- 500
], - [
- 5,
- 10,
- 50
], - [
- 4,
- 5,
- 25
], - [
- 3,
- 3,
- 3
], - [
- 2,
- 1.2,
- 1.2
], - [
- 1,
- 0,
- 0
], - [
- 0,
- 0,
- 0
]
]
}
}, - {
- "uniqueid": "3001_100944",
- "username": "o2p1708572807",
- "game_code": "3001",
- "game_tag": 10,
- "bet_time": 1708572859,
- "payout_time": 1708572859,
- "game_finish_time": 1708572859,
- "bet_amount": 100,
- "payout_amount": 120,
- "status": 3,
- "bet_details": {
- "content": [
- 66,
- 58,
- 78,
- 24,
- 20,
- 65,
- 9,
- 34,
- 74,
- 26,
- 21,
- 16,
- 7
], - "lucky_draw": [
- 6,
- 8,
- 16,
- 18,
- 66,
- 68,
- 88,
- "顺",
- "发"
]
}, - "result_details": {
- "award": [
- [
- 8,
- 10000,
- 50000
], - [
- 7,
- 1000,
- 5000
], - [
- 6,
- 100,
- 500
], - [
- 5,
- 10,
- 50
], - [
- 4,
- 5,
- 25
], - [
- 3,
- 3,
- 3
], - [
- 2,
- 1.2,
- 1.2
], - [
- 1,
- 0,
- 0
], - [
- 0,
- 0,
- 0
]
]
}
}, - {
- "uniqueid": "3001_100945",
- "username": "o2p1708572807",
- "game_code": "3001",
- "game_tag": 10,
- "bet_time": 1708572859,
- "payout_time": 1708572859,
- "game_finish_time": 1708572859,
- "bet_amount": 100,
- "payout_amount": 0,
- "status": 3,
- "bet_details": {
- "content": [
- 50,
- "顺",
- 23,
- 30,
- 23,
- 61,
- 63,
- 46,
- 87,
- 26,
- 65,
- 51,
- 9
], - "lucky_draw": [
- 6,
- 8,
- 16,
- 18,
- 66,
- 68,
- 88,
- "顺",
- "发"
]
}, - "result_details": {
- "award": [
- [
- 8,
- 10000,
- 50000
], - [
- 7,
- 1000,
- 5000
], - [
- 6,
- 100,
- 500
], - [
- 5,
- 10,
- 50
], - [
- 4,
- 5,
- 25
], - [
- 3,
- 3,
- 3
], - [
- 2,
- 1.2,
- 1.2
], - [
- 1,
- 0,
- 0
], - [
- 0,
- 0,
- 0
]
]
}
}, - {
- "uniqueid": "3001_100946",
- "username": "o2p1708572807",
- "game_code": "3001",
- "game_tag": 10,
- "bet_time": 1708572859,
- "payout_time": 1708572859,
- "game_finish_time": 1708572859,
- "bet_amount": 100,
- "payout_amount": 0,
- "status": 3,
- "bet_details": {
- "content": [
- 34,
- 15,
- 6,
- 69,
- 22,
- 81,
- 57,
- 38,
- 59,
- 67,
- 50,
- 3,
- 7
], - "lucky_draw": [
- 6,
- 8,
- 16,
- 18,
- 66,
- 68,
- 88,
- "顺",
- "发"
]
}, - "result_details": {
- "award": [
- [
- 8,
- 10000,
- 50000
], - [
- 7,
- 1000,
- 5000
], - [
- 6,
- 100,
- 500
], - [
- 5,
- 10,
- 50
], - [
- 4,
- 5,
- 25
], - [
- 3,
- 3,
- 3
], - [
- 2,
- 1.2,
- 1.2
], - [
- 1,
- 0,
- 0
], - [
- 0,
- 0,
- 0
]
]
}
}
]
}
}query slot game history stream (recommended)
| auth_token required | string 32 characters from authentication API |
| merchant_code required | string |
| from required | string start of bet time range, format |
| to required | string end of bet time range, format |
| sign required | string signatrue of request payload, created by rule written in Security Mode |
| game_code | string Values of Game Code of Slot series in Game List section |
| time_type | integer Enum: 1 2 time type for query filter; default to 1
|
| last_bet_id | string 指定要返回 ID 比这个值更大的记录 |
{- "success": true,
- "code": 0,
- "time": 1728878471091,
- "rid": 7801,
- "cost": 33,
- "detail": {
- "has_next": false,
- "total_rows_current_page": 4,
- "game_history": [
- {
- "uniqueid": "7001_100879",
- "username": "o2p1728878370",
- "game_code": "7001",
- "game_tag": 30,
- "bet_time": 1728878467,
- "payout_time": 1728878467,
- "game_finish_time": 1728878467,
- "bet_amount": 100,
- "payout_amount": 0,
- "status": 3,
- "bet_details": { },
- "result_details": {
- "odds": 0,
- "content": [
- 6,
- 9,
- 12
]
}
}, - {
- "uniqueid": "7001_100880",
- "username": "o2p1728878370",
- "game_code": "7001",
- "game_tag": 30,
- "bet_time": 1728878467,
- "payout_time": 1728878467,
- "game_finish_time": 1728878467,
- "bet_amount": 100,
- "payout_amount": 0,
- "status": 3,
- "bet_details": { },
- "result_details": {
- "odds": 0,
- "content": [
- 1,
- 6,
- 5
]
}
}, - {
- "uniqueid": "7001_100881",
- "username": "o2p1728878370",
- "game_code": "7001",
- "game_tag": 30,
- "bet_time": 1728878467,
- "payout_time": 1728878467,
- "game_finish_time": 1728878467,
- "bet_amount": 100,
- "payout_amount": 0,
- "status": 3,
- "bet_details": { },
- "result_details": {
- "odds": 0,
- "content": [
- 12,
- 6,
- 0
]
}
}, - {
- "uniqueid": "7001_100882",
- "username": "o2p1728878370",
- "game_code": "7001",
- "game_tag": 30,
- "bet_time": 1728878467,
- "payout_time": 1728878467,
- "game_finish_time": 1728878467,
- "bet_amount": 100,
- "payout_amount": 0,
- "status": 3,
- "bet_details": { },
- "result_details": {
- "odds": 0,
- "content": [
- 9,
- 3,
- 1
]
}
}
]
}
}query slot game result replay url
| auth_token required | string 32 characters from authentication API |
| merchant_code required | string |
| bet_id required | string Example: bet_id=7001_1234567 The bet unique identifier (requires game code prefix, corresponding to uniqueid from query_history_stream, e.g. 7001_1234567) |
| sign required | string signatrue of request payload, created by rule written in Security Mode |
{- "success": true,
- "code": 0,
- "time": 1728878471091,
- "rid": 7801,
- "cost": 15,
}query lottery game history stream (recommended)
| auth_token required | string 32 characters from authentication API |
| merchant_code required | string |
| from required | string start of bet time range, format |
| to required | string end of bet time range, format |
| sign required | string signatrue of request payload, created by rule written in Security Mode |
| game_code | string Values of Game Code of Lottery series in Game List section |
| time_type | integer Enum: 1 2 time type for query filter; default to 1
|
| last_bet_id | string 指定要返回 ID 比这个值更大的记录 |
{- "success": true,
- "code": 0,
- "time": 1779773819053,
- "rid": 439,
- "cost": 31,
- "detail": {
- "has_next": false,
- "total_rows_current_page": 9,
- "game_history": [
- {
- "uniqueid": "5026_1000726",
- "username": "o2p1779773790",
- "game_code": "5026",
- "game_tag": 20,
- "bet_time": 1779773815,
- "payout_time": 1779773815,
- "game_finish_time": 1779773815,
- "bet_amount": 1,
- "payout_amount": 0,
- "status": 3,
- "bet_details": {
- "odds_rule": {
- "$": 1.9
}, - "number": "大",
- "period": "202605260817"
}, - "result_details": {
- "opencode": "01|02|03|04|05",
- "bet_shot": null
}
}, - {
- "uniqueid": "5026_1000727",
- "username": "o2p1779773790",
- "game_code": "5026",
- "game_tag": 20,
- "bet_time": 1779773815,
- "payout_time": 1779773815,
- "game_finish_time": 1779773815,
- "bet_amount": 1,
- "payout_amount": 1.9,
- "status": 3,
- "bet_details": {
- "odds_rule": {
- "$": 1.9
}, - "number": "小",
- "period": "202605260817"
}, - "result_details": {
- "opencode": "01|02|03|04|05",
- "bet_shot": "$"
}
}, - {
- "uniqueid": "5026_1000728",
- "username": "o2p1779773790",
- "game_code": "5026",
- "game_tag": 20,
- "bet_time": 1779773815,
- "payout_time": 1779773815,
- "game_finish_time": 1779773815,
- "bet_amount": 1,
- "payout_amount": 1.9,
- "status": 3,
- "bet_details": {
- "odds_rule": {
- "$": 1.9
}, - "number": "单",
- "period": "202605260817"
}, - "result_details": {
- "opencode": "01|02|03|04|05",
- "bet_shot": "$"
}
}, - {
- "uniqueid": "5026_1000729",
- "username": "o2p1779773790",
- "game_code": "5026",
- "game_tag": 20,
- "bet_time": 1779773815,
- "payout_time": 1779773815,
- "game_finish_time": 1779773815,
- "bet_amount": 1,
- "payout_amount": 1.9,
- "status": 3,
- "bet_details": {
- "odds_rule": {
- "$": 1.9
}, - "number": "双",
- "period": "202605260817"
}, - "result_details": {
- "opencode": "01|02|03|04|05",
- "bet_shot": "$"
}
}, - {
- "uniqueid": "5026_1000730",
- "username": "o2p1779773790",
- "game_code": "5026",
- "game_tag": 20,
- "bet_time": 1779773815,
- "payout_time": 1779773815,
- "game_finish_time": 1779773815,
- "bet_amount": 1,
- "payout_amount": 0,
- "status": 3,
- "bet_details": {
- "odds_rule": {
- "$": 10.45
}, - "number": "11",
- "period": "202605260817"
}, - "result_details": {
- "opencode": "01|02|03|04|05",
- "bet_shot": null
}
}, - {
- "uniqueid": "5026_1000731",
- "username": "o2p1779773790",
- "game_code": "5026",
- "game_tag": 20,
- "bet_time": 1779773815,
- "payout_time": 1779773815,
- "game_finish_time": 1779773815,
- "bet_amount": 1,
- "payout_amount": 0,
- "status": 3,
- "bet_details": {
- "odds_rule": {
- "$": 1.9
}, - "number": "大",
- "period": "202605260817"
}, - "result_details": {
- "opencode": "01|02|03|04|05",
- "bet_shot": null
}
}, - {
- "uniqueid": "5026_1000732",
- "username": "o2p1779773790",
- "game_code": "5026",
- "game_tag": 20,
- "bet_time": 1779773815,
- "payout_time": 1779773815,
- "game_finish_time": 1779773815,
- "bet_amount": 1,
- "payout_amount": 0,
- "status": 3,
- "bet_details": {
- "odds_rule": {
- "$": 1.938
}, - "number": "双",
- "period": "202605260817"
}, - "result_details": {
- "opencode": "01|02|03|04|05",
- "bet_shot": null
}
}, - {
- "uniqueid": "5026_1000733",
- "username": "o2p1779773790",
- "game_code": "5026",
- "game_tag": 20,
- "bet_time": 1779773815,
- "payout_time": 1779773815,
- "game_finish_time": 1779773815,
- "bet_amount": 1,
- "payout_amount": 0,
- "status": 3,
- "bet_details": {
- "odds_rule": {
- "$": 1.9
}, - "number": "龙",
- "period": "202605260817"
}, - "result_details": {
- "opencode": "01|02|03|04|05",
- "bet_shot": null
}
}, - {
- "uniqueid": "5026_1000734",
- "username": "o2p1779773790",
- "game_code": "5026",
- "game_tag": 20,
- "bet_time": 1779773815,
- "payout_time": 1779773815,
- "game_finish_time": 1779773815,
- "bet_amount": 1,
- "payout_amount": 1.9,
- "status": 3,
- "bet_details": {
- "odds_rule": {
- "$": 1.9
}, - "number": "虎",
- "period": "202605260817"
}, - "result_details": {
- "opencode": "01|02|03|04|05",
- "bet_shot": "$"
}
}
]
}
}