> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.solvimon.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.solvimon.com/_mcp/server.

# Webhook deliveries

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

> **Note**
>
> This page covers individual deliveries. For the event names you can subscribe to, see [Webhook event types](/platform-guides/for-developers/webhook-event-types).

---

## Why this matters

You already receive [webhooks](/platform-guides/for-developers/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:

| Status      | Meaning                                                      |
| ----------- | ------------------------------------------------------------ |
| `PENDING`   | Queued or waiting to be (re)delivered.                       |
| `SUCCEEDED` | Your endpoint acknowledged the delivery with a 2XX response. |
| `FAILED`    | The delivery attempt failed (non-2XX, timeout, or error).    |

Each `webhook_event` has the following fields:

| Field             | Description                                                                                            |
| ----------------- | ------------------------------------------------------------------------------------------------------ |
| `id`              | The webhook event id.                                                                                  |
| `webhook_id`      | The webhook this event was delivered for.                                                              |
| `action`          | The action that triggered the event (for example `INVOICE.CREATED`).                                   |
| `status`          | The delivery status: `PENDING`, `SUCCEEDED` or `FAILED`.                                               |
| `status_code`     | The HTTP status code returned by the last delivery attempt.                                            |
| `request_payload` | The payload sent to your endpoint.                                                                     |
| `failure_data`    | Present only on failure: `error` (the error message) and `response_body` (an excerpt of the response). |
| `created_at`      | When the event was created.                                                                            |
| `updated_at`      | When 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`**

```bash 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 parameter | Description                                                                       |
| --------------- | --------------------------------------------------------------------------------- |
| `webhook_id`    | Only return events delivered for this webhook.                                    |
| `status`        | Filter by delivery status (`PENDING`, `SUCCEEDED`, `FAILED`). Omit to return all. |

**`Response`**

```json Response
{
  "data": [
    {
      "object_type": "WEBHOOK_EVENT",
      "id": "whev_...",
      "webhook_id": "whk_...",
      "action": "INVOICE.CREATED",
      "status": "FAILED",
      "status_code": 500,
      "request_payload": "{ ... }",
      "failure_data": {
        "error": "Unexpected status code: 500",
        "response_body": "Internal Server Error"
      },
      "created_at": "2026-07-15T09:12:04Z",
      "updated_at": "2026-07-15T09:12:14Z"
    }
  ],
  "page": 1,
  "limit": 20
}
```

## Retrieving a single webhook event

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

**`Get a webhook event`**

```bash 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`**

```bash 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.

---