/v1/webhooks/deliveries/{delivery_id}betaGet a delivery
- Needs
- Read your data
(mcp:read) - Plan
- Any plan with API access
- Limits
- 300 a minute per key
- Undo
- Nothing to undo: this only reads.
Explains one delivery: status, HTTP code, latency, error, next retry, the headers we sent (signature masked) and what your endpoint answered.
Try it
This only reads. It uses your real data and changes nothing.
Code and response
curl -X GET 'https://mcp.wa-api.cloud/v1/webhooks/deliveries/del_01J8Z7C2E5H9K4M6P8R1S3V5XB' \ -H "Authorization: Bearer $API_KEY"
The code reads your key from $API_KEY.
Parameters
| Field | Type | What it is |
|---|---|---|
| delivery_idrequired | string · path | The delivery id.pattern ^del_[0-9A-HJKMNP-TV-Z]{26}$ |
Headers
| Field | Type | What it is |
|---|---|---|
| Authorizationrequired | header | Bearer $API_KEY — your API key. |
| Api-Version | header | The API version to use, e.g. 2026-10-01. Default: the version your key is pinned to.one of: 2026-10-01 · pattern ^\d{4}-\d{2}-\d{2}$ |
Response 200
The delivery.
| Field | Type | What it is |
|---|---|---|
| idrequired | string | |
| endpoint_idrequired | string | |
| event_idrequired | string or null | |
| statusrequired | string | pending | succeeded | failed | expired |
| attemptrequired | number | |
| response_statusrequired | number or null | |
| latency_msrequired | number or null | |
| created_atrequired | string or null | |
| error_messagerequired | string or null | |
| next_attempt_atrequired | string or null | |
| request_headersrequired | object | Signature and custom header values are masked. |
| response_headersrequired | object | |
| response_bodyrequired | string or null | |
| response_body_truncatedrequired | boolean | |
| request_body | string or null | |
| request_body_truncated | boolean | |
| request_body_availablerequired | boolean or null | |
| attempts | array of object | Every attempt of the same event to the same endpoint, oldest first. |
| idrequired | string | |
| endpoint_idrequired | string | |
| event_idrequired | string or null | |
| statusrequired | string | pending | succeeded | failed | expired |
| attemptrequired | number | |
| response_statusrequired | number or null | |
| latency_msrequired | number or null | |
| created_atrequired | string or null | |
| attempts_note | string |
Errors
Errors are application/problem+json. Branch on code.
| Status | Code | When |
|---|---|---|
| 400 | invalid_input | A field is missing or has the wrong format. |
| 401 | unauthenticated | The Authorization header is missing, the key is unknown, expired or revoked. |
| 403 | entitlement_required | The workspace's plan does not include API access ( |
| 403 | insufficient_scope | The key does not have the permission this operation needs. |
| 404 | not_found | No delivery with this id. |
| 429 | rate_limited | The key or workspace went over its rate limit. Wait for |
| 503 | upstream_unavailable | A service behind the API is briefly unavailable. Safe to retry with backoff. |
Examples
Why did this fail?
Response 200
{
"id": "del_01J8Z7C2E5H9K4M6P8R1S3V5XB",
"endpoint_id": "ep_01J8Z6Q4M9W2X7K3B5N1R0T8YA",
"event_id": "evt_01J8Z7BZQ4F6G8J2K5N7Q9S1VC",
"status": "failed",
"attempt": 2,
"response_status": 500,
"latency_ms": 812,
"created_at": "2026-09-23T03:02:11Z",
"error_message": "HTTP 500 from receiver",
"next_attempt_at": "2026-09-23T03:07:11Z",
"request_headers": {
"Content-Type": "application/json",
"Webhook-Signature": "t=1758596531,v1=••••"
},
"response_headers": {
"content-type": "text/plain"
},
"response_body": "Internal Server Error",
"attempts": [
{
"id": "del_01J8Z7C2E5H9K4M6P8R1S3V5XB",
"endpoint_id": "ep_01J8Z6Q4M9W2X7K3B5N1R0T8YA",
"event_id": "evt_01J8Z7BZQ4F6G8J2K5N7Q9S1VC",
"status": "failed",
"attempt": 1,
"response_status": 500,
"latency_ms": 812,
"created_at": "2026-09-23T03:02:10Z"
},
{
"id": "del_01J8Z7C2E5H9K4M6P8R1S3V5XB",
"endpoint_id": "ep_01J8Z6Q4M9W2X7K3B5N1R0T8YA",
"event_id": "evt_01J8Z7BZQ4F6G8J2K5N7Q9S1VC",
"status": "failed",
"attempt": 2,
"response_status": 500,
"latency_ms": 812,
"created_at": "2026-09-23T03:02:11Z"
}
],
"response_body_truncated": false,
"request_body_available": null
}Operation path
The same operation is also at POST /v1/ops/webhooks_get_delivery, with every field in the JSON body.