Scratch Card API
Define the prize pool and pick a scratch mechanic — Cymba resolves each card server-side, returns the full grid the player scratches, and guarantees the card displays exactly the prize that was drawn. Provably fair, RTP-tracked, PAR-sheet exportable.
API example
POST /api/v1/play
Authorization: Bearer cy_live_...
{
"config": "instant-lucky-numbers",
"client_seed": "session-7f3a"
}
{
"result": {
"round_id": "b81d2e...",
"prize": { "prize_id": "p2", "multiplier": 10, "kind": "win" },
"card": {
"mechanic": "match_to_winner",
"meta": {
"winning_numbers": ["4", "19", "33"],
"player_entries": [
{ "number": "19", "prize_id": "p2" },
{ "number": "7", "prize_id": "lose" },
{ "number": "36", "prize_id": "lose" }
]
}
},
"result": { "total_multiplier": 10, "breakdown": { "base": 10 } }
},
"provably_fair": {
"server_seed_hash": "3e1c7d...",
"client_seed": "session-7f3a",
"nonce": 43
}
}
A scratch card's grid is theater. The real game is the prize table behind it: which multipliers exist, at what weights, and what the pool pays back overall. Cymba makes that explicit — you define prize_pool.entries as {id, multiplier, weight} rows, and the scratch presentation is a separate, swappable layer.
That separation is what lets you tune a game's RTP without touching its look, or reskin a card without re-auditing its math.
match_n — reveal N matching symbols to win that symbol's prize. Decoy layouts are generated so near-misses never pay.match_to_winner — classic lottery style: your numbers vs. winning numbers; a hit pays the matched prize.reveal_value — one panel, one value: the drawn prize shown directly.key_symbol — find the key symbol anywhere on the card to unlock the prize.Each is a card.mechanic value plus a small mechanic_config. The prize pool — and therefore the RTP — is untouched when you switch.
Every scratch config exports a PAR sheet: canonical config, theoretical RTP, and deterministic replay fixtures a third-party auditor can run offline. Every live card logs its seed material; /api/v1/verify reproduces the entire grid from revealed seeds, and /api/v1/verify-card audits any displayed card without them. You never have to ask a regulator — or a player — to trust the server.
Cymba does not handle wallets, balances, ticket pricing, player accounts, or licensing. It returns multipliers; your platform handles money and jurisdiction.
Start with a free API key, clone a template, and run your first provably fair spin.