Guides · Vanoe Market Intelligence API

Webhooks: get notified when a stock changes trend stage or a signal flips

Polling fifty tickers every day to notice that one of them changed stage is wasteful. Webhooks turn the API around: subscribe to the transitions you care about and receive a signed POST when one happens.

Event types

stage.transition when a ticker moves between stages, pnf.signal_change when a P&F chart flips between buy and sell, macro.regime_change when the regime label changes, and insider.cluster when several distinct insiders buy within the window. An empty ticker list subscribes to the curated ~80-name universe.

Delivery guarantees

Each delivery is signed with HMAC-SHA256 over the exact body (X-Intel-Signature) and carries a stable delivery id (X-Intel-Delivery) that stays the same across retries, so you can deduplicate. Failed deliveries retry at 1 minute, 5 minutes, 30 minutes, 2 hours and 6 hours before being marked dead. Each delivered event costs 1 credit; test pings are free.

Managing subscriptions

POST /v1/webhooks creates one with a URL, an event list and an optional ticker list; GET lists them, DELETE /v1/webhooks/{id} removes one, POST /v1/webhooks/{id}/test sends a signed test event, and GET /v1/webhooks/{id}/deliveries shows the audit trail. Webhooks are included on Pro and Business plans.

Request

curl -X POST -H "Authorization: Bearer sk_live_…" -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/hooks/vanoe", "events": ["stage.transition", "pnf.signal_change"], "tickers": ["AAPL", "NVDA"]}' \
  "https://api.vanoe.ai/v1/webhooks"

Response

{
  "data": {
    "id": 12, "url": "https://example.com/hooks/vanoe",
    "events": ["stage.transition", "pnf.signal_change"], "tickers": ["AAPL", "NVDA"],
    "secret": "whsec_…", "active": true
  }
}

# a delivery, POSTed to your URL:
# X-Intel-Event: stage.transition   X-Intel-Delivery: 1f3c…   X-Intel-Signature: sha256=…
{"id": "1f3c…", "event": "stage.transition", "ticker": "NVDA",
 "from": {"stage": 1, "label": "Basing"}, "to": {"stage": 2, "label": "Advancing"}, "as_of": "2026-09-10"}

Cost: 1 credit per delivered event. Creating and listing subscriptions is free. Pro and Business plans.

Fields

eventsstage.transition · pnf.signal_change · macro.regime_change · insider.cluster
tickerslist, or empty for the curated universe
secretHMAC key, shown once at creation

Questions

How do I verify a webhook?

Compute HMAC-SHA256 of the raw request body with the subscription secret and compare it, constant-time, with the X-Intel-Signature header.

Will I get duplicates?

Delivery is at-least-once. Retries carry the same X-Intel-Delivery id and an identical body, so deduplicate on that id.

Can I test my endpoint without waiting for a real transition?

Yes, POST /v1/webhooks/{id}/test queues a signed test event immediately and for free.

Try it

Free tier: 1,000 credits a month, no card. Every response is informational data only, not financial advice.

Related guides