Getting started
Core concepts
Project (partner)#
A project is your integration on the platform. It is identified by the partner id and has:
- an API key (
api_key) sent in the body of your requests and echoed back in every wallet callback; - a callback URL: your wallet endpoint;
- an IP allowlist of your server networks;
- allowed iframe origins: the sites that may embed the game (Embedding);
- settings: default currency and language, enabled providers and features, bet limits, RTP.
The platform owner creates the project and gives you the partner id and the API key. Your staff then work with the project in the admin panel.
Real-wallet mode and demo mode#
Every game can be launched in two ways, selected by gametype in Game launch:
| Mode | gametype | Money |
|---|---|---|
| Real-wallet mode | "demo" | The session plays against your wallet through the wallet callbacks. The value is named demo for historical reasons. |
| Demo mode | "fun" | Free play on an isolated demo wallet; your wallet is never called and nothing reaches your reports. See Demo mode. |
Player#
A player is whoever you identify by player_id: a string of 1 to 128 printable ASCII characters that you choose. The platform treats player_id as an opaque key in launch, wallet callbacks, free spins, target outcomes and RTP.
Currency and money#
The platform accepts all 157 ISO 4217 fiat currencies and treats every one of them as having two decimals. The list, and what is not supported, is on the Currencies page.
Amounts appear in three forms depending on where they are used:
| Where | Form | Example for 12.50 |
|---|---|---|
Wallet callbacks (amount, balance) | JSON number in currency units | 12.50 |
Free spins (bet, total_win), reports, demo_balance | decimal string in currency units | "12.50" |
Limits (min_minor, max_minor) and the admin API | minor units as a string (1/100 of a unit) | "1250" |
The exact rules (decimals, digits, how the platform writes numbers) are in Conventions.
Session#
Launching a game creates a session bound to the player, the game, the currency and the language. The response contains meta.session_id and a link that carries the session token; give it only to that player. A session expires 2 hours after it was created; relaunching while a round is unfinished revives it so the round can be finished.
Round#
A round is one paid game cycle (a spin and everything it triggers: free games, bonus rounds, gamble). The platform tracks each round through these steps:
- the platform asks your wallet to debit the stake (
bet); - once the debit is confirmed it sends
round_infowithstatus: "start"; - the outcome is played out in the game;
- if the round pays, the platform asks your wallet to credit it (
win); - after the credit is confirmed it sends
round_infowithstatus: "finish".
If the wallet refuses the debit, the round is rejected and nothing is played. A round that was started is never dropped: a reload or relaunch continues it. Free-spin rounds follow the same flow with a bet of 0, but their wins are paid once at the end of the grant: see Free spins and win.
Providers, games and modes#
Games belong to one of three provider families (endorphina, pragmatic, nolimitcity). A game is addressed by its game id (symbol in the launch request, game_id in the catalog). Each game offers a base mode (spin) and may offer others, such as bonus buy, ante bet or gamble; the optional modes can be switched on or off per provider in the project settings.
What else is attached to a player#
| Object | Purpose | Page |
|---|---|---|
| Free-spins grant | A number of spins at a fixed bet, given by the operator | Free spins |
| Target outcome | A scheduled result for one of the player's paid spins | Target outcomes |
| Personal RTP | The return-to-player level used for the player's rounds | RTP management |
| Player bet limit | A personal minimum / maximum bet per currency | Bet limits |