MG+ Third-Party Game Provider Integration Guide
Breadcrumbs

Authenticate - Player Authentication

Authenticates the player for real-play mode. Validates player identifiers and sets up a session for gameplay.

POST /v1/authenticate

Headers: X-HMAC-Signature, X-Request-ID

Request

Request Parameters

Field

Required/Optional

Data Type

Description

launchToken

Required

string

JWT used to authorize the game session.

provider

Required

string

Identifier for the game provider, normally the studio name.

game

Required

string

Identifier for the game being launched.

ip

Required

string

IPv4 address of the player.

platform

Required

enum

Type of platform. Possible values: mobile, desktop.

Request Example

JSON
{
  "launchToken": "eyJhbG9hshdgjh38Gsjsk3jdl",
  "provider": "gameprovider",
  "game": "fantasyquest",
  "ip": "1.2.3.4",
  "platform": "mobile"
}

Response

Response Parameters

Field

Required/Optional

Data Type

Description

playerId

Required

string

Unique identifier for the player.

playerToken

Required

string

Token for this player/game session. Must be sent as Authorization: Bearer {playerToken} in subsequent API requests. This token is limited to this player and game only.

brand

Required

string

Player’s brand identifier. For test users excluded from billing, the value will be "test_brand".

balance

Required

decimal

Current balance of the player, in player’s currency.

balanceInfo

Required

object

Object containing ISO currency code and currency multiplier.

sessionInfo

Required

object

Object with URLs and game-specific session information.

freeGameInfo

Optional

array

List of free games available to the player for this game.

Response Example

JSON
{
  "playerId": "44-12345-67890",
  "playerToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXV",
  "brand": "12345",
  "balance": 1500.50,
  "balanceInfo": {
    "currency": "usd",
    "currencyTruncation": 1
  },
  "sessionInfo": {
    "lobbyUrl": "https://operator.example/lobby",
    "depositUrl": "https://operator.example/deposit",
    "gameConfig": {
      "maxExposure": 100000,
      "minBet": 1,
      "maxBet": 500,
      "defaultBet": 10
    }
  },
  "freeGameInfo": [
    {
      "instanceId": 1,
      "offerId": 99,
      "offerName": "Sample Free Spins",
      "instanceInfo": {
        "canBeRejected": false,
        "nearestCostPerBet": 5,
        "numberOfRoundsRemaining": 3,
        "numberOfRoundsAwarded": 10,
        "instanceStartDateUtc": "2025-05-23T11:54:37Z",
        "instanceEndDateUtc": "2025-05-25T13:34:37Z"
      }
    }
  ]
}

balanceInfo object

Field

Required/Optional

Data Type

Description

currency

Required

string

Lowercase ISO 4217 currency code for the balance (e.g., "usd"). Cryptocurrency or virtual currency codes are also supported where relevant.

currencyTruncation

Required

integer

A value of 1 means the reported balance is the actual currency amount. If set to a higher number, such as 1000, the balance has been scaled down for display (for example, 1 VND shown to the player represents 1000 VND in actual currency).

Games always display balances in player currency; the multiplier is provided for accurate financial reporting on the game provider side.

sessionInfo object

Field

Required/Optional

Data Type

Description

lobbyUrl

Optional

string

URL to return the player to the lobby.

depositUrl

Optional

string

URL for the deposit flow.

gameConfig

Optional

object

Object containing game configuration details. See gameConfig object below.

gameConfig object

This object can change depending on the game type - for example, Buy Features might have different properties.

Field

Required/Optional

Data Type

Description

maxExposure

Optional

decimal

Maximum allowed exposure for game.

minBet

Optional

decimal

Minimum allowed bet for game.

maxBet

Optional

decimal

Maximum allowed bet for game.

defaultBet

Optional

decimal

Default bet for game.

freeGameInfo object

Field

Required/Optional

Data Type

Description

instanceId

Required

integer

Unique identifier for the free game instance.

offerId

Required

integer

Unique identifier for the free game offer.

offerName

Required

string

Name for this free game offer.

instanceInfo

Required

object

Details about the free game instance.

instanceInfo object

Field

Required/Optional

Data Type

Description

canBeRejected

Required

boolean

Indicates if this free game set can be rejected by the player.

nearestCostPerBet

Required

decimal

Closest cost-per-bet for this offer, per round.

numberOfRoundsRemaining

Required

integer

Rounds left to play.

numberOfRoundsAwarded

Required

integer

Total rounds awarded.

instanceStartDateUtc

Required

string

Available time, as ISO 8601 UTC datetime string (e.g. "2025-05-25T13:34:37Z").

instanceEndDateUtc

Required

string

Expiry, as ISO 8601 UTC datetime string (e.g. "2025-05-25T13:34:37Z").