Provider API
Sessions
Launch a player session and close it.
POST
/provider/v1/sessions201| Field | Type | Required | Notes |
|---|---|---|---|
| player_id | string, 1–128 printable ASCII | yes, unless demo | sent back on every money leg |
| operator_id | string, 1–128 | yes, unless demo | sent back on every money leg |
| currency | EUR or USD | yes | |
| wallet_session | string, up to 512 | no | your token, sent back as session on every money leg |
| language | en, en-GB… | no | the game shows English for every value |
| country | ISO 3166-1 alpha-2 | no | stored with the session |
| platform | mobile or desktop | no | layout hint, default desktop |
| demo | boolean | no | play money: 1,000.00 in the currency, no money legs |
| bonus_buy | boolean | no | default true; false hides and refuses the MULTIBALL buy (100x) |
Answer 201
{
"session_id": "0b8e5d1c-6f0a-4f43-9d5e-0a4b6c2d9f10",
"launch_url": "https://<game-host>/game/index.html?sessionID=<43-char token>&lang=en&device=mobile¤cy=EUR&rgs_url=<game host>",
"expires_at": "2026-10-21T08:00:00.000Z",
"server_seed_hash": "<sha256 hex of the first server seed>",
"demo": false
}The launch URL is a credential
The sessionID in it is the player's bearer token. We store only its SHA-256, our logs redact it, and the page is served with Referrer-Policy: no-referrer and Cache-Control: no-store. It is valid for 12 hours or until the session is closed.
Measured locally against a mock wallet: launch median 4 ms (max 12), play median 19 ms (p95 28), end-round median 19 ms (p95 31). Your wallet's own time comes on top of play and end-round.
Close a session#
POST
/provider/v1/sessions/{session_id}/close200Body {}. Answer {"closed": true|false}. No new rounds after it; a round already paid for still settles.
Demo sessions#
demo: true at launch gives play money in the session (1,000.00), the same outcome tables and no money legs.