InfinityPlay operator integration

Casino API + wallet callbacks. Hand this page to operators, or download the full catalog: OPERATOR_INTEGRATION.md

1. Integration model

A. Casino API — your backend → platform: POST https://{api-domain}/api/casinoapi

B. Wallet API — platform → your backend (seamless only): POST {AgentEndPoint} with method=GetBalance / ChangeBalance

ModeValueYou implement
Seamless1GetBalance + ChangeBalance on your wallet URL
Transfer2Deposit / Withdraw / WithdrawAll on Casino API

Every Casino API call sends JSON: method, token (agent token), agentCode. Success is status: 0.

2. Launch a game

{
  "method": "GetGameUrl",
  "token": "AGENT_TOKEN",
  "agentCode": "AGENT001",
  "userCode": "player1",
  "vendorCode": "slot-pragmatic",
  "gameCode": "vs20olympgate",
  "currencyCode": "USD",
  "language": "en",
  "homeUrl": "https://casino.example/lobby",
  "channel": "desktop"
}

Open the returned launchUrl in the player browser / WebView. Do not call Pragmatic gameService yourself.

vendorCodeBrand
slot-pragmaticPragmatic Play
slot-hacksawHacksaw
slot-egtEGT
slot-egt-vipEGT VIP

Other Casino methods

methodPurpose
CreateUser / GetUserInfoPlayers
GetVendors / GetVendorGamesLobby catalog
GetWagerInfo / ReportById / ReportByDateSettled wagers
GetDetailUrlRound detail UI
ApplyFreeRound / CancelFreeRoundPromo free spins
GetFreeRoundSupportMapWhich games accept promo FS
ChangeUserRtpSession RTP band
Deposit / Withdraw / WithdrawAllTransfer mode only

3. Wallet (seamless)

One HTTPS URL. Authenticate token. Treat txnCode as idempotent. Always return post-txn balance.

GetBalance

{
  "method": "GetBalance",
  "token": "YOUR_WALLET_TOKEN",
  "userCode": "player1",
  "vendorCode": "slot-pragmatic",
  "currencyCode": "USD"
}

ChangeBalance

txnTypeMeaning
0 DebitBet / bonus buy cost
1 CreditWin (including feature total at the end of free spins)
2 CancelReverse a debit that could not complete

Important fields: amount (signed), wagerId, gameCode, gameRoundId, isFreeRound, isFinished.

4. Pragmatic Play

5. Apply free rounds

{
  "method": "ApplyFreeRound",
  "token": "AGENT_TOKEN",
  "agentCode": "AGENT001",
  "userCode": "player1",
  "vendorCode": "slot-pragmatic",
  "gameCode": "vs20olympgate",
  "currencyCode": "USD",
  "betAmount": 0.20,
  "spinCount": 10,
  "expireHours": 24
}

Then GetGameUrl so the player opens the native free-spin dialog. Backoffice: Launch & free rounds.

6. Casino API status codes

statusMeaning
0Success
3Invalid agent / token
5 / 6Invalid / blocked user
8Insufficient money
12Invalid vendor
13Invalid parameter
21Duplicate request key
23GetBalance failed (seamless launch)

7. Go-live checklist

8. Backoffice pages operators use

MenuWhat it is for
API → API guideThis document (and the PDF tab)
API → API testSeamless wallet callback smoke test (admin)
Game control → Launch & free roundsOpen a title, Apply / Cancel promo FS
Game control → Game listEnable / route games per agent
Agent → Agent treeviewCreate sub-agents, token, mode, wallet URL
User → User listPlayers, balances, block
Report → By wager indexSettled rounds (same data as ReportById)
ProfilePassword, API domain, seamless endpoint

Seamless agents must set the wallet URL on the agent (Profile / treeview) before GetGameUrl will debit/credit.

Wallet ChangeBalance example

{
  "method": "ChangeBalance",
  "token": "YOUR_WALLET_TOKEN",
  "userCode": "player1",
  "vendorCode": "slot-pragmatic",
  "currencyCode": "USD",
  "txnType": 0,
  "txnCode": "slot-pragmatic_12345_987654_0_1710000000000",
  "wagerId": 12345,
  "gameCode": "vs20olympgate",
  "amount": -1.0,
  "isFreeRound": false,
  "isFinished": false
}

Return { "status": 0, "balance": 1249.50 }. Treat duplicate txnCode as success with the same balance.