<!-- https://cutedyno.com/docs/api/list-webhook-deliveries -->

# List webhook deliveries

`GET https://api.cutedyno.com/v1/webhooks/{id}/deliveries`

Returns the delivery log for one subscription, including response codes and the next scheduled retry.



Required permission: `webhooks:read`

Accepts `profileId` to target a specific profile. Omit it to use the key’s home profile.

Required permission: `webhooks:read`

MCP tool: `list_webhook_deliveries`

## Path parameters

- `id` (string, required) — Webhook subscription id.

## Query parameters

- `profileId` (string) — Profile to act on. Defaults to the profile the API key was created in.
- `status` (enum) One of: pending, delivered, failed, all.
- `limit` (integer) — Page size, 1-100. Defaults to 50.
- `offset` (integer) — Rows to skip. Defaults to 0.

## Request

```bash
curl -X GET "https://api.cutedyno.com/v1/webhooks/WEBHOOK_ID/deliveries?profileId=PROFILE_ID" \
  -H "Authorization: Bearer $CUTEDYNO_API_KEY"
```

```typescript
import { CuteDyno } from '@cutedyno/node';

const cutedyno = new CuteDyno();

const result = await cutedyno.webhooks.deliveries('WEBHOOK_ID', {
  profileId: "PROFILE_ID"
});
console.log(result);
```

```python
import os
import requests

url = "https://api.cutedyno.com/v1/webhooks/WEBHOOK_ID/deliveries?profileId=PROFILE_ID"
headers = {"Authorization": f"Bearer {os.environ['CUTEDYNO_API_KEY']}"}

response = requests.get(url, headers=headers)
response.raise_for_status()
print(response.json())
```

## Response 200

- `deliveries` (WebhookDelivery[], required)
- `total` (number, required)
- `maxAttempts` (number, required)
- `retrySchedule` (number[], required)
- `limit` (number, required)
- `offset` (number, required)

```json
{
  "deliveries": [
    {
      "id": "a1b2c3d4-0000-4000-8000-000000000000",
      "eventType": "string",
      "status": "pending",
      "attempts": 0,
      "responseStatus": 0,
      "responseBody": "string",
      "lastAttemptAt": "string",
      "nextAttemptAt": "string",
      "createdAt": "string"
    }
  ],
  "total": 1,
  "maxAttempts": 0,
  "retrySchedule": [
    0
  ],
  "limit": 20,
  "offset": 0
}
```

## Errors

- `invalid_api_key` (401) — The key does not exist, was revoked, or is malformed. Keys start with cdyn_live_.
- `not_found` (404) — The resource does not exist inside the resolved profile.
- `rate_limit_exceeded` (429) — Too many requests for this key. Honour the Retry-After header before retrying.
- `internal_error` (500) — Something failed on our side. Retry with the same Idempotency-Key; report the requestId if it persists.