Round history
Read a player’s game rounds from your backend, for regulatory records, dispute
handling or a player’s own history page. Each round carries the amounts your
wallet received, in the session’s currency, and its roundId is the betId
of its wallet requests.
List a player’s rounds
POST /rounds/history
Content-Type: application/json
x-operator-secret: YOUR_WEBHOOK_SECRET{
"clientId": "your-client-id",
"userId": "test-player",
"from": "2026-10-01T00:00:00Z",
"to": "2026-11-01T00:00:00Z",
"limit": 50
}| Field | Required | Rules |
|---|---|---|
clientId | Yes | Your client ID; string, 1–128 characters. |
userId | Yes | The player’s ID you send when creating sessions; string, 1–128 characters. |
from | No | ISO 8601 timestamp with a time zone. Rounds recorded at or after it. |
to | No | ISO 8601 timestamp with a time zone, later than from. Rounds recorded before it. |
game | No | An event key, such as dice. |
limit | No | Rounds per page, from 1 to 100. Default 50. |
cursor | No | The nextCursor of the previous page. |
Success returns HTTP 200 with the newest rounds first:
{
"rounds": [
{
"roundId": "6650a3f1e4b0c912d8a74b21",
"userId": "test-player",
"game": "dice",
"status": "settled",
"currency": "ZAR",
"stake": 10,
"payout": 19.8,
"multiplier": 1.98,
"freeBet": false,
"startedAt": "2026-10-07T14:03:11.402Z",
"updatedAt": "2026-10-07T14:03:11.402Z"
}
],
"nextCursor": "MTc5MTM4MTc5MTQwMi42NjUwYTNmMWU0YjBjOTEyZDhhNzRiMjE"
}While nextCursor is not null, repeat the request with it and the same
filters to read the next page. Treat the cursor as opaque. A player with no
rounds returns an empty list.
Round fields
| Field | Meaning |
|---|---|
roundId | The round’s ID: the betId of its wallet requests. |
userId | Your player’s ID. |
game | The game’s event key. |
status | open while the round is in play, settled once it has ended, voided if Maktub cancelled it by compensation. Voided rounds stay listed for your records. |
currency | The session’s currency. stake and payout are in it. |
stake | The amount staked in the round. On a free bet, the promotional stake, which was not debited. |
payout | The amount returned to the player; 0 when nothing was returned. |
multiplier | The round’s return multiplier; 0 when nothing was returned. |
freeBet | true when the round was played with a free bet. |
freeBetId | The free-bet grant used, on free-bet rounds. |
startedAt | When Maktub recorded the round, once its stake was accepted. Rounds are ordered by it. |
updatedAt | When the round’s record last changed. |
voidedAt | When the round was voided, on voided rounds. |
Amounts have up to ten decimal places, as on the wallet webhook. An open round’s
stake, payout and multiplier can still change until it settles.
Plinko and Wire list each ball as its own round. A multi-ball bet is one wallet
round whose betId is the roundId of its first ball; the balls’ stakes and
payouts add up to the batch’s wallet amounts.
Read one round
POST /rounds/detail
Content-Type: application/json
x-operator-secret: YOUR_WEBHOOK_SECRET{
"clientId": "your-client-id",
"roundId": "6650a3f1e4b0c912d8a74b21"
}Success returns HTTP 200 with the round fields plus the game’s result and fairness data:
{
"round": {
"roundId": "6650a3f1e4b0c912d8a74b21",
"userId": "test-player",
"game": "dice",
"status": "settled",
"currency": "ZAR",
"stake": 10,
"payout": 19.8,
"multiplier": 1.98,
"freeBet": false,
"startedAt": "2026-10-07T14:03:11.402Z",
"updatedAt": "2026-10-07T14:03:11.402Z",
"outcome": { "result": 72.13, "target": 50, "condition": "over" },
"fairness": {
"hashedServerSeed": "2c1f0b7e9a3d4c58b6e1f07a9d3c2b4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c",
"clientSeed": "player-chosen-seed",
"nonce": 42
}
}
}| Field | Meaning |
|---|---|
outcome | The game’s result, such as the roll, cards or drawn numbers. Its fields differ by game. null while the round is open. Use stake and payout for amounts. |
fairness | The provably fair data the round was played with, such as its hashed server seed, client seed and nonce. |
A round from another account returns the same 404 as an unknown ID.
Errors
| HTTP status | Meaning |
|---|---|
400 | Invalid fields, an invalid cursor, or to not later than from. |
401 | Invalid client ID or webhook secret. |
404 | No round with this ID in your account. |
429 | Too many requests or failed authentication attempts. Wait before retrying. |
Call these endpoints only from your backend, with the same webhook secret you use for sessions. Round history is personal data about your players; restrict who can read it in your systems.