Round fairness
GET /api/s2s/rounds/{roundPublicId}/fairness returns one settled round’s
verifiable detail: the commitment it was drawn against, plus each reel’s raw
draw and resolved item. It is the data a player needs to reproduce — and so
trust — the outcome. Use it to render a per-round “provably fair” view in your
own history surface.
See provably fair for the verification recipe.
Request
GET https://{operator}.app.lootboxsolutions.com/api/s2s/rounds/r_01J…/fairness?playerExternalId=u_8431| Parameter | In | Required | Notes |
|---|---|---|---|
roundPublicId | path | ✅ | The round to verify — the publicId from a purchase win or history. |
playerExternalId | query | ✅ | Must own the round; another player’s round returns 404. |
Response — 200
{ "round": { "publicId": "r_01J…", "gameKey": "mystery_box", "status": "settled", "settledAt": "2026-06-16T12:00:00Z", "fairness": { "serverSeedHash": "3a7bd3…", "serverSeed": null, "clientSeed": "bF3kQ9", "nonce": 7, "algorithmKey": "hmac_sha256_v1" }, "reels": [ { "reelIndex": 0, "rawDraw": 1234567, "chanceUnits": 250000, "chancePercent": 2.5, "result": { "itemId": 906, "name": "Golden Sword" } } ] }}| Field | Notes |
|---|---|
fairness.serverSeedHash | The commitment this round was drawn against. |
fairness.serverSeed | The plaintext seed — present only once the pair has been rotated/revealed; null while it is still active (revealing it early would expose unplayed rounds). |
fairness.clientSeed / fairness.nonce / fairness.algorithmKey | The client seed, the nonce this round consumed, and the RNG algorithm. |
reels[].reelIndex | The reel’s position — also the cursor mixed into the draw. |
reels[].rawDraw | The integer the RNG produced for this reel. |
reels[].chanceUnits / chancePercent | The won item’s odds in the box version it was drawn from. |
reels[].result | The resolved item: its catalog itemId and name. |
To verify a round (once the seed is revealed): recompute the RNG output from
serverSeed, clientSeed, nonce and reelIndex, map it through the box
version’s odds table, and confirm it lands on result.
Errors
| code | HTTP | when |
|---|---|---|
ROUND_NOT_FOUND | 404 | no round with that public id, or it is not owned by playerExternalId |
A bad signature returns 401 (see authentication).