- The draw is automatic and fair. When the raffle ends — at
ends_at, or immediately when you call the end endpoint — Rigaly draws one provisional winner per slot (distinct customers). You never pick the initial winners by hand; you review the draw. - Cancelling refunds everyone.
POST /raffles/{id}/cancelreturns all entry points to participants.
1. Create the raffle
POST /raffles/{id}/image — see the images guide.
Cap the size of the raffle
A raffle has two independent ceilings.entries_per_user limits one customer; max_entries limits the whole raffle. Both default to null, which means unlimited.
max_entries_mode decides what the ceiling counts:
active and visible in the app, and it still draws its winners at ends_at — only new entries are blocked. Customers see it marked as full, and an attempt to enter comes back as RAFFLE_FULL:<remaining> (the suffix is how many entries would still have fit, so the app can say “only 2 spots left”).
Read how full it is from the raffle list, which carries live counts:
GET /raffles/{id} returns the same four figures for a single raffle. Read is_full rather than comparing counts yourself — it already knows whether max_entries_mode is counting entries or distinct entrants, and entries_remaining_global is measured in the same unit. On an uncapped raffle the pair is null / false.
Raising the cap reopens entries immediately, with no other change to the raffle:
Once a raffle has entries,
max_entries_mode is locked along with points_cost, entries_per_user and winners_count (FIELDS_LOCKED) — customers paid for the odds they were shown, so what the ceiling counts can’t change underneath them. max_entries itself stays editable, but only upward: lowering it below the entries already recorded returns MAX_ENTRIES_BELOW_CURRENT.2. Manage while it runs
3. End it — the draw happens automatically
Let the raffle reachends_at (Rigaly ends it and draws on schedule), or close it early:
4. Review the winners
5. Confirm — winners are notified
If a confirmed winner never shows up to claim the prize:
POST /winners/{slot}/replace forfeits them and draws a provisional replacement, then POST /winners/{slot}/confirm locks in the new winner.