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

# Idempotency

> Retry notification sends and delivery events without creating duplicates.

## Notification sends

Add a stable key for one logical send:

```http theme={null}
Idempotency-Key: order-ready:01K2EXAMPLE:v1
```

```bash theme={null}
curl --request POST \
  --url https://pushctl.com/api/v1/notifications \
  --header 'Authorization: Bearer push_live_your_server_token' \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: order-ready:01K2EXAMPLE:v1' \
  --data '{
    "recipients": {"user_ids": ["user-123"]},
    "notification": {"title": "Order ready", "body": "Your order can be collected."}
  }'
```

Reuse the key only for the same logical request. Keep it at 255 characters or fewer.

## Delivery events

Each event includes an `event_id` UUID. Repeating an event with the same ID returns the existing record instead of incrementing lifecycle counts again.

<Tip>Generate or derive idempotency values before placing work on a retrying queue, then persist them with the job.</Tip>
