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

# Reliability

> Retries, the delivery ledger and rotating the secret.

Find out what was sent, what failed and why.

## Read the ledger

The status of every delivery is visible in the app, under Settings, Integrations, on the
destination itself.

Every delivery is recorded, including the ones that never arrived. `response_ref` is the
answer to "why did it not arrive".

| Status | Meaning |
| - | - |
| `pending` | Never attempted |
| `delivered` | Arrived |
| `failed` | Will be retried |
| `dead` | Will not be retried |

> [accordion] What a row carries
>
> The rule that produced it, the person it was about, the `status`, the attempt count,
> `next_retry_at`, and the frozen `payload`.
>
> `response_ref` holds the status your endpoint returned and the first 500 characters of its
> body, or the error when the attempt failed. The destination URL and the signing secret never
> appear in it.

## Retries

A delivery without a 2xx is retried up to five attempts in total. The backoff is 30 seconds,
2 minutes, 8 minutes and 32 minutes.

After the fifth it is left as `dead` and is never tried again.

> [!WARNING]
>
> If the last ten deliveries to a destination are all `dead`, the destination itself flips to
> `status: "error"`. That is the signal that the URL was revoked on the receiving side.

## Rotate the secret

```bash theme={null}
curl -X POST https://api.ziplined.io/v1/integrations/5f0b.../rotate-secret \
  -H "Authorization: Bearer $ZIPLINED_API_KEY" \
  -H "Idempotency-Key: 1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d"
```

The new secret is returned once and the old one stops working immediately.

> [!WARNING]
>
> There is no overlap window. Update your receiver before the next event fires.


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