> ## Documentation Index
> Fetch the complete documentation index at: https://docs.prizerail.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Guarantees

A campaign can guarantee that each period has at least one prize of a set size, for example \$100 every 30 days. When a period ends with no winner at or above the threshold, you pick which of that period's winners gets the guarantee.

Periods run back to back from the campaign's start. Paused time doesn't count, so a week's pause pushes the period's end back a week. A period is checked once all its drawings are drawn.

The guarantee is its own payout, on top of whatever the picked winner already won in the period. There's no deadline to pick, but nothing is paid until you do, and the period stays `awaiting_pick`.

## List guarantee periods

```http theme={null}
GET /api/v1/campaigns/{slug}/guarantees
```

```json theme={null}
{
  "guarantees": [
    {
      "id": "g3n8p2…",
      "period": 2,
      "periodStart": "2026-10-01T00:00:00.000Z",
      "periodEnd": "2026-10-31T00:00:00.000Z",
      "status": "awaiting_pick",
      "amountCents": 10000
    }
  ]
}
```

| `status` | Meaning |
| - | - |
| `not_needed` | A prize in the period already met the threshold. |
| `awaiting_pick` | Waiting for you to pick a winner. |
| `picked` | Picked. The payout is on its way. |
| `paid` | Paid. |

## Pick a winner

```http theme={null}
POST /api/v1/campaigns/{slug}/guarantees/{id}/pick
Content-Type: application/json
```

```json theme={null}
{ "winner": "user-4417" }
```

Returns `201 { "payoutId": "p9x…" }`.

The winner must have won in that period. If they won more than once, add `"drawingId"` to say which win.

A guarantee can be picked once. A second pick returns `409`, even for the same winner, so keep the `payoutId` from the first response rather than retrying blindly. If a request timed out, read the guarantee list first: `picked` means it went through.

| Status | Code | When |
| - | - | - |
| 400 | `rejected` | That winner didn't win in this period, or won more than once and no `drawingId` was sent. |
| 404 | `not_found` | No such guarantee. |
| 409 | `rejected` | The guarantee was already picked, or the campaign has no payout wallet. |

You can also pick in the partner portal, on the campaign's page.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.