Webhooks
Receive push notifications when your watchlist changes
Instead of polling the API for changes, register a webhook URL and TickerAPI will POST updates to you after each daily and weekly pipeline run. Subscribe to the events you care about and get structured, field-level diffs delivered automatically.
Event Types
| Event | Description | Default |
|---|---|---|
watchlist.changes | Structured field-level diffs for tickers on your watchlist. Only fires when at least one field has changed. | Enabled on creation |
data.ready | Simple notification that fresh data has been computed and is available via the API. | Opt-in |
Each webhook delivery counts as one API request against your daily allowance.
GET — List webhooks
Returns all registered webhooks for your account. The secret field is never included in GET responses.
Response Fields
| Field | Type | Description |
|---|---|---|
webhooks | array | Array of webhook objects |
webhooks[].id | string | Webhook ID |
webhooks[].url | string | Delivery URL |
webhooks[].events | object | Subscribed event configuration |
webhooks[].active | boolean | Whether the webhook is active |
webhooks[].created_at | string | ISO 8601 creation timestamp |
webhooks[].updated_at | string | ISO 8601 last update timestamp |
webhook_count | integer | Number of registered webhooks |
webhook_limit | integer | Max webhooks for your tier |
POST — Register a webhook
Register a new webhook URL. The secret is returned only on creation — save it immediately. Use it to verify webhook signatures.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
url | string | Yes | HTTPS URL to receive webhook payloads |
events | object | No | Event subscriptions. Defaults to {"watchlist.changes": true} |
PUT — Update a webhook
Update the URL, event subscriptions, or active status of an existing webhook.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Webhook ID to update |
url | string | No | New HTTPS URL |
events | object | No | Updated event subscriptions |
active | boolean | No | Enable or disable the webhook |
DELETE — Remove a webhook
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Webhook ID to delete |
Verifying Webhook Signatures
Every webhook delivery includes an X-Webhook-Signature header containing an HMAC-SHA256 signature of the request body, signed with your webhook's secret. Always verify this signature before processing the payload.
| Header | Description |
|---|---|
X-Webhook-Signature | HMAC-SHA256 hex digest of the raw request body |
X-Webhook-Event | Event type: watchlist.changes or data.ready |
Content-Type | application/json |
User-Agent | TickerAPI-Webhook/1.0 |
Webhook Payloads
watchlist.changes
Delivered after each pipeline run when at least one field has changed on a watchlist ticker. Contains structured diffs showing exactly which fields changed and their previous/current values.
Fields tracked: rsi_zone, macd_state, momentum_direction, divergence_detected, trend_direction, volume_ratio_band, accumulation_state, squeeze_active, extreme_condition, breakout_type, and fundamental fields (valuation_zone, analyst_consensus, analyst_consensus_direction, earnings_proximity, last_earnings_surprise, growth_zone).
When a band field changes, the change object includes stability context on Plus Pro tiers: stability, periods_in_current_state, flips_recent, and flips_lookback. These describe the new band value's stability at the time of the change. Not included on Free tier.
data.ready
Simple notification that fresh data has been computed. Useful for triggering downstream fetches without polling.