Skip to content

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
ParameterInRequiredNotes
roundPublicIdpathThe round to verify — the publicId from a purchase win or history.
playerExternalIdqueryMust 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" }
}
]
}
}
FieldNotes
fairness.serverSeedHashThe commitment this round was drawn against.
fairness.serverSeedThe 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.algorithmKeyThe client seed, the nonce this round consumed, and the RNG algorithm.
reels[].reelIndexThe reel’s position — also the cursor mixed into the draw.
reels[].rawDrawThe integer the RNG produced for this reel.
reels[].chanceUnits / chancePercentThe won item’s odds in the box version it was drawn from.
reels[].resultThe 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

codeHTTPwhen
ROUND_NOT_FOUND404no round with that public id, or it is not owned by playerExternalId

A bad signature returns 401 (see authentication).