---
search:
  tags:
    - Webhooks
    - GET
seo:
  description: >-
    Returns webhooks across the account. Optionally filter by shop_id or
    seller_id query parameter. Reference for the GET /webhooks endpoint in the
    Bolder API v2.
sidebar:
  label: List webhooks
  badge: GET
title: List webhooks
type: openapi-operation
---
Returns webhooks across the account.
Optionally filter by `shop_id` or `seller_id` query parameter.

### Delivery payload guarantees

Every order-related event payload (`order.created`, `order.updated`,
`order.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 `order.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`

**cURL**

```bash
# List all webhooks for account
curl -s -H "Authorization: Bearer $BOLDER_TOKEN" \
  "https://api.onbolder.com/v2/webhooks"

# Filter by shop
curl -s -H "Authorization: Bearer $BOLDER_TOKEN" \
  "https://api.onbolder.com/v2/webhooks?shop_id=1"
```

**Responses**

- `200` — Webhooks list

Response example, 200:

```json
{
  "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": "order.created",
        "topic_style": "singular",
        "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"
      }
    ]
  }
}
```
