# Webhooks

A webhook is a **trigger plus a delivery**: a saved query or condition paired with where to send it.

- **Create a webhook** — `POST /v2/webhooks`
- **Get a webhook** — `GET /v2/webhooks/{id}`
- **Get all webhooks** — `GET /v2/webhooks`
- **Update a webhook** — `PATCH /v2/webhooks/{id}`
- **Delete a webhook** — `DELETE /v2/webhooks/{id}`
- **Re-enable a webhook** — `POST /v2/webhooks/{id}/enable`
- **Test fire a webhook** — `POST /v2/webhooks/{id}/test`
- **Delivery history** — `GET /v2/webhooks/{id}/deliveries`

## Four doors, one object

POST /v2/webhooks is canonical; four /subscribe shortcuts build the identical webhook.

`POST /v2/webhooks` is the canonical create — pass a discriminated `trigger` object (`scan`, `ticker`, `signal`, or `event`) plus your delivery fields. Four shortcut endpoints build the identical webhook if a simpler body reads better: `POST /v2/scan/subscribe`, `/v2/tickers/{ticker}/subscribe`, `/v2/signals/{signal}/subscribe`, and `/v2/events/subscribe`. Whichever door you use, the webhook is listed and managed through the registry above — fetch and list, update the trigger or target, audit deliveries, re-enable after auto-suspension, and delete.

