Integration
Game launch
POST https://notell-api.com/playGame.do creates a session for a player and returns a link to the game client.
Request#
{
"provider": "own",
"partner": "YOUR_PARTNER_ID",
"api_key": "YOUR_API_KEY",
"player_id": "player-123",
"symbol": "gates-of-olympus",
"currency": "UAH",
"gametype": "demo",
"lang": "de",
"client_platform": "mobile"
}| Field | Required | Description |
|---|---|---|
provider | yes | Always "own". |
partner | yes | Your project id. |
api_key | yes | Your project's API key. |
player_id | yes | Your player id, 1–128 characters. |
symbol | yes | Game id from /games/health (game_id) or the games list. An unknown id gives UNSUPPORTED_GAME (404). |
currency | yes | UAH, USD, EUR or RUB. |
gametype | yes | Always "demo" (see below). |
lang | no | Standard language code, e.g. en, de, pt-BR, zh-Hant. Missing = the project's default language. See Languages. |
client_platform | no | desktop (default) or mobile. Selects the desktop or mobile client build of Pragmatic Play titles; it has no effect on the other providers. |
region | no | RU or NONE. Accepted for compatibility; it does not change the session. |
Any other field makes the request fail with INVALID_REQUEST; the old freespins field is refused with PROMO_UNSUPPORTED — use free spins via /gameActions.do. There is no lobby or return-URL parameter: handle navigation back to your site in your own page around the game.
Optional header: Idempotency-Key (see Conventions).
Demo and real mode#
The platform runs in TEST_ONLY mode. gametype must be demo; any other value is answered with HTTP 400 REAL_MODE_DISABLED. The balance used is the one your wallet reports in session_info.
Response#
{
"status": "ok",
"link": "https://notell-api.com/… (game client address with the session token)",
"meta": {
"session_id": "9d0c3f7e-…",
"currency": "UAH",
"language": "de"
}
}| Field | Description |
|---|---|
link | The URL to open in the player's browser. It contains the session token: hand it only to this player and do not log it. |
meta.session_id | Id of the session; it also appears in your wallet callbacks. |
meta.currency, meta.language | The currency and the standard language code of the session. |
The meta object may contain additional informational fields about the game build; ignore the ones you do not know.
What happens during launch#
- The key is checked (
UNAUTHORIZEDotherwise) and the body is validated. - The platform calls your wallet with
session_infofor the player. If it does not succeed, the launch fails withBALANCE_UNAVAILABLEand no session is created. - The session is stored (it expires 2 hours after creation) and the link is returned.
Relaunching and unfinished rounds#
- A player with an unfinished round in the same game always continues it: the launch returns a link to the session that owns the round (an expired session is revived with a fresh token and expiry).
- If you relaunch in a different language while a round is unfinished, the session switches to the new language.
- If the unfinished round is in a different currency, the launch is answered with
ROUND_IN_PROGRESS; launch with the original currency. - Repeating the call with the same
Idempotency-Keyand body returns the same link.
Errors#
| Code | HTTP | Cause |
|---|---|---|
UNAUTHORIZED | 401 | Unknown partner or wrong api_key |
INVALID_REQUEST | 400 | Missing/invalid field, unknown field, player_id empty or longer than 128 |
UNSUPPORTED_GAME | 404 | symbol is not published |
UNSUPPORTED_LANGUAGE | 400 | lang malformed or not offered by the game |
REAL_MODE_DISABLED | 400 | gametype is not demo |
PROMO_UNSUPPORTED | 400 | Legacy freespins field sent |
BALANCE_UNAVAILABLE | 400 | Your wallet did not answer session_info successfully |
ROUND_IN_PROGRESS | 400 | Unfinished round in another currency |
INVALID_IDEMPOTENCY_KEY / IDEMPOTENCY_CONFLICT | 400 / 409 | See Conventions |
All codes: error reference.