{"info":{"_postman_id":"c8413938-8613-4bdb-b185-44370b3e4168","name":"⚡ Lightning Link Casino Slots — API Integration","description":"<html><head></head><body><p><strong>Lightning Link Casino Slots</strong> provides a robust and flexible API for integrating our premium slot game library into your platform.</p>\n<hr>\n<h3 id=\"integration-methods\">Integration Methods</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Method</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>🔁 Transfer Wallet</strong></td>\n<td>Funds are transferred between your wallet and ours at game launch and exit. Simple integration path.</td>\n</tr>\n<tr>\n<td><strong>🔗 Seamless Wallet</strong></td>\n<td>Players use your platform's wallet directly — no fund transfer needed. Best player experience.</td>\n</tr>\n<tr>\n<td><strong>🎮 Demo Play</strong></td>\n<td>No user account or real money required. Ideal for game previews and marketing pages.</td>\n</tr>\n</tbody>\n</table>\n</div><hr>\n<h3 id=\"authentication\">Authentication</h3>\n<p>All requests (except Callback APIs) require a <strong>Bearer token</strong> in the <code>Authorization</code> header:</p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Authorization: Bearer \n</code></pre><h3 id=\"collection-variables\">Collection Variables</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Variable</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>baseUrl</code></td>\n<td>Transfer Wallet &amp; Demo Play API base URL</td>\n</tr>\n<tr>\n<td><code>seamlessBaseUrl</code></td>\n<td>Seamless Wallet API base URL</td>\n</tr>\n<tr>\n<td><code>callbackUrl</code></td>\n<td>Your platform's callback endpoint base URL</td>\n</tr>\n<tr>\n<td><code>apiToken</code></td>\n<td>Your API Bearer token</td>\n</tr>\n<tr>\n<td><code>agent</code></td>\n<td>Your agent / partner identifier</td>\n</tr>\n<tr>\n<td><code>secretKey</code></td>\n<td>Your HMAC signing secret (Seamless Wallet callbacks only)</td>\n</tr>\n</tbody>\n</table>\n</div><hr>\n<h3 id=\"response-envelope\">Response Envelope</h3>\n<p>Every response uses a consistent envelope structure.</p>\n<p><strong>Success</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": true,\n  \"data\": { ... }\n}\n</code></pre>\n<p><strong>Error</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code class=\"language-json\">{\n  \"success\": false,\n  \"error\": {\n    \"code\": 1001,\n    \"message\": \"Human-readable description.\"\n  }\n}\n</code></pre>\n<hr>\n<h3 id=\"error-codes--our-api\">Error Codes — Our API</h3>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Code</th>\n<th>Category</th>\n<th>Meaning</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>1001</code></td>\n<td>Auth</td>\n<td>Bearer token is missing or invalid</td>\n</tr>\n<tr>\n<td><code>1002</code></td>\n<td>Auth</td>\n<td>Agent account has been suspended</td>\n</tr>\n<tr>\n<td><code>1003</code></td>\n<td>Auth</td>\n<td>IP address is not authorized</td>\n</tr>\n<tr>\n<td><code>2001</code></td>\n<td>Player</td>\n<td>Player account does not exist</td>\n</tr>\n<tr>\n<td><code>2002</code></td>\n<td>Player</td>\n<td>Player ID is already in use</td>\n</tr>\n<tr>\n<td><code>2003</code></td>\n<td>Player</td>\n<td>Player ID format is invalid</td>\n</tr>\n<tr>\n<td><code>2004</code></td>\n<td>Player</td>\n<td>Player has insufficient balance</td>\n</tr>\n<tr>\n<td><code>3001</code></td>\n<td>Game</td>\n<td>Game does not exist or is unavailable</td>\n</tr>\n<tr>\n<td><code>4001</code></td>\n<td>Agent</td>\n<td>Agent has insufficient balance</td>\n</tr>\n<tr>\n<td><code>5001</code></td>\n<td>Request</td>\n<td>Too many requests — back off and retry</td>\n</tr>\n<tr>\n<td><code>9001</code></td>\n<td>Server</td>\n<td>Unexpected internal server error</td>\n</tr>\n</tbody>\n</table>\n</div><h3 id=\"error-codes--callback-api-operator-response\">Error Codes — Callback API (Operator Response)</h3>\n<p>These codes are returned by <strong>your platform</strong> in response to our callback requests.</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Code</th>\n<th>Constant</th>\n<th>Meaning</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>0</code></td>\n<td>Success</td>\n<td>Processed successfully</td>\n</tr>\n<tr>\n<td><code>1</code></td>\n<td>InvalidSign</td>\n<td>HMAC signature verification failed</td>\n</tr>\n<tr>\n<td><code>2</code></td>\n<td>InvalidParams</td>\n<td>Missing or invalid parameters</td>\n</tr>\n<tr>\n<td><code>3</code></td>\n<td>UserNotFound</td>\n<td>Player account does not exist</td>\n</tr>\n<tr>\n<td><code>4</code></td>\n<td>AgentNotFound</td>\n<td>Agent not found</td>\n</tr>\n<tr>\n<td><code>5</code></td>\n<td>GameNotFound</td>\n<td>Game not found</td>\n</tr>\n<tr>\n<td><code>6</code></td>\n<td>InsufficientBalance</td>\n<td>Player has insufficient balance (debit only)</td>\n</tr>\n<tr>\n<td><code>7</code></td>\n<td>DuplicateDebit</td>\n<td>Transaction already processed — do not deduct again</td>\n</tr>\n<tr>\n<td><code>8</code></td>\n<td>DuplicateCredit</td>\n<td>Credit already applied — treated as success by our server</td>\n</tr>\n<tr>\n<td><code>9</code></td>\n<td>TransactionNotFound</td>\n<td>Referenced transaction not found — treated as success for rollback</td>\n</tr>\n<tr>\n<td><code>10</code></td>\n<td>AlreadyRolledBack</td>\n<td>Already reversed — treated as success for rollback</td>\n</tr>\n<tr>\n<td><code>99</code></td>\n<td>GeneralError</td>\n<td>Unexpected error on your platform</td>\n</tr>\n</tbody>\n</table>\n</div></body></html>","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","toc":[],"owner":"27538434","collectionId":"c8413938-8613-4bdb-b185-44370b3e4168","publishedId":"2sBXcLgdGQ","public":true,"customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"publishDate":"2026-03-09T05:15:24.000Z"},"item":[{"name":"🔁 Transfer Wallet","item":[{"name":"List Games","id":"0cf87edb-b65b-4c78-86d7-274ff0fe7762","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"}],"url":"/v2/game/list","description":"<p>Returns the full list of available slot games.</p>\n<p><strong>Sorting Tips</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Use</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>week_turnover</code></td>\n<td>Sort by weekly popularity (value = total turnover ÷ 10,000)</td>\n</tr>\n<tr>\n<td><code>month_turnover</code></td>\n<td>Sort by monthly popularity</td>\n</tr>\n<tr>\n<td><code>release_date</code></td>\n<td>Identify newly released games</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Game Object Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>game_id</code></td>\n<td>integer</td>\n<td>Unique game identifier</td>\n</tr>\n<tr>\n<td><code>title</code></td>\n<td>string</td>\n<td>Display title</td>\n</tr>\n<tr>\n<td><code>thumbnail</code></td>\n<td>string</td>\n<td>Cover image URL</td>\n</tr>\n<tr>\n<td><code>release_date</code></td>\n<td>string</td>\n<td>Release date (<code>YYYY-MM-DD</code>) — use to flag new games</td>\n</tr>\n<tr>\n<td><code>is_hot</code></td>\n<td>boolean</td>\n<td>Whether the game is currently featured as hot</td>\n</tr>\n<tr>\n<td><code>series</code></td>\n<td>string</td>\n<td>Game series / brand name</td>\n</tr>\n<tr>\n<td><code>rows</code></td>\n<td>integer</td>\n<td>Grid row count</td>\n</tr>\n<tr>\n<td><code>cols</code></td>\n<td>integer</td>\n<td>Grid column count</td>\n</tr>\n<tr>\n<td><code>lines</code></td>\n<td>integer</td>\n<td>Number of paylines</td>\n</tr>\n<tr>\n<td><code>volatility</code></td>\n<td>string</td>\n<td>Volatility rating (e.g. <code>high</code>, <code>medium</code>, <code>low</code>)</td>\n</tr>\n<tr>\n<td><code>week_turnover</code></td>\n<td>integer</td>\n<td>This week's turnover ÷ 10,000</td>\n</tr>\n<tr>\n<td><code>month_turnover</code></td>\n<td>integer</td>\n<td>This month's turnover ÷ 10,000</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"c8413938-8613-4bdb-b185-44370b3e4168","id":"c8413938-8613-4bdb-b185-44370b3e4168","name":"⚡ Lightning Link Casino Slots — API Integration","type":"collection"}},"urlObject":{"path":["v2","game","list"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"61f0edce-f9a5-4efe-969d-6df0ff58b05d","name":"Success","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"/v2/game/list"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": {\n    \"games\": [\n      {\n        \"game_id\": 2001,\n        \"title\": \"Happy Lantern\",\n        \"thumbnail\": \"https://cdn.example.com/games/2001/thumb.jpg\",\n        \"release_date\": \"2024-09-01\",\n        \"is_hot\": true,\n        \"series\": \"Lightning Link\",\n        \"rows\": 3,\n        \"cols\": 5,\n        \"lines\": 25,\n        \"volatility\": \"high\",\n        \"week_turnover\": 4820,\n        \"month_turnover\": 19340\n      },\n      {\n        \"game_id\": 2002,\n        \"title\": \"Magic Pearl\",\n        \"thumbnail\": \"https://cdn.example.com/games/2002/thumb.jpg\",\n        \"release_date\": \"2024-11-15\",\n        \"is_hot\": false,\n        \"series\": \"Lightning Link\",\n        \"rows\": 3,\n        \"cols\": 5,\n        \"lines\": 25,\n        \"volatility\": \"high\",\n        \"week_turnover\": 3150,\n        \"month_turnover\": 12780\n      },\n      {\n        \"game_id\": 2003,\n        \"title\": \"Sahara Gold\",\n        \"thumbnail\": \"https://cdn.example.com/games/2003/thumb.jpg\",\n        \"release_date\": \"2025-01-20\",\n        \"is_hot\": false,\n        \"series\": \"Lightning Link\",\n        \"rows\": 3,\n        \"cols\": 5,\n        \"lines\": 25,\n        \"volatility\": \"high\",\n        \"week_turnover\": 6040,\n        \"month_turnover\": 24110\n      }\n    ]\n  }\n}"}],"_postman_id":"0cf87edb-b65b-4c78-86d7-274ff0fe7762"},{"name":"Create Player","id":"872e10c9-d1e1-4a67-883e-84ce973a9dd7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"username\": \"Player001\"\n}","options":{"raw":{"language":"json"}}},"url":"/v2/player/create","description":"<p>Creates a new player account linked to your agent.</p>\n<p><strong>Request Body</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>username</code></td>\n<td>string</td>\n<td>✓</td>\n<td>Unique player identifier on your platform. Alphanumeric, 4–32 characters.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Notes</strong></p>\n<ul>\n<li>Each <code>username</code> must be unique within your agent account.</li>\n<li>Once created, a user account cannot be deleted — only disabled.</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"c8413938-8613-4bdb-b185-44370b3e4168","id":"c8413938-8613-4bdb-b185-44370b3e4168","name":"⚡ Lightning Link Casino Slots — API Integration","type":"collection"}},"urlObject":{"path":["v2","player","create"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"70f2d37e-6897-4fda-ba39-9231822e1d7e","name":"Success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\"username\": \"Player001\"}"},"url":"/v2/player/create"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": {}\n}"},{"id":"5c888c98-aaf1-41bc-a693-9d8fc7da321a","name":"Error — Duplicate User ID","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\"username\": \"Player001\"}"},"url":"/v2/player/create"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"error\": {\n    \"code\": 2002,\n    \"message\": \"This player ID is already in use. Please choose a different one.\"\n  }\n}"},{"id":"b38a6675-4468-4721-88ad-c36dc2b017b3","name":"Error — Invalid User ID Format","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\"username\": \"a\"}"},"url":"/v2/player/create"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"error\": {\n    \"code\": 2003,\n    \"message\": \"Player ID format is invalid. Use alphanumeric characters, 4–32 characters long.\"\n  }\n}"}],"_postman_id":"872e10c9-d1e1-4a67-883e-84ce973a9dd7"},{"name":"Get Player Balance","id":"ffff4daf-368d-4f50-9b79-fd6ae1e2a310","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"username\": \"Player001\"\n}","options":{"raw":{"language":"json"}}},"url":"/v2/player/balance","description":"<p>Returns the current in-game balance of the specified player.</p>\n<p><strong>Request Body</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>username</code></td>\n<td>string</td>\n<td>✓</td>\n<td>Player identifier</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Response Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>balance</code></td>\n<td>decimal</td>\n<td>Current player balance (5 decimal places)</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"c8413938-8613-4bdb-b185-44370b3e4168","id":"c8413938-8613-4bdb-b185-44370b3e4168","name":"⚡ Lightning Link Casino Slots — API Integration","type":"collection"}},"urlObject":{"path":["v2","player","balance"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"f58d7ae2-4dfd-4c8b-a475-0a2a19768d25","name":"Success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\"username\": \"Player001\"}"},"url":"/v2/player/balance"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": {\n    \"balance\": 15000.00000\n  }\n}"},{"id":"878162ef-a6f7-4c44-bb7f-9c7293c55ad0","name":"Error — User Not Found","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\"username\": \"unknown\"}"},"url":"/v2/player/balance"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"error\": {\n    \"code\": 2001,\n    \"message\": \"The specified player account does not exist.\"\n  }\n}"}],"_postman_id":"ffff4daf-368d-4f50-9b79-fd6ae1e2a310"},{"name":"Deposit to Player","id":"ff31f372-5bd2-4d57-b0cc-4081e8b5ed26","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"username\": \"Player001\",\n  \"amount\": 10000\n}","options":{"raw":{"language":"json"}}},"url":"/v2/player/deposit","description":"<p>Transfers credits from your <strong>agent balance</strong> to the specified player's in-game balance.</p>\n<p><strong>Request Body</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>username</code></td>\n<td>string</td>\n<td>✓</td>\n<td>Player identifier</td>\n</tr>\n<tr>\n<td><code>amount</code></td>\n<td>decimal</td>\n<td>✓</td>\n<td>Amount to deposit. Must be a positive number.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Response Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>balance</code></td>\n<td>decimal</td>\n<td>Player's updated balance after deposit</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Notes</strong></p>\n<ul>\n<li>Your agent balance is debited by <code>amount</code>.</li>\n<li>Typically called just before <code>POST /v2/game/launch</code>.</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"c8413938-8613-4bdb-b185-44370b3e4168","id":"c8413938-8613-4bdb-b185-44370b3e4168","name":"⚡ Lightning Link Casino Slots — API Integration","type":"collection"}},"urlObject":{"path":["v2","player","deposit"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"6ce04a62-1d2d-4ba8-8ff4-9bd2637ede55","name":"Success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\"username\": \"Player001\", \"amount\": 10000}"},"url":"/v2/player/deposit"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": {\n    \"balance\": 10000.00000\n  }\n}"},{"id":"a16b61da-7385-4729-bcb0-c88f6d767f7b","name":"Error — Insufficient Agent Balance","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\"username\": \"Player001\", \"amount\": 9999999}"},"url":"/v2/player/deposit"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"error\": {\n    \"code\": 4001,\n    \"message\": \"Your agent account has insufficient balance to complete this operation.\"\n  }\n}"}],"_postman_id":"ff31f372-5bd2-4d57-b0cc-4081e8b5ed26"},{"name":"Withdraw from Player","id":"72162350-79de-4067-bb18-d19de8191765","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"username\": \"Player001\",\n  \"amount\": 5000\n}","options":{"raw":{"language":"json"}}},"url":"/v2/player/withdraw","description":"<p>Transfers credits from the player's in-game balance back to your <strong>agent balance</strong>.</p>\n<p><strong>Request Body</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>username</code></td>\n<td>string</td>\n<td>✓</td>\n<td>Player identifier</td>\n</tr>\n<tr>\n<td><code>amount</code></td>\n<td>decimal</td>\n<td>—</td>\n<td>Amount to withdraw. If omitted, <strong>withdraws the full balance</strong>.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Response Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>withdraw_amount</code></td>\n<td>decimal</td>\n<td>Actual amount withdrawn</td>\n</tr>\n<tr>\n<td><code>balance</code></td>\n<td>decimal</td>\n<td>Player's remaining balance (always <code>0</code> if full withdrawal)</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Notes</strong></p>\n<ul>\n<li><p>Typically called when a player exits a game session.</p>\n</li>\n<li><p>If <code>amount</code> exceeds the player's balance, the call will fail.</p>\n</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"c8413938-8613-4bdb-b185-44370b3e4168","id":"c8413938-8613-4bdb-b185-44370b3e4168","name":"⚡ Lightning Link Casino Slots — API Integration","type":"collection"}},"urlObject":{"path":["v2","player","withdraw"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"86425cd5-5ea3-499c-8d4c-a2b6d23c4f65","name":"Success — Partial Withdraw","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\"username\": \"Player001\", \"amount\": 5000}"},"url":"/v2/player/withdraw"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": {\n    \"withdraw_amount\": 5000.00000,\n    \"balance\": 5000.00000\n  }\n}"},{"id":"9fcc2625-18db-4f54-9720-e1e8a58f54b6","name":"Success — Full Withdraw (amount omitted)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\"username\": \"Player001\"}"},"url":"/v2/player/withdraw"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": {\n    \"withdraw_amount\": 10000.00000,\n    \"balance\": 0.00000\n  }\n}"},{"id":"1b07708d-d94b-4046-afe8-748491c3750d","name":"Error — Insufficient User Balance","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\"username\": \"Player001\", \"amount\": 9999999}"},"url":"/v2/player/withdraw"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"error\": {\n    \"code\": 2004,\n    \"message\": \"The player has insufficient balance to complete this withdrawal.\"\n  }\n}"}],"_postman_id":"72162350-79de-4067-bb18-d19de8191765"},{"name":"Launch Game","id":"2cc23938-92ab-4691-8692-40ec19422f3b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"username\": \"Player001\",\n  \"game_id\": 2001,\n  \"lang\": \"en\"\n}","options":{"raw":{"language":"json"}}},"url":"/v2/game/launch","description":"<p>Generates a one-time game launch URL for the specified player and game.</p>\n<p><strong>Request Body</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>username</code></td>\n<td>string</td>\n<td>✓</td>\n<td>Player identifier</td>\n</tr>\n<tr>\n<td><code>game_id</code></td>\n<td>integer</td>\n<td>✓</td>\n<td>Game ID from <code>GET /v2/game/list</code></td>\n</tr>\n<tr>\n<td><code>lang</code></td>\n<td>string</td>\n<td>✓</td>\n<td>Game UI language code</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Supported Languages</strong></p>\n<p><code>en</code> <code>zh</code> <code>zh-tw</code> <code>ms</code> <code>id</code> <code>th</code> <code>vi</code> <code>ja</code> <code>ko</code> <code>pt</code> <code>es</code> <code>fr</code> <code>de</code></p>\n<p><strong>Notes</strong></p>\n<ul>\n<li><p>The returned URL is single-use and expires after a short period.</p>\n</li>\n<li><p>The player must have a non-zero balance before calling this endpoint.</p>\n</li>\n<li><p>Embed the URL in an iframe or redirect the player directly.</p>\n</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"c8413938-8613-4bdb-b185-44370b3e4168","id":"c8413938-8613-4bdb-b185-44370b3e4168","name":"⚡ Lightning Link Casino Slots — API Integration","type":"collection"}},"urlObject":{"path":["v2","game","launch"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"138f0e1a-0fb4-4339-a7c1-5656fd176242","name":"Success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\"username\": \"Player001\", \"game_id\": 2001, \"lang\": \"en\"}"},"url":"/v2/game/launch"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": {\n    \"url\": \"https://game.example.com/games/happy_lantern?userid=Player001&token=A8E3B1C5D9F2074E3C6A1B8D5F9E2C7A&symbol=happy_lantern&lang=en\"\n  }\n}"},{"id":"ecc98eab-3b15-48dd-8af4-dafbc7003e56","name":"Error — Invalid Game ID","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\"username\": \"Player001\", \"game_id\": 9999, \"lang\": \"en\"}"},"url":"/v2/game/launch"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"error\": {\n    \"code\": 3001,\n    \"message\": \"The specified game does not exist or is currently unavailable.\"\n  }\n}"}],"_postman_id":"2cc23938-92ab-4691-8692-40ec19422f3b"},{"name":"Get Bet Logs","id":"9d5f83a7-96a2-402f-ba6e-ac45e411631c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"limit\": 50,\n  \"cursor\": null,\n  \"filter\": {\n    \"username\": \"Player001\",\n    \"game_id\": 2001,\n    \"status\": \"completed\",\n    \"from\": \"2025-01-01 00:00:00\",\n    \"to\": \"2025-01-31 23:59:59\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"/v2/game/logs","description":"<p>Returns paginated bet history for all players under your agent, using cursor-based pagination.</p>\n<p><strong>Request Body</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>—</td>\n<td>Records per page. Default: <code>50</code>. Max: <code>500</code>.</td>\n</tr>\n<tr>\n<td><code>cursor</code></td>\n<td>string</td>\n<td>—</td>\n<td>Opaque cursor from <code>pagination.next_cursor</code>. Omit or set <code>null</code> for the first page.</td>\n</tr>\n<tr>\n<td><code>filter</code></td>\n<td>object</td>\n<td>—</td>\n<td>Optional filters to narrow results.</td>\n</tr>\n<tr>\n<td><code>filter.username</code></td>\n<td>string</td>\n<td>—</td>\n<td>Filter by player identifier.</td>\n</tr>\n<tr>\n<td><code>filter.game_id</code></td>\n<td>integer</td>\n<td>—</td>\n<td>Filter by game ID.</td>\n</tr>\n<tr>\n<td><code>filter.status</code></td>\n<td>string</td>\n<td>—</td>\n<td><code>\"completed\"</code> | <code>\"in_progress\"</code></td>\n</tr>\n<tr>\n<td><code>filter.from</code></td>\n<td>string</td>\n<td>—</td>\n<td>Start time (UTC). Format: <code>YYYY-MM-DD HH:mm:ss</code></td>\n</tr>\n<tr>\n<td><code>filter.to</code></td>\n<td>string</td>\n<td>—</td>\n<td>End time (UTC). Format: <code>YYYY-MM-DD HH:mm:ss</code></td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Response Fields (per item)</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>object_id</code></td>\n<td>integer</td>\n<td>Unique record ID</td>\n</tr>\n<tr>\n<td><code>round_id</code></td>\n<td>string</td>\n<td>Betting round identifier</td>\n</tr>\n<tr>\n<td><code>username</code></td>\n<td>string</td>\n<td>Player identifier</td>\n</tr>\n<tr>\n<td><code>game_id</code></td>\n<td>integer</td>\n<td>Game ID</td>\n</tr>\n<tr>\n<td><code>game_name</code></td>\n<td>string</td>\n<td>Game name</td>\n</tr>\n<tr>\n<td><code>round_type</code></td>\n<td>integer</td>\n<td>Round type: <code>0</code> = Base, <code>1</code> = Free Spin, <code>2</code> = Hold &amp; Spin</td>\n</tr>\n<tr>\n<td><code>status</code></td>\n<td>string</td>\n<td><code>\"completed\"</code> | <code>\"in_progress\"</code></td>\n</tr>\n<tr>\n<td><code>bet_amount</code></td>\n<td>decimal</td>\n<td>Amount wagered (5 decimal places)</td>\n</tr>\n<tr>\n<td><code>win_amount</code></td>\n<td>decimal</td>\n<td>Amount won (5 decimal places)</td>\n</tr>\n<tr>\n<td><code>net_amount</code></td>\n<td>decimal</td>\n<td>Net result = <code>win_amount − bet_amount</code></td>\n</tr>\n<tr>\n<td><code>begin_money</code></td>\n<td>decimal</td>\n<td>Player balance before the round</td>\n</tr>\n<tr>\n<td><code>end_money</code></td>\n<td>decimal</td>\n<td>Player balance after the round</td>\n</tr>\n<tr>\n<td><code>spin_count</code></td>\n<td>integer</td>\n<td>Number of spins in the round</td>\n</tr>\n<tr>\n<td><code>created_at</code></td>\n<td>string</td>\n<td>Round start timestamp (UTC, ISO 8601)</td>\n</tr>\n<tr>\n<td><code>ended_at</code></td>\n<td>string</td>\n<td>Round end timestamp (UTC, ISO 8601)</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Pagination Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>next_cursor</code></td>\n<td>string|null</td>\n<td>Pass as <code>cursor</code> in the next request. <code>null</code> = last page.</td>\n</tr>\n<tr>\n<td><code>has_more</code></td>\n<td>boolean</td>\n<td><code>true</code> if more records exist beyond this page.</td>\n</tr>\n<tr>\n<td><code>limit</code></td>\n<td>integer</td>\n<td>Page size used for this response.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Pagination Pattern:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>First call:  cursor = null (or omit)\nNext call:   cursor = response.pagination.next_cursor\nStop when:   pagination.has_more = false\n</code></pre>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"c8413938-8613-4bdb-b185-44370b3e4168","id":"c8413938-8613-4bdb-b185-44370b3e4168","name":"⚡ Lightning Link Casino Slots — API Integration","type":"collection"}},"urlObject":{"path":["v2","game","logs"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"7b189fe5-c3df-4879-9d10-7e4fd66b93e8","name":"Success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\"limit\": 50, \"cursor\": null}"},"url":"/v2/game/logs"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": {\n    \"items\": [\n      {\n        \"object_id\": 1048700,\n        \"round_id\": \"Ra1b2c3d4e5f6432100000000000000000\",\n        \"username\": \"Player001\",\n        \"game_id\": 2001,\n        \"game_name\": \"LightningLink_HappyLantern\",\n        \"round_type\": 0,\n        \"status\": \"completed\",\n        \"bet_amount\": 1.00000,\n        \"win_amount\": 2.50000,\n        \"net_amount\": 1.50000,\n        \"begin_money\": 100.00000,\n        \"end_money\": 101.50000,\n        \"spin_count\": 3,\n        \"created_at\": \"2025-01-15T12:34:56Z\",\n        \"ended_at\": \"2025-01-15T12:35:10Z\"\n      },\n      {\n        \"object_id\": 1048702,\n        \"round_id\": \"Rz9y8x7w6v5u4321000000000000000000\",\n        \"username\": \"Player002\",\n        \"game_id\": 2003,\n        \"game_name\": \"LightningLink_SaharaGold\",\n        \"round_type\": 0,\n        \"status\": \"completed\",\n        \"bet_amount\": 0.50000,\n        \"win_amount\": 0.00000,\n        \"net_amount\": -0.50000,\n        \"begin_money\": 50.00000,\n        \"end_money\": 49.50000,\n        \"spin_count\": 1,\n        \"created_at\": \"2025-01-15T12:36:10Z\",\n        \"ended_at\": \"2025-01-15T12:36:12Z\"\n      }\n    ],\n    \"pagination\": {\n      \"next_cursor\": \"eyJpZCI6MTA0ODcwMn0=\",\n      \"has_more\": true,\n      \"limit\": 50\n    }\n  }\n}"},{"id":"94ea8dd1-ffe9-4d6a-8801-16f7c7ea7510","name":"Last Page (no more records)","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\"limit\": 50, \"cursor\": \"eyJpZCI6MTA0ODcwMn0=\"}"},"url":"/v2/game/logs"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": {\n    \"items\": [],\n    \"pagination\": {\n      \"next_cursor\": null,\n      \"has_more\": false,\n      \"limit\": 50\n    }\n  }\n}"}],"_postman_id":"9d5f83a7-96a2-402f-ba6e-ac45e411631c"},{"name":"Get Round Detail URL","id":"d424cc00-4664-46fb-9fed-c2381d468ea7","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer ","type":"text"}],"url":"/v2/game/logs/:roundId?lang=en","description":"<p>Returns a signed 30-minute URL pointing to the round detail page (details.html).</p>\n<p>The operator opens this URL in a browser or passes it to CS staff. The static details.html page reads the <code>api_base</code> parameter from the URL and calls CommNode internally to fetch and render the spin-by-spin history.</p>\n<p><strong>Returned URL format:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>{HistoryURL}?round_id={roundId}&amp;token={encToken}&amp;api_base={encodedCommNodeBase}&amp;lang={lang}\n</code></pre><div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>round_id</code></td>\n<td>Round identifier</td>\n</tr>\n<tr>\n<td><code>token</code></td>\n<td>AES-256-CBC token containing <code>{userid}:{expiry}</code>. Valid 30 minutes.</td>\n</tr>\n<tr>\n<td><code>api_base</code></td>\n<td>URL-encoded CommNode base URL — details.html calls <code>GET {api_base}/game/history/round/{round_id}?token={token}</code></td>\n</tr>\n<tr>\n<td><code>lang</code></td>\n<td>UI language code</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"c8413938-8613-4bdb-b185-44370b3e4168","id":"c8413938-8613-4bdb-b185-44370b3e4168","name":"⚡ Lightning Link Casino Slots — API Integration","type":"collection"}},"urlObject":{"path":["v2","game","logs",":roundId"],"host":[""],"query":[{"description":{"content":"<p>Language code for the round detail page UI (e.g. en, zh). Defaults to en.</p>\n","type":"text/plain"},"key":"lang","value":"en"}],"variable":[{"id":"3443238e-2521-4a40-aac3-e59fdeea1a47","description":{"content":"<p>The round identifier (e.g. R + 32 hex chars)</p>\n","type":"text/plain"},"type":"any","value":"R7f3a2b1c4d5e6f7a8b9c0d1e2f3a4b5c","key":"roundId"}]}},"response":[{"id":"871fe0d7-6b52-4b32-a5ef-43b0e5a7fb60","name":"Success","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer "}],"url":{"raw":"/v2/game/logs/R7f3a2b1c4d5e6f7a8b9c0d1e2f3a4b5c?lang=en","host":[""],"path":["v2","game","logs","R7f3a2b1c4d5e6f7a8b9c0d1e2f3a4b5c"],"query":[{"key":"lang","value":"en"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": true,\n    \"data\": {\n        \"url\": \"http://game.example.com/History/details.html?round_id=R7f3a2b1c4d5e6f7a8b9c0d1e2f3a4b5c&token=A8E3xK2mP9vQ4rT6yU1wZ5nB7cD0eF2g3h&api_base=http%3A%2F%2F127.0.0.1%3A8888&lang=en\"\n    }\n}"},{"id":"b72990f5-1668-4c3e-bf7a-8cfd72606f6a","name":"Error — Round Not Found","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer "}],"url":{"raw":"/v2/game/logs/Runknown00000000000000000000000000?lang=en","host":[""],"path":["v2","game","logs","Runknown00000000000000000000000000"],"query":[{"key":"lang","value":"en"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n    \"success\": false,\n    \"error\": {\n        \"code\": 1004,\n        \"message\": \"Game not found\"\n    }\n}"}],"_postman_id":"d424cc00-4664-46fb-9fed-c2381d468ea7"}],"id":"d50c518e-4e07-423e-8a3d-1331ad57f513","description":"<p>In the <strong>Transfer Wallet</strong> model, funds are moved between your platform wallet and the game wallet when a player starts or exits a game session.</p>\n<p><strong>Flow:</strong></p>\n<ol>\n<li>Create a user account (<code>POST /v2/player/create</code>)</li>\n<li>Deposit credits before launching the game (<code>POST /v2/player/deposit</code>)</li>\n<li>Generate a game launch URL (<code>POST /v2/game/launch</code>)</li>\n<li>When the session ends, withdraw remaining balance (<code>POST /v2/player/withdraw</code>)</li>\n</ol>\n<p>All endpoints require <code>Authorization: Bearer </code>.</p>\n","_postman_id":"d50c518e-4e07-423e-8a3d-1331ad57f513","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"c8413938-8613-4bdb-b185-44370b3e4168","id":"c8413938-8613-4bdb-b185-44370b3e4168","name":"⚡ Lightning Link Casino Slots — API Integration","type":"collection"}}},{"name":"🔗 Seamless Wallet","item":[{"name":"📡 Our API","item":[{"name":"List Games","id":"7a4500cf-1652-4e0b-9a53-9f8e4302d82e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"}],"url":"/v2/game/list","description":"<p>Returns the full list of available slot games. Response format is identical to the Transfer Wallet game list.</p>\n<p>See <strong>Transfer Wallet → Get Game List</strong> for field descriptions.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"c8413938-8613-4bdb-b185-44370b3e4168","id":"c8413938-8613-4bdb-b185-44370b3e4168","name":"⚡ Lightning Link Casino Slots — API Integration","type":"collection"}},"urlObject":{"path":["v2","game","list"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"1b869fb1-41a5-498c-940d-1d52aae64b20","name":"Success","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"/v2/game/list"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": {\n    \"games\": [\n      {\n        \"game_id\": 2001,\n        \"title\": \"Happy Lantern\",\n        \"thumbnail\": \"https://cdn.example.com/games/2001/thumb.jpg\",\n        \"release_date\": \"2024-09-01\",\n        \"is_hot\": true,\n        \"series\": \"Lightning Link\",\n        \"rows\": 3,\n        \"cols\": 5,\n        \"lines\": 25,\n        \"volatility\": \"high\",\n        \"week_turnover\": 4820,\n        \"month_turnover\": 19340\n      }\n    ]\n  }\n}"}],"_postman_id":"7a4500cf-1652-4e0b-9a53-9f8e4302d82e"},{"name":"Launch Game","id":"c6023f84-3c3e-4ba2-8e90-6d2bcd216b4c","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"username\": \"Player001\",\n  \"game_id\": 2001,\n  \"lang\": \"en\",\n  \"lobby_url\": \"https://yourcasino.com/lobby\"\n}","options":{"raw":{"language":"json"}}},"url":"/v2/game/launch","description":"<p>Authenticates a player and returns a one-time game launch URL.</p>\n<p>Unlike Transfer Wallet, no pre-deposit is required. The player's balance is managed by your platform via the Callback API. The agent is resolved from your Bearer token.</p>\n<p><strong>Request Body</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>username</code></td>\n<td>string</td>\n<td>✓</td>\n<td>Player identifier on your platform</td>\n</tr>\n<tr>\n<td><code>game_id</code></td>\n<td>integer</td>\n<td>✓</td>\n<td>Game ID from <code>/game/list</code></td>\n</tr>\n<tr>\n<td><code>lang</code></td>\n<td>string</td>\n<td>✓</td>\n<td>Game UI language code (e.g. <code>en</code>, <code>zh</code>, <code>ms</code>)</td>\n</tr>\n<tr>\n<td><code>lobby_url</code></td>\n<td>string</td>\n<td>—</td>\n<td>URL the player is redirected to when they exit the game</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Response Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>url</code></td>\n<td>string</td>\n<td>One-time game launch URL. Expires after a short period.</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"c8413938-8613-4bdb-b185-44370b3e4168","id":"c8413938-8613-4bdb-b185-44370b3e4168","name":"⚡ Lightning Link Casino Slots — API Integration","type":"collection"}},"urlObject":{"path":["v2","game","launch"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"f16ae6d5-39e7-4950-958c-c91b89a78454","name":"Success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\"username\": \"Player001\", \"game_id\": 2001, \"lang\": \"en\", \"lobby_url\": \"https://yourcasino.com/lobby\"}"},"url":"/v2/game/launch"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": {\n    \"url\": \"https://game.example.com/games/happy_lantern?userid=Player001&token=B3F7D2A9E1C5084F7D2B6A3C8E5F1D4B&symbol=happy_lantern&lang=en\"\n  }\n}"},{"id":"aca3eeb2-9d7a-450b-93b3-57ca11ff852a","name":"Error — Invalid API Token","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\"username\": \"Player001\", \"game_id\": 2001, \"lang\": \"en\"}"},"url":"/v2/game/launch"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"error\": {\n    \"code\": 1001,\n    \"message\": \"Authentication failed. The provided token is missing or invalid.\"\n  }\n}"}],"_postman_id":"c6023f84-3c3e-4ba2-8e90-6d2bcd216b4c"},{"name":"Get Bet Logs","id":"ca95b320-6bae-4d1d-b301-0e4a0f4c7baf","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"limit\": 50,\n  \"cursor\": null,\n  \"filter\": {\n    \"username\": \"Player001\",\n    \"game_id\": 2001,\n    \"status\": \"completed\",\n    \"from\": \"2025-01-01 00:00:00\",\n    \"to\": \"2025-01-31 23:59:59\"\n  }\n}","options":{"raw":{"language":"json"}}},"url":"/v2/game/logs","description":"<p>Returns paginated bet history for all players under your agent, using cursor-based pagination.</p>\n<p>Request and response format are identical to the Transfer Wallet version.</p>\n<p>See <strong>Transfer Wallet → Get Bet Logs</strong> for full field descriptions.</p>\n<p><strong>Rate Limit:</strong> 10 requests per minute.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"c8413938-8613-4bdb-b185-44370b3e4168","id":"c8413938-8613-4bdb-b185-44370b3e4168","name":"⚡ Lightning Link Casino Slots — API Integration","type":"collection"}},"urlObject":{"path":["v2","game","logs"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"75ee7cbd-af2b-48f4-a3a1-8357c48a7fcb","name":"Success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\"limit\": 50, \"cursor\": null}"},"url":"/v2/game/logs"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": {\n    \"items\": [\n      {\n        \"object_id\": 2097410,\n        \"round_id\": \"Rb2c3d4e5f6a789010000000000000000\",\n        \"username\": \"Player001\",\n        \"game_id\": 2001,\n        \"game_name\": \"LightningLink_HappyLantern\",\n        \"round_type\": 0,\n        \"status\": \"completed\",\n        \"bet_amount\": 0.50000,\n        \"win_amount\": 1.20000,\n        \"net_amount\": 0.70000,\n        \"begin_money\": 25.00000,\n        \"end_money\": 25.70000,\n        \"spin_count\": 2,\n        \"created_at\": \"2025-01-15T09:22:14Z\",\n        \"ended_at\": \"2025-01-15T09:22:30Z\"\n      }\n    ],\n    \"pagination\": {\n      \"next_cursor\": null,\n      \"has_more\": false,\n      \"limit\": 50\n    }\n  }\n}"}],"_postman_id":"ca95b320-6bae-4d1d-b301-0e4a0f4c7baf"},{"name":"Get Round Detail URL","id":"6bd0d4d3-23bc-4e08-a481-aa0b4ab1f417","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Authorization","value":"Bearer ","type":"text"}],"url":"/v2/game/logs/:roundId?lang=en","description":"<p>Returns a signed 30-minute URL pointing to the round detail page (details.html).</p>\n<p>The operator opens this URL in a browser or passes it to CS staff. The static details.html page reads the <code>api_base</code> parameter from the URL and calls CommNode internally to fetch and render the spin-by-spin history.</p>\n<p><strong>Returned URL format:</strong></p>\n<p>```\\n{HistoryURL}?round_id={roundId}&amp;token={encToken}&amp;api_base={encodedCommNodeBase}&amp;lang={lang}</p>\n<p>```\\n</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Parameter</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>round_id</code></td>\n<td>Round identifier</td>\n</tr>\n<tr>\n<td><code>token</code></td>\n<td>AES-256-CBC token containing <code>{userid}:{expiry}</code>. Valid 30 minutes.</td>\n</tr>\n<tr>\n<td><code>api_base</code></td>\n<td>URL-encoded CommNode base URL - details.html calls <code>GET {api_base}/game/history/round/{round_id}?token={token}</code></td>\n</tr>\n<tr>\n<td><code>lang</code></td>\n<td>UI language code</td>\n</tr>\n</tbody>\n</table>\n</div>","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"c8413938-8613-4bdb-b185-44370b3e4168","id":"c8413938-8613-4bdb-b185-44370b3e4168","name":"⚡ Lightning Link Casino Slots — API Integration","type":"collection"}},"urlObject":{"path":["v2","game","logs",":roundId"],"host":[""],"query":[{"description":{"content":"<p>Language code for the round detail page UI (e.g. en, zh). Defaults to en.</p>\n","type":"text/plain"},"key":"lang","value":"en"}],"variable":[{"id":"91548a3d-546a-459f-84ed-5ca52b827c0f","description":{"content":"<p>The round identifier (e.g. R + 32 hex chars)</p>\n","type":"text/plain"},"type":"any","value":"R7f3a2b1c4d5e6f7a8b9c0d1e2f3a4b5c","key":"roundId"}]}},"response":[{"id":"db844b6b-bf5c-43de-b085-a46320517989","name":"Success","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer "}],"url":{"raw":"/v2/game/logs/R7f3a2b1c4d5e6f7a8b9c0d1e2f3a4b5c?lang=en","host":[""],"path":["v2","game","logs","R7f3a2b1c4d5e6f7a8b9c0d1e2f3a4b5c"],"query":[{"key":"lang","value":"en"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\\n    \"success\": true,\\n    \"data\": {\\n        \"url\": \"http://game.example.com/History/details.html?round_id=R7f3a2b1c4d5e6f7a8b9c0d1e2f3a4b5c&token=A8E3xK2mP9vQ4rT6yU1wZ5nB7cD0eF2g3h&api_base=http%3A%2F%2F127.0.0.1%3A8888&lang=en\"\\n    }\\n}"},{"id":"4cd0d5c3-e0ed-46f6-9b49-0f0c39a0fe90","name":"Error - Round Not Found","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"Bearer "}],"url":{"raw":"/v2/game/logs/Runknown00000000000000000000000000?lang=en","host":[""],"path":["v2","game","logs","Runknown00000000000000000000000000"],"query":[{"key":"lang","value":"en"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\\n    \"success\": false,\\n    \"error\": {\\n        \"code\": 3001,\\n        \"message\": \"Game round not found.\"\\n    }\\n}"},{"id":"2a2ae7ca-5500-4592-8250-04024f9fd3bc","name":"Error - Invalid Token","originalRequest":{"method":"GET","header":[{"key":"Authorization","value":"{{vault:bearer-token}}"}],"url":{"raw":"/v2/game/logs/R7f3a2b1c4d5e6f7a8b9c0d1e2f3a4b5c?lang=en","host":[""],"path":["v2","game","logs","R7f3a2b1c4d5e6f7a8b9c0d1e2f3a4b5c"],"query":[{"key":"lang","value":"en"}]}},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\\n    \"success\": false,\\n    \"error\": {\\n        \"code\": 1001,\\n        \"message\": \"Authentication failed. The provided token is missing or invalid.\"\\n    }\\n}"}],"_postman_id":"6bd0d4d3-23bc-4e08-a481-aa0b4ab1f417"}],"id":"4ff39722-42ee-4520-b5a5-6cf695512f1a","description":"<p>Endpoints you call on our server. All require <code>Authorization: Bearer </code>.</p>\n","_postman_id":"4ff39722-42ee-4520-b5a5-6cf695512f1a","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"c8413938-8613-4bdb-b185-44370b3e4168","id":"c8413938-8613-4bdb-b185-44370b3e4168","name":"⚡ Lightning Link Casino Slots — API Integration","type":"collection"}}},{"name":"↩️ Callback API","item":[{"name":"Balance","id":"c7fbbc97-92b3-4737-9b73-ff135c9b638b","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"agent\": \"Partner01\",\n  \"username\": \"Player001\",\n  \"game_id\": 2001,\n  \"timestamp\": 1709523139,\n  \"signature\": \"70918c7ff2c69e5e5ee05a3dc4077f72ff69c03497ac36dc1add58449dcdccf4\"\n}","options":{"raw":{"language":"json"}}},"url":"https://your-callback-domain.com/v2/callback/balance","description":"<p>Fetch the player's current wallet balance from the operator's platform.</p>\n<p>Called before a game session starts (Seamless Wallet flow).</p>\n<p><strong>Request Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>agent</code></td>\n<td>string</td>\n<td>Agent identifier</td>\n</tr>\n<tr>\n<td><code>username</code></td>\n<td>string</td>\n<td>Player identifier</td>\n</tr>\n<tr>\n<td><code>game_id</code></td>\n<td>integer</td>\n<td>Game being launched</td>\n</tr>\n<tr>\n<td><code>timestamp</code></td>\n<td>integer</td>\n<td>Unix timestamp (seconds)</td>\n</tr>\n<tr>\n<td><code>signature</code></td>\n<td>string</td>\n<td>HMAC-SHA256 signature (see Signing below)</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Response Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>code</code></td>\n<td>integer</td>\n<td><code>0</code> = success</td>\n</tr>\n<tr>\n<td><code>message</code></td>\n<td>string</td>\n<td>Human-readable status</td>\n</tr>\n<tr>\n<td><code>balance</code></td>\n<td>string</td>\n<td>Player balance — <strong>always 5 decimal places</strong> (e.g. <code>\"1000.00000\"</code>)</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Signing Algorithm</strong></p>\n<ol>\n<li>Collect all request fields <strong>except</strong> <code>signature</code></li>\n<li>Sort keys alphabetically (ordinal, case-sensitive)</li>\n<li>Join as <code>key=value&amp;key=value</code></li>\n<li>Compute HMAC-SHA256 using your <code>secretKey</code></li>\n<li>Encode as lowercase hex string</li>\n</ol>\n<p><strong>Example:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>message = \"agent=Partner01&amp;game_id=2001&amp;timestamp=1709523139&amp;username=Player001\"\nsignature = HMAC-SHA256(secretKey, message)  →  \"70918c7f...\"\n</code></pre><p><strong>Response Codes</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Code</th>\n<th>Meaning</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>0</code></td>\n<td>Success</td>\n</tr>\n<tr>\n<td><code>1</code></td>\n<td>Invalid signature</td>\n</tr>\n<tr>\n<td><code>2</code></td>\n<td>Invalid parameters</td>\n</tr>\n<tr>\n<td><code>3</code></td>\n<td>User not found</td>\n</tr>\n<tr>\n<td><code>4</code></td>\n<td>Agent not found</td>\n</tr>\n<tr>\n<td><code>99</code></td>\n<td>General error</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["v2","callback","balance"],"host":["https://your-callback-domain.com"],"query":[],"variable":[]}},"response":[{"id":"60037c55-03ba-444a-b294-a6c4651ba015","name":"Your Response — Success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"agent\": \"Partner01\",\n  \"username\": \"Player001\",\n  \"game_id\": 2001,\n  \"timestamp\": 1709523139,\n  \"signature\": \"70918c7ff2c69e5e5ee05a3dc4077f72ff69c03497ac36dc1add58449dcdccf4\"\n}"},"url":"https://your-callback-domain.com/v2/callback/balance"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": 0,\n  \"message\": \"OK\",\n  \"balance\": \"1000.00000\"\n}"},{"id":"c15c08de-6e86-4fd9-93ae-9879c57ce517","name":"Your Response — Invalid Sign","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\"agent\": \"Partner01\", \"username\": \"Player001\", \"game_id\": 2001, \"timestamp\": 1709523139, \"signature\": \"INVALIDSIGN\"}"},"url":"https://your-callback-domain.com/v2/callback/balance"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": 1,\n  \"message\": \"HMAC signature verification failed.\"\n}"}],"_postman_id":"c7fbbc97-92b3-4737-9b73-ff135c9b638b"},{"name":"Debit","id":"89c64c9e-d7d1-4534-8fcd-c1f7d5f9991e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"agent\": \"Partner01\",\n  \"username\": \"Player001\",\n  \"amount\": \"0.50000\",\n  \"transaction_id\": \"4146ed8dd6d5497780e9fc273e86bae0\",\n  \"game_id\": 2001,\n  \"timestamp\": 1709523140,\n  \"signature\": \"aed10cf82100b6b4e94089a60e0043a49395442e1f2d343e8df2c27343a89fc4\"\n}","options":{"raw":{"language":"json"}}},"url":"https://your-callback-domain.com/v2/callback/debit","description":"<p>Deduct bet amount from the player's wallet on the operator's platform.</p>\n<p>Called <strong>before</strong> each spin. If debit fails, the spin is aborted.</p>\n<p><strong>Request Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>agent</code></td>\n<td>string</td>\n<td>Agent identifier</td>\n</tr>\n<tr>\n<td><code>username</code></td>\n<td>string</td>\n<td>Player identifier</td>\n</tr>\n<tr>\n<td><code>amount</code></td>\n<td>string</td>\n<td>Bet amount — <strong>always 5 decimal places</strong> (e.g. <code>\"0.50000\"</code>)</td>\n</tr>\n<tr>\n<td><code>transaction_id</code></td>\n<td>string</td>\n<td>Unique debit transaction ID (UUID without hyphens)</td>\n</tr>\n<tr>\n<td><code>game_id</code></td>\n<td>integer</td>\n<td>Game being played</td>\n</tr>\n<tr>\n<td><code>timestamp</code></td>\n<td>integer</td>\n<td>Unix timestamp (seconds)</td>\n</tr>\n<tr>\n<td><code>signature</code></td>\n<td>string</td>\n<td>HMAC-SHA256 signature</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Response Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>code</code></td>\n<td>integer</td>\n<td><code>0</code> = success</td>\n</tr>\n<tr>\n<td><code>message</code></td>\n<td>string</td>\n<td>Human-readable status</td>\n</tr>\n<tr>\n<td><code>balance</code></td>\n<td>string</td>\n<td>Balance after debit — <strong>5 decimal places</strong></td>\n</tr>\n<tr>\n<td><code>operator_transaction_id</code></td>\n<td>string</td>\n<td>Operator's own transaction reference</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Idempotency</strong></p>\n<p>If the same <code>transaction_id</code> is received again, respond with <code>code: 7</code> (DuplicateDebit). Do <strong>not</strong> deduct balance again.</p>\n<p><strong>Response Codes</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Code</th>\n<th>Meaning</th>\n<th>Action</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>0</code></td>\n<td>Success</td>\n<td>Proceed with spin</td>\n</tr>\n<tr>\n<td><code>6</code></td>\n<td>Insufficient balance</td>\n<td>Abort spin</td>\n</tr>\n<tr>\n<td><code>7</code></td>\n<td>Duplicate debit</td>\n<td>Treat as already processed — return error to player</td>\n</tr>\n<tr>\n<td><code>1</code></td>\n<td>Invalid signature</td>\n<td>Fix signing</td>\n</tr>\n<tr>\n<td><code>99</code></td>\n<td>General error</td>\n<td>Abort spin</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["v2","callback","debit"],"host":["https://your-callback-domain.com"],"query":[],"variable":[]}},"response":[{"id":"ca40cbc1-c8f2-4cf7-b939-184226ee25b3","name":"Your Response — Success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"agent\": \"Partner01\",\n  \"username\": \"Player001\",\n  \"amount\": \"0.50000\",\n  \"transaction_id\": \"4146ed8dd6d5497780e9fc273e86bae0\",\n  \"game_id\": 2001,\n  \"timestamp\": 1709523140,\n  \"signature\": \"aed10cf82100b6b4e94089a60e0043a49395442e1f2d343e8df2c27343a89fc4\"\n}"},"url":"https://your-callback-domain.com/v2/callback/debit"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": 0,\n  \"message\": \"OK\",\n  \"balance\": \"999.50000\",\n  \"operator_transaction_id\": \"d2583e276c0a4980bf7a0913a94c00c0\"\n}"},{"id":"346a8b12-aafb-44bb-a62e-9b4f9fd9c90e","name":"Your Response — Insufficient Balance","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\"agent\": \"Partner01\", \"username\": \"Player001\", \"amount\": \"999999.00000\", \"transaction_id\": \"abc\", \"game_id\": 2001, \"timestamp\": 1709523140, \"signature\": \"...\"}"},"url":"https://your-callback-domain.com/v2/callback/debit"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": 6,\n  \"message\": \"The player has insufficient balance.\"\n}"}],"_postman_id":"89c64c9e-d7d1-4534-8fcd-c1f7d5f9991e"},{"name":"Credit","id":"be5bc6df-daf9-497e-880e-716b1ba31e6e","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"agent\": \"Partner01\",\n  \"username\": \"Player001\",\n  \"amount\": \"1.25000\",\n  \"transaction_id\": \"2f489d44b61f4650af780ab4c28a7745\",\n  \"debit_transaction_id\": \"4146ed8dd6d5497780e9fc273e86bae0\",\n  \"round_id\": \"R307e9124a5314f2795ce583391e1c61c\",\n  \"game_id\": 2001,\n  \"timestamp\": 1709523200,\n  \"signature\": \"5e0a0349ae36ad67cd21d891ab124cce8cc4171c5bd7ef5b26fca86db71f500a\"\n}","options":{"raw":{"language":"json"}}},"url":"https://your-callback-domain.com/v2/callback/credit","description":"<p>Credit the player's win amount after a round completes.</p>\n<p>Called at the <strong>end of every round</strong> — even when <code>amount</code> is <code>\"0.00000\"</code> (no win). This signals round completion to the operator.</p>\n<p><strong>Request Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>agent</code></td>\n<td>string</td>\n<td>Agent identifier</td>\n</tr>\n<tr>\n<td><code>username</code></td>\n<td>string</td>\n<td>Player identifier</td>\n</tr>\n<tr>\n<td><code>amount</code></td>\n<td>string</td>\n<td>Win amount — <strong>always 5 decimal places</strong>. <code>\"0.00000\"</code> for no win</td>\n</tr>\n<tr>\n<td><code>transaction_id</code></td>\n<td>string</td>\n<td>Unique credit transaction ID</td>\n</tr>\n<tr>\n<td><code>debit_transaction_id</code></td>\n<td>string</td>\n<td>The <code>transaction_id</code> from the debit that started this round</td>\n</tr>\n<tr>\n<td><code>round_id</code></td>\n<td>string</td>\n<td>Game round identifier</td>\n</tr>\n<tr>\n<td><code>game_id</code></td>\n<td>integer</td>\n<td>Game being played</td>\n</tr>\n<tr>\n<td><code>timestamp</code></td>\n<td>integer</td>\n<td>Unix timestamp (seconds)</td>\n</tr>\n<tr>\n<td><code>signature</code></td>\n<td>string</td>\n<td>HMAC-SHA256 signature</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Response Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>code</code></td>\n<td>integer</td>\n<td><code>0</code> = success</td>\n</tr>\n<tr>\n<td><code>message</code></td>\n<td>string</td>\n<td>Human-readable status</td>\n</tr>\n<tr>\n<td><code>balance</code></td>\n<td>string</td>\n<td>Balance after credit — <strong>5 decimal places</strong></td>\n</tr>\n<tr>\n<td><code>operator_transaction_id</code></td>\n<td>string</td>\n<td>Operator's own transaction reference</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Idempotency</strong></p>\n<p>If the same <code>transaction_id</code> is received again, respond with <code>code: 8</code> (DuplicateCredit) — this is treated as <strong>success</strong> by our server (no retry).</p>\n<p><strong>Response Codes</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Code</th>\n<th>Meaning</th>\n<th>Action</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>0</code></td>\n<td>Success</td>\n<td>Round settled</td>\n</tr>\n<tr>\n<td><code>8</code></td>\n<td>Duplicate credit (idempotent)</td>\n<td>Treated as success — no retry</td>\n</tr>\n<tr>\n<td><code>1</code></td>\n<td>Invalid signature</td>\n<td>Will retry</td>\n</tr>\n<tr>\n<td><code>99</code></td>\n<td>General error</td>\n<td>Will retry</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["v2","callback","credit"],"host":["https://your-callback-domain.com"],"query":[],"variable":[]}},"response":[{"id":"f931a194-d4ed-499a-bdd0-d7b518200be5","name":"Your Response — Success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"agent\": \"Partner01\",\n  \"username\": \"Player001\",\n  \"amount\": \"1.25000\",\n  \"transaction_id\": \"2f489d44b61f4650af780ab4c28a7745\",\n  \"debit_transaction_id\": \"4146ed8dd6d5497780e9fc273e86bae0\",\n  \"round_id\": \"R307e9124a5314f2795ce583391e1c61c\",\n  \"game_id\": 2001,\n  \"timestamp\": 1709523200,\n  \"signature\": \"5e0a0349ae36ad67cd21d891ab124cce8cc4171c5bd7ef5b26fca86db71f500a\"\n}"},"url":"https://your-callback-domain.com/v2/callback/credit"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": 0,\n  \"message\": \"OK\",\n  \"balance\": \"1000.75000\",\n  \"operator_transaction_id\": \"474e1a293c2f4e7ab122c52d68423fcb\"\n}"}],"_postman_id":"be5bc6df-daf9-497e-880e-716b1ba31e6e"},{"name":"Rollback","id":"a0f9c4c7-9794-487d-880d-a93f052adf63","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"auth":{"type":"noauth","isInherited":false},"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"agent\": \"Partner01\",\n  \"username\": \"Player001\",\n  \"debit_transaction_id\": \"4146ed8dd6d5497780e9fc273e86bae0\",\n  \"game_id\": 2001,\n  \"timestamp\": 1709523145,\n  \"signature\": \"712523e472f936e88b9806a5919326b50de2c71319837e7149b8bfd1da9e09dd\"\n}","options":{"raw":{"language":"json"}}},"url":"https://your-callback-domain.com/v2/callback/rollback","description":"<p>Reverse a previously successful debit when the spin could not be completed.</p>\n<p>Triggered when debit succeeded but the game engine failed to process the spin.</p>\n<p><strong>Request Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>agent</code></td>\n<td>string</td>\n<td>Agent identifier</td>\n</tr>\n<tr>\n<td><code>username</code></td>\n<td>string</td>\n<td>Player identifier</td>\n</tr>\n<tr>\n<td><code>debit_transaction_id</code></td>\n<td>string</td>\n<td>The <code>transaction_id</code> from the debit to reverse</td>\n</tr>\n<tr>\n<td><code>game_id</code></td>\n<td>integer</td>\n<td>Game being played</td>\n</tr>\n<tr>\n<td><code>timestamp</code></td>\n<td>integer</td>\n<td>Unix timestamp (seconds)</td>\n</tr>\n<tr>\n<td><code>signature</code></td>\n<td>string</td>\n<td>HMAC-SHA256 signature</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Response Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>code</code></td>\n<td>integer</td>\n<td><code>0</code> = success</td>\n</tr>\n<tr>\n<td><code>message</code></td>\n<td>string</td>\n<td>Human-readable status</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Idempotency</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Code</th>\n<th>Meaning</th>\n<th>Action</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>0</code></td>\n<td>Success</td>\n<td>Rollback applied</td>\n</tr>\n<tr>\n<td><code>9</code></td>\n<td>Transaction not found (idempotent)</td>\n<td>Treated as success</td>\n</tr>\n<tr>\n<td><code>10</code></td>\n<td>Already rolled back (idempotent)</td>\n<td>Treated as success</td>\n</tr>\n<tr>\n<td><code>1</code></td>\n<td>Invalid signature</td>\n<td>Will retry</td>\n</tr>\n<tr>\n<td><code>99</code></td>\n<td>General error</td>\n<td>Will retry</td>\n</tr>\n</tbody>\n</table>\n</div>","urlObject":{"path":["v2","callback","rollback"],"host":["https://your-callback-domain.com"],"query":[],"variable":[]}},"response":[{"id":"5de90bb7-8cd5-4011-8e30-e3ce568bf30c","name":"Your Response — Success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\n  \"agent\": \"Partner01\",\n  \"username\": \"Player001\",\n  \"debit_transaction_id\": \"4146ed8dd6d5497780e9fc273e86bae0\",\n  \"game_id\": 2001,\n  \"timestamp\": 1709523145,\n  \"signature\": \"712523e472f936e88b9806a5919326b50de2c71319837e7149b8bfd1da9e09dd\"\n}"},"url":"https://your-callback-domain.com/v2/callback/rollback"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": 0,\n  \"message\": \"OK\"\n}"},{"id":"71cfbf9f-8b3e-4a78-932d-2602bcb5d3f4","name":"Your Response — Transaction Not Found","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\"agent\": \"Partner01\", \"username\": \"Player001\", \"debit_transaction_id\": \"unknown_txn\", \"game_id\": 2001, \"timestamp\": 1709523145, \"signature\": \"...\"}"},"url":"https://your-callback-domain.com/v2/callback/rollback"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"code\": 9,\n  \"message\": \"The referenced transaction does not exist.\"\n}"}],"_postman_id":"a0f9c4c7-9794-487d-880d-a93f052adf63"}],"id":"46584a57-20a3-4078-9f59-ae38db9cf330","description":"<p>Endpoints <strong>you must implement</strong> on your platform. Our game server calls these URLs in real time during gameplay.</p>\n<hr />\n<h3 id=\"signature-verification-hmac-sha256\">Signature Verification (HMAC-SHA256)</h3>\n<p>Every callback request includes a <code>signature</code> field. You <strong>must</strong> verify this signature before processing the request.</p>\n<p><strong>Algorithm:</strong></p>\n<ol>\n<li>Collect all request fields <strong>except</strong> <code>signature</code></li>\n<li>Sort the fields alphabetically by key name (ordinal, case-sensitive)</li>\n<li>Concatenate as <code>key=value</code> pairs joined by <code>&amp;</code></li>\n<li>Compute <code>HMAC-SHA256(secretKey, message)</code> using your shared secret</li>\n<li>Convert to <strong>lowercase hexadecimal</strong> — compare with the received <code>signature</code></li>\n</ol>\n<p><strong>Example — Balance request:</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Fields: agent=Partner01, game_id=2001, timestamp=1709523139, username=Player001\nMessage: agent=Partner01&amp;game_id=2001&amp;timestamp=1709523139&amp;username=Player001\nSignature: HMAC-SHA256(secretKey, message).toLowerHex()\n</code></pre><hr />\n<h3 id=\"callback-response-codes\">Callback Response Codes</h3>\n<p>Your endpoint must return HTTP <code>200</code> with a JSON body:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Code</th>\n<th>Constant</th>\n<th>Meaning</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>0</code></td>\n<td>Success</td>\n<td>Processed successfully</td>\n</tr>\n<tr>\n<td><code>1</code></td>\n<td>InvalidSign</td>\n<td>HMAC signature verification failed</td>\n</tr>\n<tr>\n<td><code>2</code></td>\n<td>InvalidParams</td>\n<td>Missing or invalid parameters</td>\n</tr>\n<tr>\n<td><code>3</code></td>\n<td>UserNotFound</td>\n<td>Player account does not exist</td>\n</tr>\n<tr>\n<td><code>4</code></td>\n<td>AgentNotFound</td>\n<td>Agent not found</td>\n</tr>\n<tr>\n<td><code>5</code></td>\n<td>GameNotFound</td>\n<td>Game not found</td>\n</tr>\n<tr>\n<td><code>6</code></td>\n<td>InsufficientBalance</td>\n<td>Player has insufficient balance (debit only)</td>\n</tr>\n<tr>\n<td><code>7</code></td>\n<td>DuplicateDebit</td>\n<td>Transaction already processed — do not deduct again</td>\n</tr>\n<tr>\n<td><code>8</code></td>\n<td>DuplicateCredit</td>\n<td>Credit already applied — treated as success by our server</td>\n</tr>\n<tr>\n<td><code>9</code></td>\n<td>TransactionNotFound</td>\n<td>Referenced transaction not found — treated as success for rollback</td>\n</tr>\n<tr>\n<td><code>10</code></td>\n<td>AlreadyRolledBack</td>\n<td>Already reversed — treated as success for rollback</td>\n</tr>\n<tr>\n<td><code>99</code></td>\n<td>GeneralError</td>\n<td>Unexpected error on your platform</td>\n</tr>\n</tbody>\n</table>\n</div><hr />\n<h3 id=\"retry-policy\">Retry Policy</h3>\n<p>If your endpoint does not return HTTP <code>200</code>, our server will retry up to <strong>50 times</strong> with a <strong>10-second</strong> interval before triggering an automatic rollback.</p>\n","_postman_id":"46584a57-20a3-4078-9f59-ae38db9cf330","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"c8413938-8613-4bdb-b185-44370b3e4168","id":"c8413938-8613-4bdb-b185-44370b3e4168","name":"⚡ Lightning Link Casino Slots — API Integration","type":"collection"}}}],"id":"c83d8503-16fb-49c1-a3a5-a932069064e4","description":"<p>In the <strong>Seamless Wallet</strong> model, players always use your platform's wallet. Our game server calls your <strong>Callback API</strong> to debit/credit balances in real time.</p>\n<p><strong>Architecture</strong></p>\n<pre class=\"click-to-expand-wrapper is-snippet-wrapper\"><code>Player → Game Server → Your Callback API → Your Wallet\n</code></pre><p>This section is split into two parts:</p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Subfolder</th>\n<th>Direction</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>📡 Our API</strong></td>\n<td>You call us</td>\n<td>Game list, launch URL, bet history, free spins</td>\n</tr>\n<tr>\n<td><strong>↩️ Callback API</strong></td>\n<td>We call you</td>\n<td>Balance inquiry, debit (bet), credit (win), rollback, event reward</td>\n</tr>\n</tbody>\n</table>\n</div>","_postman_id":"c83d8503-16fb-49c1-a3a5-a932069064e4","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"c8413938-8613-4bdb-b185-44370b3e4168","id":"c8413938-8613-4bdb-b185-44370b3e4168","name":"⚡ Lightning Link Casino Slots — API Integration","type":"collection"}}},{"name":"🎮 Demo Play","item":[{"name":"List Games","id":"c4c3219c-1cf1-4ad4-b5f1-b26afac37629","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"GET","header":[{"key":"Accept","value":"application/json","type":"text"}],"url":"/v2/game/list","description":"<p>Returns the list of games available for demo play. Response format is identical to the Transfer Wallet game list.</p>\n<p>All games that support demo mode are included. Use <code>game_id</code> values from this response when calling <code>POST /v2/game/demo</code>.</p>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"c8413938-8613-4bdb-b185-44370b3e4168","id":"c8413938-8613-4bdb-b185-44370b3e4168","name":"⚡ Lightning Link Casino Slots — API Integration","type":"collection"}},"urlObject":{"path":["v2","game","list"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"5782f3ee-34c5-4c34-9157-0026fc31fbbe","name":"Success","originalRequest":{"method":"GET","header":[{"key":"Accept","value":"application/json"}],"url":"/v2/game/list"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": {\n    \"games\": [\n      {\n        \"game_id\": 2001,\n        \"title\": \"Happy Lantern\",\n        \"thumbnail\": \"https://cdn.example.com/games/2001/thumb.jpg\",\n        \"release_date\": \"2024-09-01\",\n        \"is_hot\": true,\n        \"series\": \"Lightning Link\",\n        \"rows\": 3,\n        \"cols\": 5,\n        \"lines\": 25,\n        \"volatility\": \"high\",\n        \"week_turnover\": 4820,\n        \"month_turnover\": 19340\n      },\n      {\n        \"game_id\": 2002,\n        \"title\": \"Magic Pearl\",\n        \"thumbnail\": \"https://cdn.example.com/games/2002/thumb.jpg\",\n        \"release_date\": \"2024-11-15\",\n        \"is_hot\": false,\n        \"series\": \"Lightning Link\",\n        \"rows\": 3,\n        \"cols\": 5,\n        \"lines\": 25,\n        \"volatility\": \"high\",\n        \"week_turnover\": 3150,\n        \"month_turnover\": 12780\n      }\n    ]\n  }\n}"}],"_postman_id":"c4c3219c-1cf1-4ad4-b5f1-b26afac37629"},{"name":"Launch Demo Game","id":"541f92f3-acb5-4a9d-a18d-c5db081e3014","protocolProfileBehavior":{"disableBodyPruning":true},"request":{"method":"POST","header":[{"key":"Content-Type","value":"application/json","type":"text"},{"key":"Accept","value":"application/json","type":"text"}],"body":{"mode":"raw","raw":"{\n  \"game_id\": 2001,\n  \"lang\": \"en\"\n}","options":{"raw":{"language":"json"}}},"url":"/v2/game/demo","description":"<p>Generates a demo game launch URL. No user account is required.</p>\n<p><strong>Request Body</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Required</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>game_id</code></td>\n<td>integer</td>\n<td>✓</td>\n<td>Game ID from <code>/game/list</code></td>\n</tr>\n<tr>\n<td><code>lang</code></td>\n<td>string</td>\n<td>✓</td>\n<td>Game UI language code</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Supported Languages</strong></p>\n<p><code>en</code> <code>zh</code> <code>zh-tw</code> <code>ms</code> <code>id</code> <code>th</code> <code>vi</code> <code>ja</code> <code>ko</code> <code>pt</code> <code>es</code> <code>fr</code> <code>de</code></p>\n<p><strong>Response Fields</strong></p>\n<div class=\"click-to-expand-wrapper is-table-wrapper\"><table>\n<thead>\n<tr>\n<th>Field</th>\n<th>Type</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>url</code></td>\n<td>string</td>\n<td>Demo game URL. Can be embedded in an iframe or opened directly.</td>\n</tr>\n</tbody>\n</table>\n</div><p><strong>Notes</strong></p>\n<ul>\n<li>The game launches with virtual demo credits (reset on each session).</li>\n<li>No bets, wins, or balance changes are recorded.</li>\n<li>The URL does not expire on a timer — it remains valid until used or until a new URL is generated for the same game.</li>\n</ul>\n","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"c8413938-8613-4bdb-b185-44370b3e4168","id":"c8413938-8613-4bdb-b185-44370b3e4168","name":"⚡ Lightning Link Casino Slots — API Integration","type":"collection"}},"urlObject":{"path":["v2","game","demo"],"host":[""],"query":[],"variable":[]}},"response":[{"id":"a91bbf9c-a003-4547-b47d-3b0df2254df4","name":"Success","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\"game_id\": 2001, \"lang\": \"en\"}"},"url":"/v2/game/demo"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": true,\n  \"data\": {\n    \"url\": \"https://game.example.com/demo?token=demoSession_2001_en_a1b2c3d4\"\n  }\n}"},{"id":"d60ad3c4-c414-41f9-8a71-7144d675c39c","name":"Error — Invalid Game ID","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\"game_id\": 9999, \"lang\": \"en\"}"},"url":"/v2/game/demo"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"error\": {\n    \"code\": 3001,\n    \"message\": \"The specified game does not exist or is currently unavailable.\"\n  }\n}"},{"id":"df264d1e-6207-4c3d-ba89-f573095752bc","name":"Error — Invalid API Token","originalRequest":{"method":"POST","header":[{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\"game_id\": 2001, \"lang\": \"en\"}"},"url":"/v2/game/demo"},"status":"OK","code":200,"_postman_previewlanguage":"json","header":[{"key":"Content-Type","value":"application/json"}],"cookie":[],"responseTime":null,"body":"{\n  \"success\": false,\n  \"error\": {\n    \"code\": 1001,\n    \"message\": \"Authentication failed. The provided token is missing or invalid.\"\n  }\n}"}],"_postman_id":"541f92f3-acb5-4a9d-a18d-c5db081e3014"}],"id":"3e0ee2a7-70b4-4a93-af07-b2bc3fc42f03","description":"<p><strong>Demo Play</strong> lets players try any game without a real user account or real money.</p>\n<p>This is ideal for:</p>\n<ul>\n<li>Game preview pages on your platform</li>\n<li>Marketing landing pages</li>\n<li>Players who want to try before they play for real</li>\n</ul>\n<p><strong>How it works:</strong></p>\n<ol>\n<li>Obtain a game list via <code>GET /v2/game/list</code></li>\n<li>Call <code>POST /v2/game/demo</code> with a <code>game_id</code> and <code>lang</code></li>\n<li>Redirect or embed the returned URL</li>\n</ol>\n<p>The game launches with virtual demo credits. No balance is tracked and no transactions are recorded.</p>\n<p>All Demo Play endpoints require <code>Authorization: Bearer </code>.</p>\n","_postman_id":"3e0ee2a7-70b4-4a93-af07-b2bc3fc42f03","auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]},"isInherited":true,"source":{"_postman_id":"c8413938-8613-4bdb-b185-44370b3e4168","id":"c8413938-8613-4bdb-b185-44370b3e4168","name":"⚡ Lightning Link Casino Slots — API Integration","type":"collection"}}}],"auth":{"type":"bearer","bearer":{"basicConfig":[{"key":"token","value":""}]}},"variable":[{"key":"baseUrl","value":"","type":"string","description":"Transfer Wallet and Demo Play API base URL (e.g. https://api.yourdomain.com)"},{"key":"seamlessBaseUrl","value":"","type":"string","description":"Seamless Wallet API base URL (e.g. https://seamlessapi.yourdomain.com)"},{"key":"callbackUrl","value":"https://your-callback-domain.com","type":"string","description":"Your platform's callback endpoint base URL"},{"key":"apiToken","value":"","type":"string","description":"Your API Bearer token (provided by us)"},{"key":"agent","value":"Partner01","type":"string","description":"Your agent / partner identifier"},{"key":"secretKey","value":"","type":"string","description":"Your HMAC-SHA256 signing secret (Seamless Wallet Callback API only)"}]}