155API

Get Player Bets

Look up a player's bet history


Look up the bet history for a specific player. Results are scoped to your integration — you can only see bets placed by your players. This is useful for resolving player support requests or reconciliation.

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/bets

Request

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

{
  "operatorID": "abc123",
  "externalPlayerID": "22893236",
  "from": "2026-03-19T00:00:00Z",
  "to": "2026-03-20T00:00:00Z",
  "limit": 25
}

Parameters

ParameterTypeRequiredDescription
operatorIDstringYesYour unique operator identifier provided by 155.io
externalPlayerIDstringYesYour player identifier (the clientPlayerId used when launching the game)
fromstringNoISO 8601 timestamp — only return bets placed after this time
tostringNoISO 8601 timestamp — only return bets placed before this time
limitintegerNoMaximum number of bets to return. Default: 25, maximum: 100 (higher values are silently clamped to 100). There is no pagination cursor — to cover more than 100 bets, narrow the from/to window and page by time

Success Response

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

{
  "status": 200,
  "data": {
    "bets": [
      {
        "id": "8a275342-bc24-5acd-b1f0-4bb9331ce010",
        "status": "won",
        "amount": 500000,
        "payout": 2500000,
        "currency": "USD",
        "betType": "PickWinner",
        "gameName": "Fish Tank",
        "roundId": "949223e9-2238-59f8-a16b-936ffc7fe3c5",
        "createdAt": "2026-03-20T11:59:50Z",
        "updatedAt": "2026-03-20T12:00:10Z"
      },
      {
        "id": "4001ebd2-d8e5-5b38-90c1-c3b1ea7fe347",
        "status": "lost",
        "amount": 300000,
        "payout": 0,
        "currency": "USD",
        "betType": "PickWinner",
        "gameName": "Fish Tank",
        "roundId": "a8c81652-cbd4-4b5d-94cd-5585715e6133",
        "createdAt": "2026-03-20T11:55:30Z",
        "updatedAt": "2026-03-20T11:56:00Z"
      }
    ]
  }
}

Response Fields

FieldTypeDescription
idstringBet UUID
statusstringBet status: pending, won, lost, voided, or cashed_out (cashed_out appears only on Footfall bets the player cashed out before the crash)
amountintegerInteger at the currency's wire precision — the same scale as the amount on the /bet and /win callbacks (USD: $5.00 = 500000). See Currencies
payoutintegerActual payout, same scale as amount: won → the full winning payout; cashed_out → the realised cash-out amount (stake × multiplier at cash-out); pending, lost, voided0
currencystringISO 4217 currency code
betTypestringBet type (see Bet Types)
gameNamestringDisplay name of the game
roundIdstringRound UUID — use this with /game/round to get full round details and the race clip
createdAtstringISO 8601 timestamp when the bet was placed
updatedAtstringISO 8601 timestamp when the bet was last updated

Results are sorted by createdAt in descending order (newest first). Use the roundId from the response to look up full round details including the race recording via the Get Round Details endpoint.

Error Response

HTTP/1.1 400 Bad Request
Content-Type: application/json

{
  "error": "Validation error",
  "details": "Property 'externalPlayerID' is required"
}

Error Statuses

StatusHTTP CodeDescription
Invalid Integration IP400Request originated from an unrecognized IP address
Validation error400Missing or invalid request parameters
Invalid date format400from or to is not a valid RFC3339 timestamp
Too many requests429Rate limit exceeded — max 60 requests/minute per source IP, shared across /game/bets and /game/round (see Rate limits)

On this page