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
| State | Meaning |
|---|---|
PENDING_DEBIT | the debit is being sent |
ACTIVE | the stake is taken; the round is open |
CLOSED | settled |
VOIDING, VOIDED | the debit was refused or its outcome was unknown, so the RGS is reversing it |
CLOSED_UNSEEN | a 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.