# Get one delivery, with its body

`GET /v1/webhook-deliveries/{id}`

One delivery with the exact JSON body Weir sends (and signs), how many attempts it has taken, the last response status and error, and when the next attempt is due. Weir keeps the latest attempt's outcome, not a log of every attempt.

**Price:** Free.

**Rate limit:** Counts as 1 request against your per-minute rate limit.

**MCP tool:** `get_webhook_delivery`, only on [MCP](/mcp) connections granted monitor or webhook access.

Requires an API key, sent as `Authorization: Bearer <key>`.

## Request

```bash
curl --request GET \
  --url https://api.weirapp.io/v1/webhook-deliveries/ID \
  --header "Authorization: Bearer $WEIR_API_KEY"
```

### Path parameters

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `id` | string (uuid) | yes |  |

## Response

The delivery.

### `200`

| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| `data` | object | yes |  |
| `data.id` | string (uuid) | yes |  |
| `data.webhookId` | string (uuid) | yes |  |
| `data.eventId` | string | yes |  |
| `data.eventType` | string | yes |  |
| `data.status` | string | yes |  |
| `data.attempts` | integer | yes | min 0 |
| `data.lastStatusCode` | integer or null | yes |  |
| `data.lastError` | string or null | yes |  |
| `data.deliveredAt` | string or null | yes |  |
| `data.createdAt` | string (date-time) | yes |  |
| `data.payload` | any | no |  |
| `data.nextAttemptAt` | string or null | yes |  |
| `meta` | object | yes |  |
| `meta.requestId` | string | yes |  |

## Errors

| Status | Meaning | What to do |
| --- | --- | --- |
| `400` | The request failed validation. | The request was malformed. The `details` object names the field. |
| `401` | The API key is missing, malformed, expired, or revoked. | The key is missing, malformed, revoked, or expired. |
| `402` | The account is out of credit. Not retryable: this cannot clear until the billing period resets or the plan changes. | Out of credits. **Never retry.** Only a person can clear it, by adding credits at https://weirapp.io/dashboard/billing. Retrying never will. |
| `403` | The API key does not carry the scope this route requires. | The key is valid but lacks the scope this operation needs. |
| `404` | No such delivery in this account. | No such resource, or it is not public. |
| `429` | The per-minute rate limit is exhausted. Retryable: wait for Retry-After and try again. | Rate limited. Retryable: wait for `Retry-After`, then try again. |
| `500` | An unexpected error occurred. | Something failed on our side. Retryable with backoff. |
