List drawings
GET /api/v1/campaigns/{slug}/drawings?status=open
| Query | Meaning |
|---|---|
status | Optional. open, locked, entropy_requested, settled or paid. Leave it off for every status. |
draws.json pages back with before.
{
"drawings": [
{
"id": "d7k2m9q4x1wz",
"number": null,
"partnerRound": null,
"drawAt": "2026-10-15T16:00:00.000Z",
"cutoffAt": "2026-10-15T15:00:00.000Z",
"status": "open",
"winnersExpected": 3,
"needsAttention": null,
"winners": [],
"verification": { … }
}
]
}
Get a drawing
GET /api/v1/campaigns/{slug}/drawings/{id}
{
"drawing": {
"id": "d7k2m9q4x1wz",
"number": 12,
"partnerRound": null,
"drawAt": "2026-10-15T16:00:00.000Z",
"cutoffAt": "2026-10-15T15:00:00.000Z",
"status": "paid",
"winnersExpected": 3,
"needsAttention": null,
"winners": [
{
"position": 0,
"winner": "user-8231",
"displayName": null,
"avatarUrl": null,
"randomValue": "0x9c3e…",
"roll": 61204,
"amountCents": 500,
"heldForManualPayout": false
}
],
"verification": {
"winnersCommitment": "0x7a1f…",
"lockedAt": "2026-10-15T15:00:04.000Z",
"entropyProvider": "mock",
"entropyRequestId": "…",
"entropy": "0x52be…",
"entropyRevealedAt": "2026-10-15T16:00:41.000Z",
"prizeTableId": "…"
}
}
}
Fields
| Field | Meaning |
|---|---|
number | The drawing’s place in the campaign, 1, 2, 3 with no gaps. It’s given when the random value is requested, so it’s null until then. It’s also the drawing ID onchain. |
partnerRound | Your own number for the draw, when Prizerail reads one from your source. Shown only, never used in the draw. |
drawAt, cutoffAt | ISO 8601, UTC. |
status | open, then locked (list frozen, fingerprint recorded), entropy_requested (waiting for the random value), settled (prizes decided) and paid (sent to your wallet). |
winnersExpected | How many winners this drawing takes, fixed when it was created. |
needsAttention | A short reason when a drawing is stuck, such as no winners by the cutoff. Otherwise null. |
winners[].randomValue, roll, amountCents | Present once settled. Amounts are US cents. |
winners[].heldForManualPayout | True for a prize at or above the campaign’s large-prize threshold, which Prizerail pays by hand rather than in the automatic transfer. |
verification | Everything needed to check the draw. See Verify a draw. |
verification.entropyProvider | Where the random value came from. pyth (Pyth Entropy on Base) for real draws, mock in the test environment. |

