Webhook events

Inspect and replay individual webhook deliveries: list delivery attempts, see their status, payload and response, and resend one.


Why this matters

You already receive webhooks for asynchronous updates. When a delivery fails, or you need to debug why your endpoint didn’t process an event, you need to see what was sent and what came back, and a way to retrigger a delivery. The webhook events API exposes each delivery as a webhook_event, with its status, the HTTP status code your endpoint returned, the request payload, and any failure details, plus a resend action.

How it works

A webhook event represents a single delivery of a webhook to your endpoint. Each one records the action that triggered it, the delivery status, the payload that was sent, and, on failure, the error and an excerpt of the response your endpoint returned.

Delivery status is exposed as one of three values:

StatusMeaning
PENDINGQueued or waiting to be (re)delivered.
SUCCEEDEDYour endpoint acknowledged the delivery with a 2XX response.
FAILEDThe delivery attempt failed (non-2XX, timeout, or error).

Each webhook_event has the following fields:

FieldDescription
idThe webhook event id.
webhook_idThe webhook this event was delivered for.
actionThe action that triggered the event (for example INVOICE.CREATED).
statusThe delivery status: PENDING, SUCCEEDED or FAILED.
status_codeThe HTTP status code returned by the last delivery attempt.
request_payloadThe payload sent to your endpoint.
failure_dataPresent only on failure: error (the error message) and response_body (an excerpt of the response).
created_atWhen the event was created.
updated_atWhen the event was last updated.

Listing webhook events

List delivery events with GET /v1/webhook-events, paginated. Filter by webhook and by status:

List failed deliveries for a webhook
$curl "https://test.api.solvimon.com/v1/webhook-events?webhook_id=whk_...&status=FAILED" \
> -H "X-API-KEY: <apiKey>"
Query parameterDescription
webhook_idOnly return events delivered for this webhook.
statusFilter by delivery status (PENDING, SUCCEEDED, FAILED). Omit to return all.
Response
1{
2 "data": [
3 {
4 "object_type": "WEBHOOK_EVENT",
5 "id": "whev_...",
6 "webhook_id": "whk_...",
7 "action": "INVOICE.CREATED",
8 "status": "FAILED",
9 "status_code": 500,
10 "request_payload": "{ ... }",
11 "failure_data": {
12 "error": "Unexpected status code: 500",
13 "response_body": "Internal Server Error"
14 },
15 "created_at": "2026-07-15T09:12:04Z",
16 "updated_at": "2026-07-15T09:12:14Z"
17 }
18 ],
19 "page": 1,
20 "limit": 20
21}

Retrieving a single webhook event

Fetch one event by id to see its full payload and failure details:

Get a webhook event
$curl https://test.api.solvimon.com/v1/webhook-events/whev_... \
> -H "X-API-KEY: <apiKey>"

Resending a webhook event

Retrigger a delivery with POST /v1/webhook-events/{id}/resend. This is useful after fixing an outage on your side. Resending requires the WEBHOOK_EVENT_RESEND permission.

Resend a webhook event
$curl -X POST https://test.api.solvimon.com/v1/webhook-events/whev_.../resend \
> -H "X-API-KEY: <apiKey>"

The resend queues a fresh delivery attempt; the event’s status moves back to PENDING and then to SUCCEEDED or FAILED depending on the outcome.

Via Desk

The Developers area in Desk shows the delivery events for a webhook, so you can browse each attempt with its status, payload and response, and resend a delivery without calling the API.