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 pageBecause 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.
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.
The link expires
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.