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.
| field | meaning |
|---|---|
signal | The boolean flag that flipped (built-in flags only) |
direction | enter (false→true) or exit (true→false) |
price | Ticker price at the edge |
definition_version | Version 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 want | use | shape |
|---|---|---|
| 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-merging | Signal 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=true | Series 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.