Skip to content
BolderBolder API
Esc
navigateopen⌘Jpreview

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) increments error_count on the subscription. Reaching 100 sets status to failed and 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 resets error_count to 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 Gone response from your endpoint immediately sets the subscription’s status to disabled — no further attempts are made, regardless of error_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 (or disabled) subscription can be re-enabled at any time via PUT /webhooks/{id}/reactivate, which resets the error count.
GET/webhooks
Authorization
AuthorizationBearer token (JWT) · headerrequired
Query parameters
shop_idinteger
Filter by shop ID
seller_idinteger
Filter by seller ID
pageinteger
default: 1
per_pageinteger
default: 30
statusstring
Filter by status (active, failed_activation, failed, disabled)
Responses
200Webhooks list
total_itemsinteger
per_pageinteger
pageinteger
_linksHalLinks
_classstring[]
_embeddedobject
Show properties
subscriptionsWebhook[]
Show properties
Array of Webhook
_linksHalLinks
idinteger
channel_idinteger
topicstring
urlstring
statusstring
`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_activationfaileddisabled
authobject
notify_originboolean
app_idinteger
error_countinteger
last_errorstring
last_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"
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"
      }
    ]
  }
}