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

# Delivery

> Retries, timeouts, idempotency, and what the dashboard shows for every attempt.

A Delivery is one event sent to one endpoint. Elapse POSTs the signed body, waits up to **10 seconds**, and counts any **2xx** as success. Anything else, including a timeout, is a failed attempt and the schedule below applies.

## Schedule

| Attempt | When                 |
| ------- | -------------------- |
| 1       | immediately          |
| 2       | 30 s after attempt 1 |
| 3       | 2 m after attempt 2  |
| 4       | 10 m after attempt 3 |
| 5       | 1 h after attempt 4  |
| 6       | 1 h after attempt 5  |
| 7       | 1 h after attempt 6  |
| 8       | 1 h after attempt 7  |

After attempt 8 fails, the Delivery is marked exhausted and the dashboard shows Resend.

The schedule is read from the worker's own configuration at build time, so this table is what runs.

## Respond fast, work later

Answer 200 as soon as the signature verifies, then do your work. A handler that provisions a GPU before responding will time out under load and be retried, and the retry will provision it again.

## Idempotency

A retry delivers the **same event id**. Keep the ids you have handled and treat a repeat as a no-op:

<CodeGroup>
  ```ts TypeScript theme={"system"}
  if (seen.has(event.id)) return res.sendStatus(200);
  seen.add(event.id);
  ```

  ```bash cURL theme={"system"}
  # Same evt_ id on every attempt: dedupe on it.
  ```
</CodeGroup>

## Failing endpoints

An endpoint that fails continuously for three days is disabled and you are emailed. Re-enable it from the dashboard once it is fixed; nothing is lost, every Delivery is still there with its attempts.

## The dashboard

**Developers → Webhooks** shows each endpoint, its success rate, and every Delivery with its attempts: status code, duration, the request headers that were sent. **Resend** on a Delivery queues one more attempt with the same body and a fresh signature. The same view exists for the CLI endpoint that `elapse listen` creates, so you can see what your laptop answered.
