Beta testing Free API keys are open for testing. Paid tiers are waitlisted while we harden billing, legal, and audit workflows.

Plinko API

Plinko math from a prize pool, not a physics sim

Cymba resolves plinko rounds prize-first: the weighted pool decides the outcome, the board presentation lands the chip in a bucket that pays exactly that prize. Provably fair seeds, tracked RTP, and PAR-sheet exports included.

The pool sets the RTP, not the pegs

Buckets are presentation. The weighted prize pool determines every probability, so RTP is exact and auditable from the config alone.

Deterministic landing

The chip lands in a bucket whose value names the drawn prize — validated by read-back before the API responds. No physics engine to certify.

Same fairness protocol as everything else

HMAC-SHA256 commit-reveal seeds, player client seed, nonce ordering, and byte-identical replay via /api/v1/verify.

API example

Resolve a plinko drop

Request
POST /api/v1/play
Authorization: Bearer cy_live_...

{
  "game_type": "instant",
  "config": {
    "id": "plinko-demo",
    "pool_model": "infinite",
    "prize_pool": { "entries": [
      { "id": "lose", "multiplier": 0,  "weight": 60 },
      { "id": "p1",   "multiplier": 2,  "weight": 25 },
      { "id": "p2",   "multiplier": 5,  "weight": 10 },
      { "id": "p3",   "multiplier": 20, "weight": 5 }
    ]},
    "card": {
      "mechanic": "plinko",
      "rows": 1, "cols": 8,
      "symbols": ["bucket"],
      "mechanic_config": {
        "buckets": ["0", "A", "0", "B", "C", "0", "A", "0"],
        "loss_value": "0",
        "prize_values": { "p1": "A", "p2": "B", "p3": "C" }
      }
    }
  },
  "client_seed": "session-4d21"
}
Response
{
  "result": {
    "round_id": "c47a90...",
    "prize": { "prize_id": "p2", "multiplier": 5, "kind": "win" },
    "card": {
      "mechanic": "plinko",
      "meta": { "landed_index": 3, "path": ["R", "L", "R", "L", "R", "L", "L"] }
    },
    "result": { "total_multiplier": 5, "breakdown": { "base": 5 } }
  },
  "provably_fair": {
    "server_seed_hash": "3e1c7d...",
    "client_seed": "session-4d21",
    "nonce": 44
  }
}

Plinko, the auditable way

Plinko looks like physics but pays like a lottery: what matters to players, operators, and auditors is the probability of each bucket, not the path the chip takes. Cymba models plinko the way it's actually audited — an explicit prize pool drives the draw, and the board is a presentation layer whose landing bucket must name the drawn prize.

That inversion has practical consequences. Your RTP is exactly Σ(multiplier × weight) / Σ(weight) over the pool — no Monte Carlo needed for the base game, no tolerance bands, no re-certification when you reskin the board.

Configure the board in JSON

A plinko config is the standard instant skeleton with a plinko mechanic: buckets lays out the board's landing values left to right, prize_values maps prize ids to bucket values, and loss_value marks the dead buckets. The engine draws the prize, picks a landing position that carries the right value, and validates the card's read-back before returning.

The same config powers the dashboard playground, the Instant-Win Studio's live preview, hosted embeds with the plinko board renderer, RTP tracking, and PAR-sheet export.

Ship it embedded or headless

Call /api/v1/play from your backend and drive your own animation, or mint an embed session and drop Cymba's hosted plinko renderer into your page with an iframe — your API key never reaches the browser, and every play carries the fairness panel.

What Cymba does not do

Cymba does not handle wallets, balances, stakes as money, player accounts, or licensing. It returns multipliers; your platform handles the rest.

Frequently Asked Questions

Why not simulate the ball physically?

A physics simulation makes RTP an emergent property you have to measure, and auditing it means certifying the simulation. Cymba draws the prize from an explicit weighted pool, then presents a landing that pays it — RTP is arithmetic on the config, and auditors verify a table, not a physics engine.

Can different buckets pay the same prize?

Yes. The buckets array maps board positions to prize values, and several positions can carry the same value — the classic symmetric plinko layout with big prizes at the edges.

Is the drop provably fair?

Yes. The outcome derives from HMAC-SHA256 over (server seed, client seed, nonce) with the server seed hash committed before the round. After rotation, /api/v1/verify replays the round byte-identically.

How do I animate the drop?

The response includes the landing bucket. Your front-end (or Cymba's hosted embed with the plinko renderer) animates a path to that bucket — the animation is cosmetic, the landing is the verified fact.

Ready to test Cymba?

Start with a free API key, clone a template, and run your first provably fair spin.