Beta testing Free API keys are open for testing. Paid tiers are waitlisted while we harden billing, legal, and audit workflows.
Open beta GLI / BMM auditable PAR-sheet ready

Slot math,
as an API.

Ship slot games without building the math engine. POST a JSON config — get back provably fair, replayable multipliers in under 40 ms.

HMAC precision 52-bit
Eval modes 6
Megaways max 117,649
Monte Carlo 200k
POST /api/v1/spin
resolving · 28ms
Request
// curl
curl -X POST /api/v1/spin \
  -H "Authorization: Bearer cy_live_***" \
  -d '{
    "config": "luna-rush-v2",
    "lines": 20,
    "bet": 1.00,
    "client_seed": "b7c2…",
    "nonce": 42
  }'
Engine resolving
Round · — ×
Response 200 OK
// → application/json
{
  "result": {
    "reels": […],
    "wins": […],
    "total_mult": ,
    "round_id": "…"
  },
  "provably_fair": {
    "server_seed_hash":
      "",
    "client_seed": "b7c2…",
    "nonce": 
  }
}
01 · Features

Everything you need
to ship fair games.

Stop reinventing slot math. Focus on the player experience — Cymba handles the engine.

Provably fair by default

Every spin uses HMAC-SHA256 of (server_seed, client_seed, nonce) — 52 bits of mantissa per draw. Commit hashes published before the bet; verify anywhere.

HMAC-SHA256 commit · reveal

Paylines, ways, and clusters

Six evaluation modes built in — consecutive paylines, full-line, ways-to-win (243 → 117,649 megaways-style), count-pay, and cluster pays with BFS adjacency. Switch in the config, not the code.

paylines ways cluster count-pay

Every mechanic you need

Cascading reels with multiplier progression, free spins with retriggers, hold & respin, mystery symbols, gamble, jackpots, meters, random multipliers, linked reels, symbol groups — plus the full wild family: expanding, sticky, stacked, walking, bomb, split, multiplier.

cascades free-spins hold & respin wild family

Theoretical & observed RTP

Exact combinatorial RTP where the math admits it, Monte Carlo at 200k samples otherwise. Volatility, scatter distribution, free-spin contribution — all returned in one shape.

combinatorial 200k samples /rtp

One JSON config = the game

Reels, symbols, payouts, scatter rules, cascade settings, wild traits — one object. Pin it on the dashboard, version it, or pass inline per request. Diffable and hash-stamped.

declarative versioned hash-stamped

One dashboard, full control

Manage API keys, configs, and spin analytics from a single dashboard. Track total spins, multipliers, observed RTP, and top-performing configs at a glance.

analytics keys configs

Independently auditable — without trusting us

Every config exports a self-contained PAR sheet your math consultant can verify offline: canonical config, theoretical RTP, math reference inline, and five deterministic replay fixtures. Every live spin is replayable from (server_seed, client_seed, nonce). Match GLI / BMM expectations without giving regulators access to our engine.

How verification works
02 · Engine

One grid. Six ways
to count a win.

Click a mode below. Same 5×3 reel positions; the engine resolves them differently. Config snippet beneath each tab is exactly what flips the path — no code change.

active
direction
min match
wilds
complexity

                
03 · Audit

Trust is a protocol,
not a promise.

Commit the seed before the bet. Reveal it at rotation. Anyone — your player, your auditor, GLI — can replay any spin and reach the same outcome, byte for byte. Try it below: mutate one character and watch integrity break.

1Commit

Seed hash published

Before any bet, Cymba publishes SHA-256 of a fresh server seed. The seed itself stays sealed until rotation.

server_seed_hash
a3f1c87b29d4…ee01
2Bet

Client seed + nonce

Player supplies a client seed; nonce increments per spin within the session.

client_seed b7c2f0…
nonce 42
3Resolve

HMAC → outcome

HMAC-SHA256(seed, client:nonce) maps to reel positions, scatter triggers, cascade orders. 52 bits per draw.

hmac(s, c:n)
→ reel_positions
4Reveal

Seed disclosed

At rotation, the original server seed is published. Anyone can rehash and verify every spin under it.

server_seed
9b41a8…f7e0
Verify a spin yourself

A real replay fixture from basic-payline. Mutate any character — watch the integrity guarantee bite.

hmaccomputing…
→ reels
→ win
expected231× total · K×3 + 10 free spins
04 · Setup

Three steps to your first spin.

Go from zero to provably fair results in under five minutes. No SDK to install.

1

Define your game

Reels, symbols, paylines, wilds, bonus mechanics — as one JSON config. Store it on the dashboard or pass it inline.

{
  "name": "luna-rush-v2",
  "reels": [5, 3],
  "eval": "ways",
  "ways": 243,
  "wilds": ["expanding"],
  "free_spins": { "retrigger": true }
}
2

Grab your API key

Sign up, pick a plan, and mint a cy_live_ key. Free during the open beta — no card required.

cy_live_9f4a2c8e1b6d7039
cy_test_11ee44aa00bb2233

→ scoped to your org
→ rotate via dashboard
3

POST /api/v1/spin

Send your config ID and number of lines. Get back reel positions, win multipliers, and provably-fair seeds in one shot.

POST /api/v1/spin
{
  "config": "luna-rush-v2",
  "lines": 20,
  "bet": 1.00
}

200 OK
Pricing

Simple, transparent
pricing.

Start free, scale when you're ready. Free tier is open during the beta — paid tiers join a waitlist while billing and audit workflows harden.

Indie

$19/mo

  • 25,000 spins/month
  • 120 requests/min
  • 5 API keys
  • 10 game configs
  • Email support
Join Waitlist

Studio

$149/mo

  • 500,000 spins/month
  • 300 requests/min
  • 20 API keys
  • 50 game configs
  • Priority support
Join Waitlist

Operator

Custom

  • Unlimited spins
  • Unlimited rate
  • Unlimited keys
  • Unlimited configs
  • Dedicated support
Contact Sales
05 · FAQ

Frequently asked questions.

Q · 01 What is a slot math engine?

It resolves spins — given a game config and a bet, it determines the outcome (reel positions, wins, bonuses) using the defined math model. You build the visuals; Cymba does the math.

Q · 02 Is Cymba a casino?

No. Cymba provides the math engine as an API. You build the front-end, run your own platform, and handle your own licensing.

Q · 03 What game types are supported?

Payline games (consecutive, full-line, or both), ways-to-win (243, 1024, up to 117,649 including megaways-style dynamic reels), count-pay, and cluster pays. The engine also supports cascading reels, free spins with retriggers, hold & respin, mystery symbols, gamble, jackpots, linked reels, meters, and a full wild family (expanding, sticky, stacked, walking, bomb, split, multiplier).

Q · 04 How does provably fair work?

Each spin combines a server seed, client seed, and nonce via HMAC-SHA256 to generate deterministic outcomes. The server seed hash is committed before the spin — you or your players can verify the result was not tampered with. At seed rotation, the original server seed is revealed so anyone can replay every spin under it.

Q · 05 Can I use my own game config?

Yes. Define your own reel strips, symbol frequencies, paylines, payout tables, and feature rules — all via a JSON config. Store it in the dashboard or pass it inline with each request. Configs are versioned and exportable as PAR sheets.

Q · 06 How is RTP calculated?

The engine supports exact combinatorial analysis for standard payline and ways games, and Monte Carlo simulation (200k samples) for games with cascading, cluster, or hold & respin mechanics. Observed RTP is tracked per config via the /rtp endpoint.

Ready to ship
your first game?

Free during the open beta. No card required. PAR sheet exports the moment your first config is saved.