Off the Hook automatically retries failed deliveries up to 7 times over approximately 2 hours. If all automatic retries are exhausted, the event status changes toDocumentation Index
Fetch the complete documentation index at: https://docs.offthehook.dev/llms.txt
Use this file to discover all available pages before exploring further.
failed and no further attempts are made. You can inspect the full event history for any subscription and manually re-queue failed events once your endpoint is back in a healthy state.
List events for a subscription
GET /v1/subscriptions/:id/events returns a paginated list of all events for the subscription, ordered from newest to oldest.
EventView object:
| Field | Description |
|---|---|
id | The evt_... identifier — also the value of the webhook-id delivery header |
kind | The event type (e.g., wallet.transfer.broadcasted) |
status | pending, delivered, or failed |
attempts | Number of delivery attempts in the current dispatch cycle; resets to 0 when you trigger a manual retry |
deliveryCount | Total number of successful deliveries across all cycles (monotonically increasing) |
responseStatus | The last HTTP status code returned by your endpoint |
responseBody | The last response body returned by your endpoint (may be truncated) |
payload | The full webhook payload that was or will be delivered |
nextPageToken as a query parameter to page through a large event history:
Get a specific event
GET /v1/subscriptions/:id/events/:eventId returns a single event by ID.
EventView object as above.
Manually retry a failed event
POST /v1/subscriptions/:id/events/:eventId/retry re-queues a failed event for delivery. The attempts counter resets to 0 and the automatic retry schedule starts again from the beginning.
200 OK with the updated EventView when the event has been successfully re-queued. The status will be "pending" and attempts will be reset to 0. Fetch the event again after a moment to confirm delivery progress.