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

# Retries

> Handle webhook failures with exponential backoff.

Webhook delivery is at-least-once: Nomos guarantees every event reaches your endpoint, but the same event can arrive more than once and not always in order. Build your handler around three rules:

* **Slow responses fail.** Nomos waits 30 seconds for a `2xx`. Hand long work to a background queue and acknowledge immediately.
* **Duplicates can happen.** The same event `id` can arrive more than once, so make your handler idempotent: store processed IDs and skip them on repeat deliveries.
* **Order is not guaranteed.** `subscription.confirmed` may land before `subscription.created`. Process events independently and fetch the resource when you need current state.

## Retry schedule

A non-`2xx` response or a timeout triggers exponential backoff: up to 12 attempts over roughly 3 days, after which the delivery is dropped.

| Attempt | Delay      |
| ------- | ---------- |
| 1       | 1 minute   |
| 2       | 2 minutes  |
| 3       | 4 minutes  |
| 4       | 8 minutes  |
| 5       | 16 minutes |
| 6       | 32 minutes |
| 7       | 1 hour     |
| 8       | 2 hours    |
| 9       | 4 hours    |
| 10      | 8 hours    |
| 11      | 16 hours   |
| 12      | 32 hours   |

## Looking up past events

Every event Nomos sends is stored. To inspect a delivery after the fact, retrieve it by `id` with [Retrieve an event](/api-reference/events/retrieve-an-event). The response uses the same envelope as the webhook payload.
