The one-page technical picture your engineers need before the kickoff call: the request path, the wallet contract, the fairness math, and the exact route from sandbox to a real production round. No SDK lock-in — a REST endpoint and a gRPC wallet you already know how to build.
Bets ride REST; money rides gRPC. Both call the same bet service, the same idempotency and nonce machinery — a round placed over one replays over the other. Nothing about your balances ever leaves your side of the wire.
/api/v1/betOne JSON endpoint for all 68 games. Your backend signs each call
HMAC-SHA256 (X-API-Key / X-Timestamp / X-Signature,
±30s window). Amounts are decimal strings — no floats, ever.
The RGS calls your wallet over gRPC with mutual-TLS. Unary request/response on the
money path — every call carries its full idempotent identity
(roundId / actionId / requestId).
Each operator gets its own edge with an IP allow-list. Your keys, your currencies, your granted game set — no shared blast radius with other operators.
A pure-Go engine that never touches player money. We own the RNG, the math and the audit trail; you own every balance. Settlement is a call into your ledger.
Implement two gRPC methods and you are wired. The second one is the difference between three round-trips and one.
The source of truth for recovery. On any timeout — which always means UNKNOWN, never failure — you query by operation id to learn whether a debit or credit actually landed. Idempotent, side-effect-free.
requestId / roundIdFor instant games, the debit-then-credit pair collapses into one call carrying the gross stake and gross win. The wallet applies both legs both-or-neither and keeps two ledger records — turnover and GGR stay exact. It halves wallet round-trips on most games.
The full life of a single instant bet — from the player's tap to a settled, verifiable round. The money path is the two arrows into your wallet.
Every outcome is locked before the bet and recomputable after it — by anyone, without an account. This is a support-ticket deflector as much as a fairness guarantee.
sha256(server_seed)
Published before the round. The outcome is bound before play begins.
HMAC-SHA256(
server_seed,
client_seed:nonce)
Deterministic and replayable. Impossible to influence from the browser.
server_seed → shown
Seed rotation reveals the server seed. The commit hash now checks out.
POST /api/v1/seed/verify
Recompute any historical round at a public endpoint. Shareable dispute pages.
You choose the return-to-player per game when you launch it; the exact value is snapshotted into every round so the audit trail is unambiguous. Never above 100%.
One signed POST in; a settled, verifiable round out. Amounts are decimal strings at currency-exponent precision.
Build the whole thing against play money first. Real money is two gates away — and neither gate is a rewrite.
Instant access with play money. No contract, no card. Build the full flow with the built-in demo wallet.
Implement GetTransaction + SettleBet over gRPC. Self-service certification with expected-vs-received diffs — run it to all-pass.
Fill your production wallet URL + webhook, set currencies and per-currency bet limits, pin the IP allow-list.
Gate 1 · conformanceRequest go-live; a review confirms the wallet and fairness probes, then the switch flips to pk_live_.
One REST endpoint, one gRPC wallet, a conformance suite that tells you exactly what to fix. The house always settles — and it settles fast.