<!-- source: https://secondlayer.tools/docs/api-reference#list-webhook-replays -->

## List a webhook's replays and replay ranges

`GET /api/webhooks/{id}/replays` (self-hosted instances only)

The webhook's last 10 replays with live progress, newest first, and the block ranges a new replay can start from. Ranges count back from the last block the evaluator processed.

### Path parameters

| Name | Type | Description |
| --- | --- | --- |
| `id` | string, required | Webhook id (UUID), as returned by create or list. |

### Returns

A cursor envelope; `data` holds `WebhookReplayProgress` objects.

### Responses

- `200` Replays and ranges for this webhook
- `401` This bind requires the instance token, and it was missing or wrong
- `404` No webhook with this id

### Example

```bash
curl http://127.0.0.1:3800/api/webhooks/{id}/replays \
  -H "Authorization: Bearer $INSTANCE_TOKEN"
```

```json
{
  "data": [
    {
      "replayId": "a41f09c3d27e8b65",
      "webhookId": "3f1c2a9e-8b7d-4c21-9a55-6e0d4b2f7c18",
      "status": "done",
      "fromBlock": 8650000,
      "toBlock": 8700000,
      "total": 312,
      "processed": 312,
      "pending": 0,
      "delivered": 309,
      "gaveUp": 3,
      "startedAt": "2026-09-22T14:00:02.000Z",
      "finishedAt": "2026-09-22T14:06:40.000Z",
      "error": null
    }
  ],
  "ranges": {
    "tip": 8700076,
    "presets": [
      {
        "blocks": 100,
        "fromBlock": 8699977,
        "toBlock": 8700076,
        "knownEvents": 4
      },
      {
        "blocks": 1000,
        "fromBlock": 8699077,
        "toBlock": 8700076,
        "knownEvents": 31
      },
      {
        "blocks": 10000,
        "fromBlock": 8690077,
        "toBlock": 8700076,
        "knownEvents": 305
      }
    ],
    "deadSinceFailing": {
      "since": "2026-09-22T13:10:00.000Z",
      "count": 3
    }
  }
}
```
