Game Transfer API Documentation

All API endpoints use a dynamic base URL: {API_BASE_URL}.
This value is provided to you in the console panel. Do not hard-code the domain.

Create Player

Create a player account in the game system.

Endpoint

Method URL Description
POST {API_BASE_URL}/player/account/create Create a new player in the game environment.

Request Body

{
  "playerId": "susu",
  "domain": "example.com",
  "playerNickname": "Su Su",
  "profile": "9"
}
Field Type Required Description
playerId string Yes Unique ID for the player.
domain string Yes Platform/domain the player belongs to.
This domain value is provided in your console panel.
playerNickname string Yes Display name for the player.
profile string Yes Profile code or avatar index (1–12).
You may assign a random value between 1 and 12 to generate a random profile picture.

Response

{
  "status": "ok"
}

Transfer Balance

Transfer funds for a player using a signed amount. +amount = add funds to game system, -amount = deduct funds from game system.

Endpoint

Method URL Description
POST {API_BASE_URL}/balance/transfer Transfer balance for a specific player.

Request Body

{
  "playerId": "susu",
  "domain": "example.com",
  "amount": 1000
}
Field Type Required Description
playerId string Yes Target player ID.
domain string Yes Platform/domain the player belongs to.
This domain value is provided in your console panel.
amount number Yes Signed amount determining transfer direction:
> 0 – add funds to game wallet
< 0 – deduct funds from game wallet
Balance changes by this exact value.

Response

{
  "balance": 1144,
  "status": "ok"
}

Get Player Status

Query a player’s current balance and activity state.

Endpoint

Method URL Description
POST {API_BASE_URL}/player/account/status Get current balance and player state.

Request Body

{
  "playerId": "susu",
  "domain": "example.com"
}

Response

{
  "balance": 144.5,
  "playerState": "idle",
  "status": "ok"
}

Response Fields

Field Type Description
balance number Current available balance of the player.
playerState string Current activity state of the player:
idle – Player is not playing any game.
playing – Player is currently in an active game session.
status string Request result status (ok indicates success).
Note:
• When playerState is playing, balance transfers may be restricted.
• When playerState is idle, balance operations are fully available.

Start Game

Start a game session and receive a launchable game URL.

Endpoint

Method URL Description
POST {API_BASE_URL}/game/start Creates a game session and returns gameURL.

Request Body

{
  "playerId": "susu",
  "domain": "example.com",
  "gameId": "ShanKoeMee",
  "lobbyURL": "https://game.yourdomain.com",
  "level": 0
}
Field Type Required Description
playerId string Yes Player launching the game.
domain string Yes Platform/domain the player belongs to.
This domain value is provided in your console panel.
gameId string Yes Game identifier.
lobbyURL string Yes Redirect URL after the player exits the game.
level number Yes 0, 1, 2, 3, 4, 5
0 = Room 1 (default)
1 = Room 2
2 = Room 3
3 = Room 4
4 = Room 5
5 = VIP Room
Each level selects a different game room with its own entry limits.

Response

{
  "gameURL": "https://example.com/?id=susu&passcode=xxxxx&domain=example.com&game=ShanKoeMee&exit=https://game.yourdomain.com",
  "status": "ok"
}

Inspect Transaction

Inspect and verify the status of a specific transaction by its unique ID. This endpoint is commonly used for reconciliation and transaction validation.

Endpoint

Method URL Description
POST {API_BASE_URL}/inspect.php Retrieve transaction details and validation status.

Request Body

{
  "transactionId": "1767765460617088000",
  "domain": "buffalo688"
}
Field Type Required Description
transactionId string Yes Unique transaction identifier generated by the system.
This value should match the original transaction ID used during transfer or game actions.
domain string Yes Platform/domain associated with the transaction.
This domain value is provided in your console panel.

Response

{
    "status": "ok",
    "url": "https://inspectURL.com"
}
Note:
• If the transaction does not exist or is invalid, the API will return an error status.
• This endpoint does not modify balance and is strictly read-only.

Game Round Callback

After every game round ends, the system will send a callback request to the Callback URL configured in the Developer Console. This callback contains complete round results, player actions, and settlement data.

Important:
• This is a server-to-server webhook.
• The callback URL must be publicly accessible.
• The receiver should respond with HTTP 200 OK as quickly as possible.

Callback Endpoint

Method URL Description
POST {YOUR_CALLBACK_URL} Receives game round result data after each round ends.

Callback Payload

{
  "game": "ShanKoeMee",
  "time": "2026-01-07 12:32:03",
  "domain": "example.com",
  "roomNo": 185108,
  "matchNo": 83000,
  "reportId": 1767765723556119486,
  "detail": { ... },
  "transactions": [ ... ]
}

Top-Level Fields

Field Type Description
game string Game identifier.
time string Round end time (server time).
domain string Platform/domain associated with this round.
roomNo number Room number where the round was played.
matchNo number Unique match/round identifier.
reportId number Unique report identifier for reconciliation.

Transactions

The transactions array contains finalized settlement records for each real player in the round. Each transaction represents a single balance movement.

Field Type Description
transactionId number Unique transaction identifier. Must be used for idempotency.
id string Player ID.
bet number Bet amount placed by the player.
amount number Signed settlement amount:
• Positive value = credit player balance
• Negative value = debit player balance
status string Transaction result type:
win
lose
transfer to dealer
transfer from dealer
balance number Player balance after this transaction.
playerType string Player category (e.g. normal).
Balance Handling Rule (ShanKoeMee):

The system should update the player balance using the following logic:
newBalance = oldBalance + amount
win → amount is positive
lose → amount is negative
transfer to dealer → amount is negative
transfer from dealer → amount is positive

No additional calculation is required beyond applying the signed amount.
Important Notes:
• Transactions are final settlement records.
• Duplicate callbacks may occur — use transactionId to prevent double processing.
• Each transaction must be processed exactly once.