155API

Get Game URL

Generate a game URL for a player session


Request a game URL with a one-time login code for a player. You can use this URL within an iframe or redirect mobile players to it directly.

When embedding in an iframe, you can use our Iframe Events API to communicate with the game — refresh balance, listen for bet events, detect insufficient balance, and more.

Authentication

This endpoint is authenticated by IP whitelist — your server's outbound IP must match the address registered during onboarding. See Security for details. The X-Marbles-Signature header is not required and is ignored if sent.

Endpoint

POST /game/game/url

Request

POST /game/game/url HTTP/1.1
Host: api.marbles.xyz
Content-Type: application/json

{
  "clientSessionId": "some-session-id",
  "clientPlayerId": "some-player-id",
  "operatorId": "operatorId",
  "partnerId": "my-casino",
  "gameId": "2469f711-2da6-46b7-8648-3313dfdc5bb5",
  "username": "unique-username",
  "currency": "USD",
  "platform": "MOBILE",
  "displayName": "Player Display Name",
  "lobbyUrl": "https://mylobby.url",
  "depositUrl": "https://mydeposit.url",
  "language": "en",
  "country": "US"
}

Parameters

ParameterTypeRequiredDescription
clientSessionIdstringYesYour session identifier for this player
clientPlayerIdstringYesYour unique player identifier
operatorIdstringYesYour operator identifier (provided by 155.io)
partnerIdstringYesYour chosen identifier for the website/casino offering the game (you define this)
gameIdstringYesGame UUID from the /game/games endpoint
usernamestringYesUnique username for the player
currencystringYesISO 4217 currency code (see Currencies)
platformstringYes"MOBILE" or "DESKTOP"
displayNamestringNoNon-unique display name shown in game
lobbyUrlstringNoURL to redirect player back to lobby
depositUrlstringNoURL for player to make deposits
languagestringNoISO 639-1 language code (see Languages)
countrystringNoISO 3166-1 alpha-2 country code

Success Response

HTTP/1.1 200 OK
Content-Type: application/json

{
  "url": "https://game.marbles.xyz?otl=ABCDE...XYZ&country=US&language=en"
}

Response Fields

FieldTypeDescription
urlstringGame URL with one-time login token

Fun Money Mode

Demo Mode

You can generate a demo link that lets players test the game with fun money by:

  1. Omitting clientSessionId and clientPlayerId
  2. Setting currency to XXX

username is still required in demo mode — only clientSessionId and clientPlayerId are omitted. This is useful for game previews or demo modes on your platform.

Example Fun Money Request

{
  "operatorId": "operatorId",
  "partnerId": "my-casino",
  "gameId": "2469f711-2da6-46b7-8648-3313dfdc5bb5",
  "username": "demo-player",
  "currency": "XXX",
  "platform": "DESKTOP"
}

Multi-brand & aggregators

One integration covers all brands under your umbrella — you do not file a separate application per brand. Distinguish brands at runtime with partnerId on each /game/url call:

  • It's a free-form value you choose (e.g. a brand name) and needs no pre-registration.
  • It is not the same as operatorId (your integration ID) — never set partnerId equal to operatorId.

All brands under one operator config share its settings (liability, limits, key, callback URL). A brand that needs a different max exposure/liability, bet limits, commercial rates, signing key, or callback URL needs its own operator config — see Multi-brand & operator configs.

Multi-currency is supported under a single clientPlayerId — do not append the currency to the player ID. Pass the currency on each /game/url call; each call opens an independent session in that currency for the same player.

On this page