Operator platform
Everything around the game,
not just the game.
One integration, every game
One REST API
The whole catalogue behind a single integration. Adding a game is a toggle in your dashboard — no new endpoints, no release on your side.
Signed sessions
Launch tokens are short-lived and scoped to one operator, one player and one game. They carry no credential of yours.
Multi-tenant isolation
The tenant is taken from your signed token, never from a request field. There is nothing to get wrong, and nothing to spoof.
Versioned mathematics
Every game release is versioned and each round records the version it ran on. A payout table change is a new release, never an edit.
Decimal strings, always
Amounts cross the wire as strings, never JSON numbers. A rounding difference between your ledger and ours is the one bug that is expensive to unpick later.
Free sandbox
Play money, the same engine, the same idempotency contract. A result you get in test is the result you would have got live.
Settlement that survives a bad afternoon
// The same id every time. That is what makes the retry safe.
for (let attempt = 0; attempt < 5; attempt++) {
try {
return await api.post("/v1/transactions/bet", {
transaction_id: bet.id, // yours, persisted with the bet
round_id: bet.roundId,
player_id: bet.playerId,
amount: bet.amount, // "10.00", never 10.0
currency: bet.currency,
});
} catch (err) {
if (!err.retryable) throw err; // the API tells you which it is
await sleep(2 ** attempt * 250);
}
}Idempotent on your idenforced in the database | Send the same transaction_id twice and the money moves once. A replay returns the original result. |
Timeouts are recoverable504, marked retryable | If your wallet does not answer we leave the transaction pending and tell you to retry with the same id — rather than guessing. |
Append-only ledgerenforced by a trigger | Entries are never updated or deleted. A correction is a new entry pointing at the old one, so a report run twice returns the same answer. |
Resumable cash-outACTIVE → SETTLING → WON | A crash cash-out that times out mid-settlement resumes at the same multiplier. A player is never shown a win we then fail to pay. |
Provably fair, and checkable
The server seed is committed as a SHA-256 hash before any round is played, and revealed when it is rotated. With the revealed seed, a player can recompute every round played under it and confirm we did not choose an outcome after seeing their bet. Revealed seeds are stored append-only.
Server seeds come from the operating system's CSPRNG. Nothing in the engine calls a seeded or time-based generator, and the engine has no access to a balance or a stake when it computes an outcome — the mathematics and the money are separate layers by design.
const hash = sha256(`${serverSeed}|${clientSeed}|${nonce}`);
// 13 hex digits = 52 bits, exactly a double's mantissa,
// so this division loses nothing.
const value = parseInt(hash.slice(0, 13), 16) / 2 ** 52;Operations you can actually run
Signed webhooks
HMAC-SHA256 over the raw body, retried with exponential backoff over roughly 24 hours, idempotent on a stable event id. Failed deliveries are replayable from the dashboard.
Request logs
Every call you made — endpoint, status, timing and request id — searchable in the dashboard. The first stop when production behaves differently from your machine.
Audit log
Who changed what, and when. Credentials, game toggles, limits and account changes are all recorded.
Reporting
Headline figures, per-game performance and daily series, scoped by environment so sandbox never pollutes live numbers.
IP allowlisting
Pin live credentials to a set of source addresses. Requests from anywhere else are refused before the secret is even checked.
Credential rotation
Rotate with an overlap window so you can deploy without downtime, or revoke instantly if something leaks.
The sandbox is the honest demo
It is not a simulator. Rounds are computed by the same versioned engine, with the same fairness commitments, settled through the same idempotent state machine. Sign up and you have credentials before you finish reading this page.