Game Open API (Seamless) (2.1.0)

Download OpenAPI specification:Download

Call API Mode

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: Boolean, indicates whether the action succeeded. If false, the "message" field provides error details.
  • code: Result code, only for backward compatibility.
  • message: string, if the operation fails (success: false), this provides the error message. Please refer to Error List for details.
  • detail: Response payload details depending on the specific API endpoint.

Game List

  • Updated monthly based on popularity

Lobby

Game Code Name
lobby Game Lobby

Classic

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

Monster

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

Scratch

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

Slot

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

Lottery

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

Error List

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

Security Mode

Server Domain or IP

Hide the internal server domain or IP from players.

IP Whitelist

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.

Merchant Code and Secure Key

Any 32 characters (letters and numbers), provided via email.

Testing key: dd35aPO0bd186dc6ace6We2e0fb48s70

Sign Key

Any 32 characters (letters and numbers), provided via email.

Testing key: dd35aPO0bd186dc6ace6We2e0fb48s70

Signature

  1. Always use UTF-8 encoding.
  2. Ignore empty fields, fields with value of object type, or fields named sign.
  3. Sort all parameter names in alphabetical (ascending) order.
  4. Concatenate all non-empty values into a single string (values only, without keys), append the sign key at the end, and then compute the SHA1 hash to obtain the signature.

Signature Example:

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:

  1. Ignore fields without value, of object type, or named sign:

    {
      "b": 1.1,
      "a": 1,
      "d": "some string",
      "c": true
    }
    
  2. Order params by key ascendingly:

    {
      "a": 1,
      "b": 1.1,
      "c": true,
      "d": "some string"
    }
    
  3. Concatenate values in the sorted order and append the sign key:

    11.1truesome stringSIGN_KEY_EXAMPLE
    
  4. Perform SHA1 hash on the concatenated string to obtain the signature:

    91bef33b208ba98ac2d889b9c4e996651ca58146
    

Authentication

  • Retrieve auth_token using merchant_code and secure_key.
  • Include auth_token as a parameter when invoking any API endpoint.

Client Webhook

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.

Duplicate requests and deduplication (important)

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:

  • Payout and refund are retried automatically on network errors, timeouts or non-2xx responses, up to 2 more times, about 1 hour apart
  • A payout or refund callback that has never succeeded can be resent manually from the back office (bet callbacks are never resent). Each callback can be resent manually only once; after that it cannot be resent again, and the automatic retries stop
  • So the same payout or refund may arrive up to 4 times (first attempt + 2 automatic retries + 1 manual resend)
  • Each request carries a different unique_id. unique_id only identifies a single call and must not be used to tell whether two requests are the same transaction

How 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.

  • Do not use bet_id alone: mini games, slots, lottery and scratch cards number their bet_id independently, so the same bet_id can appear in different products
  • Do not use round_id: in some games (e.g. crash) all players in the same round share the round ID
  • When a request has already been processed, do not change the balance again; return is_success: true with the player's current balance and we will stop retrying

Get player information

Query client-side player information.

URL: /{host_url}/player_summary

Method: POST

Body

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"
}

Response

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"
}

Bet

Process a player bet.

URL: /{host_url}/bet

Method: POST

Body

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"
}

Response

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

  1. If client responds with failed bet (is_success false), client can add a field need_refund, which is optional and defaults to true; the effects are as follows
    • need_refund false: we don't invoke client's refund webhook for this failed bet
    • need_refund true: we invoke client's refund webhook for this failed bet
    • need_refund is not in response: we invoke client's refund webhook for this failed bet, like the behavior before we introduce this field
  2. If client responds with successful bet (is_success true), client don't have to specify this field in response
{
  "is_success": true,
  "err_msg": "",
  "balance": 100,
  "currency": "test"
}

Payout

This API will be invoked when a bet is settled, regardless of win or lose.

URL: /{host_url}/payout

Method: POST

Body

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_spin field:

  • 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": true only 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"
}

Response

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"
}

Return a betting

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.

URL: /{host_url}/refund

Method: POST

Body

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"
}

Response

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"
}

Authentication

Generate Token

Generate token by merchant code and secure key

  • if timeout less than 600, will generate new auth token and refresh timeout
Request Body schema: application/json
merchant_code
required
string
secure_key
required
string
sign
required
string

signatrue of request payload, created by rule written in Security Mode

Responses

Request samples

Content type
application/json
{
  • "merchant_code": "string",
  • "secure_key": "string",
  • "sign": "string"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "code": 0,
  • "detail": {
    }
}

Player

Create player

create player account

Request Body schema: application/json
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

Responses

Request samples

Content type
application/json
{
  • "auth_token": "stringstringstringstringstringst",
  • "merchant_code": "string",
  • "username": "string",
  • "sign": "string"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "code": 0,
  • "detail": {
    }
}

Query Player

query player detail

query Parameters
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

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "code": 0,
  • "detail": {
    }
}

Kick player

kick player

Request Body schema: application/json
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

Responses

Request samples

Content type
application/json
{
  • "auth_token": "stringstringstringstringstringst",
  • "merchant_code": "string",
  • "username": "string",
  • "sign": "string"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "code": 0,
  • "detail": "ok"
}

Block player

block player

Request Body schema: application/json
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

Responses

Request samples

Content type
application/json
{
  • "auth_token": "stringstringstringstringstringst",
  • "merchant_code": "string",
  • "username": "string",
  • "sign": "string"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "code": 0,
  • "detail": {
    }
}

Unblock player

unblock player

Request Body schema: application/json
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

Responses

Request samples

Content type
application/json
{
  • "auth_token": "stringstringstringstringstringst",
  • "merchant_code": "string",
  • "username": "string",
  • "sign": "string"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "code": 0,
  • "detail": {
    }
}

Chain

Launch Game

launch game

query Parameters
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 lobby, the url will launch game lobby

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"
Value Language mini Scratch slot lottery
en English o o o o
zh Simplified Chinese o o o o
vi Vietnamese o o
th Thai o o (not available to 3001) o
id Indonesian o o (not available to 3001) o
pt Portuguese o o (not available to 3001) o
ar Arabic o o
de German o o
es-MX Mexican Spanish o o
es Spanish o o
fr French o o
hu Hungarian o o
it Italian o o
ro Romanian o o
ko Korean o o (not available to 3001) o
ja Japanese o o (not available to 3001) o
tr Turkish o o (not available to 3001) o
ru Russian o o
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

  • if true, will launch trial game
  • if not passed or false, will launch normal game
  • player in trial game is different from original player, and will have 2000 trial credit which cannot be used in transfer; trial game bet history is not provided in open API

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "code": 0,
  • "detail": {
    }
}

Query Mini Game History Stream

query mini game history stream (recommended)

  • Gap between requests has to be more than 3s
    • Only accepts query of history within one month
    • Each query returns at most 10000 records
    • Records in response are sorted by bet_time in ascending order, i.e., oldest records is the first one
    • uniqueid field of the last record can be passed to last_bet_id query parameter to query next page
query Parameters
auth_token
required
string 32 characters

from authentication API

merchant_code
required
string
from
required
string

start of bet time range, format YYYYMMDDHHmmss, timezone is UTC+8

to
required
string

end of bet time range, format YYYYMMDDHHmmss, timezone is UTC+8

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

  • 1: bet_time
  • 2: payout_time
last_bet_id
string

指定要返回 ID 比这个值更大的记录

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "code": 0,
  • "time": 1708570865824,
  • "rid": 1923,
  • "cost": 10,
  • "detail": {
    }
}

Scratch

Query Scratch Game History Stream

query scratch game history stream (recommended)

  • Gap between requests has to be more than 3s
    • Only accepts query of history within one month
    • Each query returns at most 10000 records
    • Records in response are sorted by bet_time in ascending order, i.e., oldest records is the first one
    • uniqueid field of the last record can be passed to last_bet_id query parameter to query next page
query Parameters
auth_token
required
string 32 characters

from authentication API

merchant_code
required
string
from
required
string

start of bet time range, format YYYYMMDDHHmmss, timezone is UTC+8

to
required
string

end of bet time range, format YYYYMMDDHHmmss, timezone is UTC+8

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

  • 1: bet_time
  • 2: payout_time
last_bet_id
string

指定要返回 ID 比这个值更大的记录

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "code": 0,
  • "time": 1708572889906,
  • "rid": 2173,
  • "cost": 11,
  • "detail": {
    }
}

Slot

Query Slot Game History Stream

query slot game history stream (recommended)

  • Gap between requests has to be more than 3s
    • Only accepts query of history within one month
    • Each query returns at most 10000 records
    • Records in response are sorted by bet_time in ascending order, i.e., oldest records is the first one
    • uniqueid field of the last record can be passed to last_bet_id query parameter to query next page
query Parameters
auth_token
required
string 32 characters

from authentication API

merchant_code
required
string
from
required
string

start of bet time range, format YYYYMMDDHHmmss, timezone is UTC+8

to
required
string

end of bet time range, format YYYYMMDDHHmmss, timezone is UTC+8

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

  • 1: bet_time
  • 2: payout_time
last_bet_id
string

指定要返回 ID 比这个值更大的记录

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "code": 0,
  • "time": 1728878471091,
  • "rid": 7801,
  • "cost": 33,
  • "detail": {
    }
}

Query Slot Game History Result (Replay URL)

query slot game result replay url

  • Pass bet_id (uniqueid with game code prefix, e.g. 7001_1234567) to query the replay URL of the slot game result
    • The returned URL contains a time-limited token (valid for 10 minutes) for standalone replay site
query Parameters
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

Responses

Response samples

Content type
application/json
{}

Lottery

Query Lottery Game History Stream

query lottery game history stream (recommended)

  • Gap between requests has to be more than 3s
    • Only accepts query of history within one month
    • Each query returns at most 10000 records
    • Records in response are sorted by bet_time in ascending order, i.e., oldest records is the first one
    • uniqueid field of the last record can be passed to last_bet_id query parameter to query next page
query Parameters
auth_token
required
string 32 characters

from authentication API

merchant_code
required
string
from
required
string

start of bet time range, format YYYYMMDDHHmmss, timezone is UTC+8

to
required
string

end of bet time range, format YYYYMMDDHHmmss, timezone is UTC+8

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

  • 1: bet_time
  • 2: payout_time
last_bet_id
string

指定要返回 ID 比这个值更大的记录

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "code": 0,
  • "time": 1779773819053,
  • "rid": 439,
  • "cost": 31,
  • "detail": {
    }
}