Last updated: 2026-03-03•3 min read
Replay
All delivery events are stored. Any event can be replayed on demand.
What replay does
Replay re-dispatches a stored delivery event to your webhook endpoint. It does not resend the email.
Use replay when:
- Your webhook endpoint was down during delivery
- Your endpoint returned a non-200 response
- An agent or worker crashed before processing the event
- You are testing your webhook handler against real delivery data
Replay a single event
POST https://truncus.co/api/v1/events/{event_id}/replay
Authorization: Bearer tr_live_...
Response
{
"replayed": true,
"event_id": "evt_3f21a3b4",
"message_id": "msg_8f21a3b4",
"dispatched_at": "2026-02-27T09:14:02Z"
}
Replay all events for a message
POST https://truncus.co/api/v1/messages/{message_id}/replay
Authorization: Bearer tr_live_...
Query stored events
GET https://truncus.co/api/v1/events?message_id=msg_8f21a3b4
Authorization: Bearer tr_live_...
Response
{
"events": [
{
"event_id": "evt_3f21a3b4",
"message_id": "msg_8f21a3b4",
"status": "delivered",
"timestamp": "2026-02-27T09:14:02Z"
}
]
}
SDK example
import { Truncus } from '@truncus/node'
const truncus = new Truncus({ apiKey: process.env.TRUNCUS_API_KEY })
// Replay a specific event
await truncus.events.replay('evt_3f21a3b4')
// Replay all events for a message
await truncus.messages.replay('msg_8f21a3b4')
// Query events for a message
const events = await truncus.events.list({
message_id: 'msg_8f21a3b4'
})
Event retention
Events are retained for 90 days on all plans. Replay is available for the full retention window.
Webhook dispatch on replay
Replayed events are dispatched to the currently configured webhook endpoint. If you have updated your endpoint URL since the original event, the replayed event goes to the new URL.
Replay respects your current webhook configuration. It does not re-use the original dispatch target.