Rounds and reconciliation

Your wallet is the system of record for balances. The RGS keeps the authoritative record of what it sent and what you confirmed. These calls let you check the two against each other, answer a player's dispute, and show a round's replay.

All three use the full-request signing form and are scoped to your operator: another operator's round is a plain 404.

One settled round: GET /v1/bet/{id}

{id} is the round id (the wallet's round). Returns the round once it is settled (CLOSED, VOIDED or CLOSED_UNSEEN); an open or unknown round is 404. SDK: rgs.bet(id).

POST /runecode/v1/rounds/get

Select a round by one of:

{ "round": 4119983943 }
{ "transaction": "019a1b2c-3d4e-7f60-8a1b-2c3d4e5f6a7b" }      // an RGS debit, credit or rollback id
{ "operatorTransaction": "wal-77812" }                           // the debit_id / credit_id your wallet returned

The answer carries the round's status (PENDING_DEBIT, ACTIVE, CLOSED, VOIDING, VOIDED, CLOSED_UNSEEN), your user, the game, the release (front and math versions), the mode, currency, bet and payout as decimal strings, open and close times, every wallet leg with its state, operatorId and attempt count, and a replayUrl. SDK: rgs.roundsGet(selector).

Replay

replayUrl is a public link that replays the round exactly as it was played. It needs no session and contains no player data, and it stays valid for as long as the game version exists. Use it in your round history or support tools.

POST /runecode/v1/transactions/get

By { "id": "<RGS id>" } or { "operatorId": "<your id>" }. Returns the leg, its round, the masked token (last six characters), the exact signed bytes the RGS sent to your wallet (Base64) and each attempt's status, code and latency. This is the tool for "did you charge this?": it also shows that retries are byte-identical. SDK: rgs.transactionsGet(selector).

Round states

StateMeaning
PENDING_DEBITthe debit is being sent
ACTIVEthe stake is taken; the round is open
CLOSEDsettled
VOIDING, VOIDEDthe debit was refused or its outcome was unknown, so the RGS is reversing it
CLOSED_UNSEENa debit landed after the RGS gave up on it, so a real round was played that the player never saw; reconciled as played

Reconciling

Reconcile daily. The RGS will run the reconciliation itself and open a break for any mismatch (missing at the operator, missing at the RGS, amount, state), with an agreed response time. You provide the data either as a daily transaction file or by making your wallet's transactions searchable by RGS id. Until the feeds are live (see Availability), reconcile with transactions/get and rounds/get by operator transaction id.

Retention: lookups are synchronous inside a hot window (14 days by default); older rounds are served by an asynchronous job. Transaction ids stay resolvable forever.