Subscribe to events
https://api.tickerbot.io/v2/events/subscribeCreates an event-trigger webhook: it fires when NEW events of the chosen kinds land in the archives — "every split in my universe", "Goldman downgrades on tickers I hold" — with no polling on your side. Sugar for [POST /v2/webhooks](/docs/endpoints/webhooks/create) with trigger: { type: "event", … }; the webhook is listed/updated/deleted at /v2/webhooks like any other.
Two optional, composable filters — they answer different questions about different objects:
- `q` filters the event's TICKER STATE at fire time —
"downgrades, but only where market_cap > 1e10". Scan grammar; custom signals expand and freeze at creation. - `event_q` filters the EVENT CONTENT —
"only where payload->>'firm' = 'Goldman Sachs'". The [GET /v2/events](/docs/endpoints/events) grammar over exactly(ticker, ts, kind, payload).
Deliveries carry event: "events.fired" with an events array of { ticker, ts, kind, payload } rows (same shapes as [GET /v2/events](/docs/endpoints/events)).
Latency is ingest cadence, not sub-minute: analyst actions ≤1 hour (the archive refreshes hourly, 24/7); dividend/split/insider kinds refresh daily in the evening ET pipeline. Only genuinely new events fire — historical backfills never do.
Plan access
Paid plans (Hobby and above).
Cadence
Real-time on every paid plan — evaluated on every data refresh (~1×/min), so a match is delivered within seconds of it landing. Optionally throttle a webhook to hourly or at-market-open.
Capacity
Hobby 10 · Pro 100 · Scale 1,000 · Enterprise unlimited.
Body parameters
stringrequiredEvent kinds to fire on — array or comma list.
stringScope to specific tickers (max 50). Mutually exclusive with `universe`. Omit both for all tickers.
stringScope to a universe slug (`top_10`, `top_100`, or one of yours).
stringOptional row-STATE filter evaluated against the event's ticker at fire time. Same grammar as scan `q`; custom signals are expanded and frozen at creation. See the schema for columns + flags you can compose.
stringOptional event-CONTENT filter in the `/v2/events` grammar — only `ticker`, `ts`, `kind`, `payload` may appear. Composes with `q`.
stringHTTPS delivery URL; or use `channel` + `discord_url`/`device_id`. Omit for in-app.
stringDelivery channel.
stringDisplay name. Defaults to `events: <kinds> · <scope>`.
Status codes
201test_url.400403webhook_tier_required (Free) or webhook_limit_reached (at cap) — event webhooks consume the same plan slots.404universe does not exist.Notes
- Delivery payloads use
event: "events.fired"(notwebhook.fired) with aneventsarray — receivers handling both webhook types should branch on theeventfield.