---
title: "Get webhook deliveries — Anis Developers"
description: "Find deliveries for your application, including failures that you can request again."
url: https://developers.anis.ly/reference/get-webhook-events/
language: en
---

> Every page of this documentation: https://developers.anis.ly/llms.txt

[API reference](https://developers.anis.ly/reference.md) · Webhooks

# Get webhook deliveries

`GET /v1/webhook-events`

Find deliveries for your application, including failures that you can request again.

- **Permission:** None
- **Authentication:** Signed read
- **Anis’s answer:** Not signed
- **Staff-set limits it counts toward:** All requests
- **.NET SDK:** `anis.WebhookEvents.GetWebhookEventsAsync(query)`

## Parameters

| Name | In | Type | Notes |
| --- | --- | --- | --- |
| `status` (optional) | `query` | WebhookDeliveryStatus | Optional delivery state: pending, delivering, delivered, retrying, failed, waitingForProjection, waitingForEndpoint or cancelled. Omit it for all states. |
| `since` (optional) | `query` | string | Optional inclusive UTC lower bound on when the event occurred. |
| `cursor` (optional) | `query` | string | The `nextCursor` of the previous page, passed back exactly as received. Leave it out for the first page. |

## Request

Signed with your key. No body, no nonce.

Headers: `Signature-Input`, `Signature`, `X-Anis-Date`, `Accept-Language` (optional). The SDKs set all of them for you.

**Body:** none.

## Responses

| Status | Meaning | Body |
| --- | --- | --- |
| 200 | Success. | [WebhookEventCollection](#type-webhookeventcollection) |
| 400 | Refused: the signed request is badly built. | [Problem](#refusals) |
| 401 | Refused: not authenticated. | [Problem](#refusals) |
| 403 | Refused: not allowed. | [Problem](#refusals) |
| 404 | Refused: not found, or not yours. | [Problem](#refusals) |
| 422 | Refused: the request breaks a rule. | [Problem](#refusals) |
| 429 | Refused: a limit was reached. | [Problem](#refusals) |
| 503 | No decision: a dependency was unavailable. | [Problem](#refusals) |

The answers of this call are not signed — no `Signature` or `Signature-Input` header, success or refusal. There is nothing to verify; TLS protects them. `Content-Digest` and `X-Request-Id` are still present.

## Refusals

A refusal of this call is a problem without a signature. Branch on its `code`; each links to what it means and what to do.

| Error | Code | Status |
| --- | --- | --- |
| [Invalid credentials](https://developers.anis.ly/errors/invalid-credentials.md) | `invalid_credentials` | 401 |
| [Malformed signed request](https://developers.anis.ly/errors/malformed-signed-request.md) | `malformed_signed_request` | 400 |
| [Insufficient scope](https://developers.anis.ly/errors/insufficient-scope.md) | `insufficient_scope` | 403 |
| [Source address not allowed](https://developers.anis.ly/errors/source-ip-not-allowed.md) | `source_ip_not_allowed` | 403 |
| [Rate limited](https://developers.anis.ly/errors/rate-limited.md) | `rate_limited` | 429 |
| [Validation failed](https://developers.anis.ly/errors/validation-failed.md) | `validation_failed` | 422 |
| [Service unavailable](https://developers.anis.ly/errors/dependency-unavailable.md) | `dependency_unavailable` | 503 |
| [Request timeout](https://developers.anis.ly/errors/request-timeout.md) | `request_timeout` | 504 |
| [Internal error](https://developers.anis.ly/errors/internal-error.md) | `internal_error` | 500 |
| [Not found](https://developers.anis.ly/errors/resource-not-found.md) | `resource_not_found` | 404 |

## Types

### WebhookEventCollection

| Field | Type | Notes |
| --- | --- | --- |
| `items` (required) | list of [WebhookEvent](#type-webhookevent) | The records on this page. |
| `nextCursor` (required) | string | Pass this opaque value unchanged as cursor; null marks the last page. |

### WebhookEvent

| Field | Type | Notes |
| --- | --- | --- |
| `id` (required) | UUID | The identifier returned for this record. Keep it unchanged when reading it again. |
| `type` (required) | string | The notification type describing what happened. |
| `status` (required) | [WebhookDeliveryStatus](#type-webhookdeliverystatus) | The delivery state, not the purchase state. |
| `attempts` (required) | integer | The number of delivery attempts recorded. |
| `lastAttemptAt` (required) | string (date-time) | The previous or next scheduled attempt time, null when none is known. |
| `nextAttemptAt` (required) | string (date-time) | The previous or next scheduled attempt time, null when none is known. |
| `lastResponseCode` (required) | integer | The last destination HTTP status, null before one is received. |
| `lastFailureKind` (required) | string | The recorded delivery failure category, null before a failure. Values: `httpStatus`, `timeout`, `connect`, `tls`, `targetRefused`, `responseTooLarge`, `challengeMismatch`, `projectionUnavailable`, `endpointDisabled`, `signingUnavailable` |

### WebhookDeliveryStatus
