List webhooks
Returns webhooks across the account.
Optionally filter by shop_id or seller_id query parameter.
Delivery payload guarantees
Every order-related event payload (orders.created, orders.updated,
orders.updated.*) is built from the same serializer and always includes
both id (numeric order id) and code (the order’s public-facing
reference/permalink) — neither is ever omitted.
Retries and automatic disabling
Two independent counters are involved — don’t confuse them:
- Per-event retries (up to 10, over ~24h): each individual event
delivery (e.g. one order’s
orders.updated) is retried by the delivery worker up to 10 times with growing backoff, spread across roughly a day (a few minutes after the 1st failure, up to ~24h after it by the 10th and final attempt) — this gives a temporarily-down endpoint a full day to recover before this specific event delivery is given up on. - Subscription-wide
error_count(disables at 100): every failed attempt across all events (including each of the 10 per-event retries above) incrementserror_counton the subscription. Reaching 100 setsstatustofailedand stops all further delivery — in practice that means roughly 10 different order events each exhausting their full retry chain with no successful delivery in between, since any single successful delivery resetserror_countto 0. There’s no fixed time bound on this: it depends on how many order events fire while your endpoint is down.
Delivery outcomes are tracked on the subscription independent of the worker retries:
- A
410 Goneresponse from your endpoint immediately sets the subscription’sstatustodisabled— no further attempts are made, regardless oferror_count. - Any other non-2xx response (or timeout) increments
error_count. Timeouts and a handful of transient upstream errors (502/512/523) don’t count toward the disable threshold; other non-2xx responses do. - A
failed(ordisabled) subscription can be re-enabled at any time viaPUT /webhooks/{id}/reactivate, which resets the error count.
GET
/webhooksAuthorization
AuthorizationBearer token (JWT) · headerrequiredQuery parameters
shop_idintegerFilter by shop ID
seller_idintegerFilter by seller ID
pageintegerdefault: 1
per_pageintegerdefault: 30
statusstringFilter by status (active, failed_activation, failed, disabled)
Responses
200Webhooks list
total_itemsintegerper_pageintegerpageinteger_linksHalLinks_classstring[]_embeddedobjectShow propertiesHide properties
subscriptionsWebhook[]Show propertiesHide properties
Array of
Webhook_linksHalLinksidintegerchannel_idintegertopicstringurlstringstatusstring`active` — receiving deliveries normally.
`failed_activation` — the initial activation handshake failed.
`failed` — disabled automatically after 100 consecutive non-2xx delivery
responses (see `error_count`); can be re-enabled via
`PUT /webhooks/{id}/reactivate`.
`disabled` — the target URL returned `410 Gone`; disabled immediately,
with no retry threshold. Also reactivatable via the same endpoint.
Allowed:
activefailed_activationfaileddisabledauthobjectnotify_originbooleanapp_idintegererror_countintegerlast_errorstringlast_error_onstring<date-time>created_onstring<date-time>updated_onstring<date-time>Request
curl -X GET "https://api.onbolder.com/v2/webhooks" \
-H "Authorization: Bearer YOUR_TOKEN"const response = await fetch("https://api.onbolder.com/v2/webhooks", {
method: "GET",
headers: {
"Authorization": "Bearer YOUR_TOKEN"
}
});import requests
response = requests.get(
"https://api.onbolder.com/v2/webhooks",
headers={
"Authorization": "Bearer YOUR_TOKEN"
},
)Response
{
"total_items": 42,
"per_page": 20,
"page": 1,
"_links": {
"property1": {
"href": "string",
"templated": true,
"method": "get",
"title": "string",
"type": "string"
},
"property2": {
"href": "string",
"templated": true,
"method": "get",
"title": "string",
"type": "string"
}
},
"_class": [
"results",
"hubSubscriptions"
],
"_embedded": {
"subscriptions": [
{
"_links": {
"property1": {
"href": "string",
"templated": true,
"method": "get",
"title": "string",
"type": "string"
},
"property2": {
"href": "string",
"templated": true,
"method": "get",
"title": "string",
"type": "string"
}
},
"id": 0,
"channel_id": 0,
"topic": "orders.created",
"url": "https://myapp.com/events",
"status": "active",
"auth": {},
"notify_origin": true,
"app_id": 0,
"error_count": 0,
"last_error": "string",
"last_error_on": "2019-08-24T14:15:22Z",
"created_on": "2019-08-24T14:15:22Z",
"updated_on": "2019-08-24T14:15:22Z"
}
]
}
}