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

# Retries and ordering

> What happens when your server doesn't answer 2xx.

If your server doesn't answer `2xx` (timeouts, `5xx`, redirects, and
connection errors all count), we retry with backoff:

```
30s → 2m → 10m → 30m → 2h → 6h → 14h      (8 attempts over ~23 hours)
```

* **Deduplicate on `X-Contour-Delivery-Id`** (also `id` in the body). It is
  the same on every retry of the same event. Retries can arrive more than once
  if a previous attempt succeeded on your side but we didn't see the response.
* **Events can arrive out of order** under retries, for example
  `call.analyzed` before a retried `call.ended`. The call object is complete on
  every event, so use `call.status` and `call.analysis` rather than the
  sequence.
* `recording_url` is minted fresh on every attempt and expires after about an
  hour. Fetch it promptly, or use `GET /v1/calls/{call_id}/recording` any time.
* After the final attempt the delivery is marked `failed`. You can see it, and
  retry it, via the [deliveries endpoints](/api-reference/webhook-endpoints/list-deliveries).

## Delivery statuses

| Status      | Meaning                                                                   |
| ----------- | ------------------------------------------------------------------------- |
| `pending`   | Waiting for the first attempt or for the next retry at `next_attempt_at`. |
| `in_flight` | An attempt is happening right now.                                        |
| `succeeded` | Your server answered `2xx`.                                               |
| `failed`    | Every attempt was used. Retry manually if needed.                         |
| `cancelled` | The endpoint was disabled or deleted before delivery.                     |

## Pausing

`PATCH` an endpoint with `"enabled": false` to pause it. Events that occur
while paused are not queued, so pausing is for maintenance windows, not for
buffering.
