Returns one endpoint's per-attempt delivery log, newest first — the record of…
Returns one endpoint's per-attempt delivery log, newest first — the record of what was sent, what the subscriber answered, and how long it took.
GET /v1/webhook/{id}/deliveries
| Address | https://api.hanzo.ai/v1/webhook/{id}/deliveries |
| Method | GET |
| Operation | get_webhook_by_id_deliveries |
| Auth | Authorization: Bearer $HANZO_API_KEY |
Returns one endpoint's per-attempt delivery log, newest first — the record of what was sent, what the subscriber answered, and how long it took. One event that retried three times appears as three rows sharing a delivery id. It is org-scoped exactly like every other route here: the endpoint lookup only ever finds THIS org's endpoint, so another org's id is a 404 and never a window onto its logs.
Request
3 fields.
| Field | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes | |
limit | query | integer | — | Limit caps how many attempts come back: default 50, maximum 200. |
status | query | string | — | Status narrows the log to one outcome: "ok", "retrying" or "failed". |
Response
| Status | Body | Meaning |
|---|---|---|
200 | deliveryList | ok |
200 body — 10 fields.
| Field | In | Type | Always | Description |
|---|---|---|---|---|
data | body | DeliveryRow[] | — | Data is the matching attempts, newest first. |
data[].attempt | body | integer | — | Attempt is which try this row is, starting at 1. |
data[].created | body | string | — | Created is when the attempt was made, RFC3339 in UTC. |
data[].delivery | body | string | — | DeliveryID groups the attempts for ONE event to ONE endpoint. |
data[].durationMs | body | integer | — | DurationMs is how long this attempt took end to end, in MILLISECONDS. |
data[].endpoint | body | string | — | EndpointID is which subscriber this attempt was for. |
data[].error | body | string | — | Error says what went wrong on a non-ok attempt. |
data[].httpStatus | body | integer | — | HTTPStatus is what the subscriber answered. |
data[].status | body | string | — | Status is "ok" when the subscriber accepted it, "retrying" while a further attempt will follow, and "failed" when none will. |
data[].subject | body | string | — | Subject is the event that was delivered ("commerce.order.created"). |
Failure carries the platform error shape — see Errors.
Examples
hanzo webhooks deliveries <id>import { Configuration, WebhookApi } from 'hanzoai';
const api = new WebhookApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getWebhookByIdDeliveries({ id: 'id' });from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import WebhookApi
client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = WebhookApi(client).get_webhook_by_id_deliveries(id='id')cfg := cloud.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := cloud.NewAPIClient(cfg)
resp, _, err := client.WebhookAPI.GetWebhookByIdDeliveries(context.Background()).Execute()
if err != nil {
return err
}use hanzo_cloud::apis::{configuration::Configuration, webhook_api};
let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();
let result = webhook_api::get_webhook_by_id_deliveries(&cfg, Default::default()).await?;import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.WebhookApi;
ApiClient client = new ApiClient();
client.setRequestInterceptor(b -> b.header("Authorization", "Bearer " + System.getenv("HANZO_API_KEY")));
var result = new WebhookApi(client).getWebhookByIdDeliveries();The method above is the one at the current release of the document. [email protected] (npm) and [email protected] (PyPI) were generated from an earlier release, where this operation carried a different id, so it spells the method differently — regenerating the clients is what makes the two agree. SDKs →
curl https://api.hanzo.ai/v1/webhook/<id>/deliveries \
-H "Authorization: Bearer $HANZO_API_KEY"The door reaches webhook through the webhooks tool, which names its 7 operations with its own verbs — this one among them, under a name only the door declares. describe explains any of them:
curl -X POST https://api.hanzo.ai/v1/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "describe",
"arguments": {
"op": "list_webhooks"
}
}
}'How is this guide?