# Show a webhook subscription

```http
GET https://secure.yoprint.com/v1/api/store/{team_slug}/setting/webhook_subscription/{hash_id}
```

- API version: v1
- Operation ID: `v1_public_webhook_subscription_show`
- Section: Team settings › [Webhook subscriptions](https://developer.yoprint.com/reference/webhook-subscriptions.md)
- Web page: https://developer.yoprint.com/reference/webhook-subscriptions/v1-webhook-subscription-show/
- Authentication: `Authorization: Bearer YOUR_API_KEY`

Returns one webhook subscription with its `status` and `disable_reason`, and its signing `secret` for the team owner and members with Manage Settings.

Check `status` when deliveries stop: a subscription can be turned off by hand or by YoPrint after repeated failures (`disable_reason` `auto_disable_too_many_errors`).

## Permission

Any team member can call it. Reading needs no extra permission. The signing `secret` is null unless you are the team owner or have Manage Settings.

## Path parameters

- `team_slug` (string, required): Your team slug, shown as Team ID next to your API key in Profile. Example `your-team`.
- `hash_id` (string, required): The webhook subscription's `id`: a hash id from an earlier answer. Only hash ids work here; anything else answers 404 `page_not_found`. Example `V4keXwwxMQyXw7`.

## Request body

This operation takes no request body.

### Example request

```bash
curl 'https://secure.yoprint.com/v1/api/store/your-team/setting/webhook_subscription/V4keXwwxMQyXw7' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Accept: application/json' \
  -H 'X-Yoprint-Decimal-Format: exact-v1'
```

## Response

`200` Successful response.

Fields:

- `data` (object, required)
  - `created_at` (string (date-time), required)
  - `disable_reason` (string | null, required): `auto_disable_too_many_errors` when YoPrint turned the subscription off because its deliveries kept failing. Otherwise null. Setting `status` back to `active` does not clear it.
  - `enabled_events` (array of strings, required): Subscribed event names, or `all` for every event.
  - `id` (string, required): The subscription id.
  - `name` (string, required)
  - `secret` (string | null, required): The secret used to sign event payloads: `whsec_` followed by 32 letters and digits. Use it to verify incoming messages. YoPrint creates it when the subscription is created and never changes it. Keep it private. Only the team owner and members whose permission group has Manage Settings can see it; for every other member it is null. It is also null for AI apps reading through YoPrint's MCP server.
  - `source` (string, required): The `source` sent when the subscription was created: the web app sends `yoprint`, YoPrint's Zapier app sends `zapier`.
  - `status` (string, required): Only `active` subscriptions receive events. One of: `"active"`, `"disabled"`.
  - `updated_at` (string (date-time), required)
  - `url` (string | null, required): The destination URL where YoPrint delivers events. On this API, this is the full URL. AI apps reading subscriptions through YoPrint's MCP server see only the origin (scheme and host, such as `https://example.com`) to protect webhook secrets.
- `status` (integer, required)
- `success` (boolean, required)

Example response:

```json
{
  "data": {
    "created_at": "2026-11-03T15:00:00+00:00",
    "disable_reason": null,
    "enabled_events": [
      "order.created",
      "payment_received.any_amount"
    ],
    "id": "V4keXwwxMQyXw7",
    "name": "Order sync",
    "secret": "whsec_YOUR_WEBHOOK_SECRET",
    "source": "yoprint",
    "status": "active",
    "updated_at": "2026-11-03T15:00:00+00:00",
    "url": "https://example.com/yoprint/webhooks"
  },
  "status": 200,
  "success": true
}
```

## Errors

- `401` The API key is missing or wrong (`unauthenticated`).
  - When: The API key is missing or wrong. Fix: Send your personal API key as `Authorization: Bearer YOUR_API_KEY`.
- `403` You are not allowed to do this. `api_access_not_in_plan`: your team's plan doesn't include API access (Pro and above, with an active subscription or trial), so every request answers this until the team upgrades. When your role lacks the permission the operation needs, the body is only `{"message": "Insufficient Permission"}`. Other refusals use the error envelope, with `unauthorized` or `user_is_not_authorized`.
- `404` Not found. `page_not_found`: the team slug is unknown, you are not a member of the team, or an id in the path is not one of this team's. `code: null`, with a message that starts "No query results for": there is no record with that id.
  - When: No webhook subscription with that id on this team (`error.code` is null and `error.message` starts "No query results"), the id is not one of this team's hash ids, or you are not a member of the team (both `page_not_found`). Fix: Use an `id` from the list operation and check the team slug.

## Notes

- The status filters (`config`) are not returned.

## Related

- [Touch a webhook subscription](https://developer.yoprint.com/reference/webhook-subscriptions/v1-webhook-subscription-update-patch.md): `PATCH /v1/api/store/{team_slug}/setting/webhook_subscription/{hash_id}`
- [List deliveries for a webhook subscription](https://developer.yoprint.com/reference/webhook-subscriptions/v1-webhook-subscription-log.md): `GET /v1/api/store/{team_slug}/setting/webhook_subscription/{id}/log`
