Our seamless integration differs slightly from normal seamless. Follow these rules for correct behavior.
{ "status": "ok" } immediately, or the round is terminated.exitInfos so you can unlock those users.| Purpose | Method | Endpoint |
|---|---|---|
| Game Launch URL | POST (JSON) | https://api4.qianxu168.com/game/url |
| Game Report Detail by TransactionID | POST (JSON) | https://api4.qianxu168.com/inspect.php |
Request a launchable game URL, then open it in your player’s browser/iframe.
| Field | Type | Required | Description | Example |
|---|---|---|---|---|
| id | string | Yes | Your player’s username/ID | "bf10799901" |
| game | string | Yes | Game key/name | "AfricanBuffalo" |
| domain | string | Yes | Your tenant/brand identifier | "buffalo688" |
| balance | number | Yes | Starting balance snapshot (integer) | 5007 |
{
"id": "bf10799901",
"game": "AfricanBuffalo",
"domain": "buffalo688",
"balance": 5007
}
| Field | Type | Description | Example |
|---|---|---|---|
| status | string | "ok" on success | "ok" |
| players | array | List of players with their balances | [{"playerId":"bf123455","balance":1000.35}] |
{
"status": "ok",
"players": [
{
"playerId": "bf123455",
"balance": 1000.35
}
]
}
players array can include multiple players if needed.Fetch round details for a specific transactionId (useful for BO/CS).
| Field | Type | Required | Description | Example |
|---|---|---|---|---|
| domain | string | Yes | Your tenant/brand | "buffalo688" |
| transactionId | string | number | Yes | Transaction/Round identifier | "1757263203983752334" |
{
"domain": "buffalo688",
"transactionId": "1757263203983752334"
}
Response shape depends on provider detail format. Use it for round diagnostics/verification.
On each round end we POST a log to your webhook. You must ACK with { "status": "ok" }.
| Field | Type | Required | Description |
|---|---|---|---|
| detail | object | No | Reserved for extra metadata |
| domain | string | Yes | Your tenant/brand |
| exitInfos | array<object> | Yes | Players to unlock after the round (each item: { id: string }) |
| game | string | Yes | Game name/code |
| matchNo | number | Yes | Provider match number |
| reportId | number | Yes | Unique report identifier |
| transactions | array<object> | Yes | Balance deltas and round entries (see below) |
| Field | Type | Required | Description | Example |
|---|---|---|---|---|
| amount | number | Yes | Delta to apply to user balance (can be + or -) | -80 |
| balance | number | No | Provider-side running balance | 2075 |
| bet | number | No | Bet amount for this action | 80 |
| commission | number | No | Commission, if any | 0 |
| id | string | Yes | Player identifier (usually username) | "buffalo1183768" |
| playerType | string | No | Reserved | "" |
| status | string | Yes | win | lose | refund | cancel | "lose" |
| transactionId | string | number | Yes | Unique transaction / round ID — store it | 1760357702072700000 |
{
"detail": {},
"domain": "buffalo688",
"exitInfos": [
{"id": "buffalo1183"},
{"id": "buffalo11822"}
],
"game": "AfricanBuffalo",
"matchNo": 34424110,
"reportId": 1760357702072694000,
"transactions": [
{
"amount": -80,
"balance": 2075,
"bet": 80,
"commission": 0,
"id": "buffalo1183768",
"playerType": "",
"status": "lose",
"transactionId": 1760357702072700000
}
]
}
transactions[] item: new_balance = old_balance + amount.transactionId as your round ID for BO checks.exitInfos.
{
"status": "ok",
"players": [
{
"playerId": "bf123455",
"balance": 1000.35
}
]
}
If you don’t ACK, we terminate the round.
exitInfos at round end.You can configure Return to Player (RTP) per agent. Without per-agent RTP, a global RTP applies.