Skip to main content
Raffles let customers spend points on entries for a prize draw. The full lifecycle runs through the API:
Two things the platform handles for you:
  • 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}/cancel returns all entry points to participants.

1. Create the raffle

Want artwork? Attach an image with 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:
A full raffle is not a closed raffle. At the ceiling it stays 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 reach ends_at (Rigaly ends it and draws on schedule), or close it early:
Either way, provisional winners are drawn immediately — one distinct customer per slot.

4. Review the winners

Not happy with a draw? Before confirming you can:

5. Confirm — winners are notified

This completes the raffle and notifies every winner in the app. Done!
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.

Prefer to just ask an AI?

With the AI connector: “Start a raffle for an espresso machine, 200 points per entry, ends August 31st”“End the raffle and show me the winners”“Confirm the winners.”