# webhookDeliveries

Query

Paginate webhook deliveries (dead-letter surface) for the current workspace, newest first. Filter by subscription and/or status. History is retained for 30 days.

Available to agents as MCP tool `getWebhookDeliveries` — see [Read tools](/api/v2/docs/mcp/read-tools#get-webhook-deliveries).

## Arguments

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `after` | `String` | No | `null` | Cursor for fetching the next page of results. |
| `filter` | [`WebhookDeliveryFilterInput`](/api/v2/docs/types/webhook-delivery-filter-input) | No | `{}` | Filter criteria. Optionally narrow by subscription and/or status. |
| `first` | `Int` | No | `20` | Number of deliveries to return (page size). |

## Returns

A paginated connection of [`WebhookDelivery`](/api/v2/docs/types/webhook-delivery) nodes. See [Pagination](/api/v2/docs/types/pagination) for the connection shape.

## Examples

### List failed webhook deliveries

Paginate the delivery dead-letter surface, filtered to FAILED. A delivery whose nextAttemptAt is null has spent its retry ladder and is the input to redeliverWebhookDelivery. History is retained for 30 days.

```graphql
query WebhookDeliveriesDefault($filter: WebhookDeliveryFilterInput, $first: Int) {
  webhookDeliveries(filter: $filter, first: $first) {
    nodes {
      id
      subscriptionId
      eventId
      status
      attemptCount
      lastResponseStatus
      lastError
      responseTimeMs
      nextAttemptAt
    }
    pageInfo {
      hasNextPage
      endCursor
    }
    totalCount
  }
}
```

Variables:

```json
{
  "filter": {
    "status": "FAILED"
  },
  "first": 10
}
```

Response — HTTP 200:

```json
{
  "data": {
    "webhookDeliveries": {
      "nodes": [
        {
          "id": "dbe6be29-b520-5cdc-81a3-b7a0d5d8f62e",
          "subscriptionId": "41662e09-10c4-52e4-844a-62ddedb38f11",
          "eventId": "0f8e0d63-409e-5fd1-88bd-2febbe05fa53",
          "status": "FAILED",
          "attemptCount": 8,
          "lastResponseStatus": 500,
          "lastError": "HTTP 500 from endpoint",
          "responseTimeMs": 87,
          "nextAttemptAt": null
        }
      ],
      "pageInfo": {
        "hasNextPage": false,
        "endCursor": "Z2lkOi8vYXJjaGl2ZS9XZWJob29rRGVsaXZlcnkvMjAyNC0xMi0zMVQxNTowMDowMC4wMDAwMDBafGRiZTZiZTI5LWI1MjAtNWNkYy04MWEzLWI3YTBkNWQ4ZjYyZQ=="
      },
      "totalCount": 1
    }
  }
}
```
