Skip to content

Getting a round replay link

For a specific round a player already played, you can ask the platform for a link that opens a page replaying that round — reels spinning, balance updating, in the same visual sequence the player saw. Useful for support ("show me what actually happened on this bet") or dispute resolution.

How it works

The platform itself never sees a round's visual outcome — only the money movements (BET/WIN/ROLLBACK) a provider submits through the wallet API. Recording and rendering a round's playback is entirely the provider's responsibility. This endpoint's job is narrower: verify the round is yours, then hand you a link into the provider's own replay page.

you (signed)                 platform                          provider's game server
──────────────                ────────                          ───────────────────────
POST /v1/operator/rounds/replay
  { roundId, gameId }    ──▶  checks the round belongs to
                              you + this game
                              mints a short-lived token
                         ◀──  { replayUrl }

open replayUrl in a browser ────────────────────────────────▶  resolves the token,
                                                                looks up its own
                                                                recording for that
                                                                round, renders the
                                                                replay page

Because of this, replay is opt-in per game — check GameSummary.replayBaseUrl (see Listing your game catalog): empty means the game's provider hasn't implemented recording, and this endpoint returns 400. Only rounds played after a provider adds recording are replayable — there's no way to retroactively replay a round that happened before recording was turned on, since the data to reconstruct it was never captured.

Sign and call the endpoint

Same signing scheme as launching a game — see Signing & authentication.

ts
const path = '/v1/operator/rounds/replay'
const body = JSON.stringify({
  roundId,   // the roundId from your own records of this round's transactions
  gameId,
})

const headers = signRequest('POST', path, operatorSecret, body, operatorId)

const res = await fetch(`${platformUrl}${path}`, {
  method: 'POST',
  headers: { ...headers, 'Content-Type': 'application/json' },
  body,
})
if (!res.ok) {
  // 400 (unsupported/missing), 404 (not your round), 401/429 — see the
  // Operator API reference
  throw new Error(`replay request failed: ${res.status} ${await res.text()}`)
}
const { replayUrl } = await res.json()
// Open replayUrl directly (e.g. window.open(replayUrl) from your admin
// tool), or send it to whoever needs to review the round.

See the Operator API reference for the exact request/response shapes and error cases.

replayUrl embeds a short-lived token (15 minutes by default) — request a fresh link each time you need one rather than storing replayUrl itself for later use. roundId (which you already have from your own transaction records) is what you keep; the link is generated on demand.