Use this endpoint to re-queue an event that failed after exhausting all automatic retry attempts. Retrying resets the attempts counter to 0 and restarts the full retry schedule from the beginning, as if the event were being delivered for the first time.
Request
POST /v1/subscriptions/:id/events/:eventId/retry
No request body is required.
Path parameters
The subscription ID (e.g. sub_2QkP9aB7xN...).
The event ID to re-queue (e.g. evt_8xN9kP2QbA...).
curl -X POST https://api.offthehook.dev/v1/subscriptions/sub_2QkP9aB7xN.../events/evt_8xN9kP2QbA.../retry \
-H "Authorization: Bearer oth_YOUR_API_KEY"
Response
200 OK — the updated EventView with status: "pending" and attempts reset to 0.
{
"id": "evt_8xN9kP2QbA...",
"subscriptionId": "sub_2QkP9aB7xN...",
"kind": "wallet.transfer.broadcasted",
"chainId": "tron:mainnet",
"status": "pending",
"attempts": 0,
"deliveryCount": 0,
"responseStatus": 503,
"responseBody": "Service Unavailable",
"payload": { "id": "evt_8xN9kP2QbA...", "kind": "wallet.transfer.broadcasted", "date": "...", "data": {} },
"dateCreated": "2026-05-08T12:34:56Z"
}
Before retrying, confirm your endpoint is returning a 2xx response and that signature verification is working correctly. If neither is fixed, the event will fail again after running through the full automatic retry schedule: 200ms → 1s → 5s → 1m → 5m → 30m → 2h.
Errors
| Code | HTTP | Description |
|---|
not_found | 404 | The event ID does not exist, does not belong to the given subscription, or the subscription belongs to a different API key. |
unauthorized | 401 | The Authorization header is missing or the key is invalid. |