Events

Signal firings

The moments a boolean signal flipped, as point-events on the unified timeline — kind=signal on GET /v2/events. “Golden cross fired 14 times this year” is a query, and a flip merges chronologically with dividends, downgrades, and news. Opt-in: the kind joins the stream only when you name it.

Payload

Each firing is one edge — an enter or an exit — computed by the same shared rule that fires webhooks.

fieldmeaning
signalThe boolean flag that flipped (built-in flags only)
directionenter (false→true) or exit (true→false)
priceTicker price at the edge
definition_versionVersion of the flag's definition that produced the edge — treat differing versions as differing computations

One fact, three shapes

A boolean over time can be read three ways. Pick by the question, not the name.

you wantuseshape
Flips merged with the rest of the timeline, cross-ticker/v2/events?kind=signal (this page)Point-events: one row per enter/exit
Intervals — “on from X to Y”, with gap-mergingSignal spans (/v2/signals/{signal}/{ticker}/events)Spans: started_at / ended_at pairs
Flip rows inside a series, price at the flip, custom signals too/v2/series?transitions_only=trueSeries rows carrying transitions

All three share one state-change rule — the same implementation that fires webhooks — so they cannot disagree about when a flip happened.kind=signal serves built-in flags; a custom signal's flips come from transitions_only, and numeric thresholds (“when did rsi_14 cross 70”) are an as-of replay question.

Recipes

This kind is filter-mode only: scope with kind / ticker / tickers / universe / since / until / limit. The q grammar, aggregates, and join=state are not supported over the signal log (no payload-filter pushdown over ~170M edges yet — the API refuses with a 400 rather than timing out).

# AAPL's recent signal flips
curl "https://api.tickerbot.io/v2/events?kind=signal&ticker=AAPL&limit=20" \
  -H "Authorization: Bearer YOUR_KEY"

# This week's flips across your universe — filter to one signal client-side
curl "https://api.tickerbot.io/v2/events?kind=signal&universe=top_100&since=2026-07-23&limit=1000" \
  -H "Authorization: Bearer YOUR_KEY"

Latency: edges are written by the minute pipeline (≈1 minute). History reaches as far back as each flag's computation does — a forward-only flag has no firings before its first computed day (see coverage). For pushes on flips, subscribe to the signal itself — signal webhooks ride the sub-minute state path, not event ingest.