View as markdown
Series

Signal history

One signal's values over time — numeric readings or a boolean flag's per-bar state. The canonical call is GET /v2/series with the signal as a column: built-in columns and your custom signals resolve identically, and other columns can ride alongside for context.

Deprecated — sunset 2026-10-31. Responses are unchanged until then; after that date this route may return 410 Gone. Use /v2/series?ticker=X&columns=<signal> instead.

Recipes

A signal is a column; history is the series of that column.

A numeric signal over time

AAPL's RSI, daily.

curl "https://api.tickerbot.io/v2/series?ticker=AAPL&columns=rsi_14" \
  -H "Authorization: Bearer YOUR_KEY"

A boolean flag's state, with price for context

curl "https://api.tickerbot.io/v2/series?ticker=AAPL&columns=above_sma_200%2Cclose" \
  -H "Authorization: Bearer YOUR_KEY"

Only the flips

transitions_only uses the same shared rule that fires webhooks.

curl "https://api.tickerbot.io/v2/series?ticker=AAPL&columns=above_sma_200%2Cclose&transitions_only=true" \
  -H "Authorization: Bearer YOUR_KEY"

Quarterly fundamentals on the fiscal grid

curl "https://api.tickerbot.io/v2/series?ticker=AAPL&columns=eps%2Crevenue&interval=1q" \
  -H "Authorization: Bearer YOUR_KEY"

The same call takes up to 50 tickers at once — cross-ticker signal history on one aligned grid is what series exists for. For on/off intervals with gap-merging, see Signal spans; for flips on the merged event timeline, Signal firings.

The legacy route

GET /v2/signals/{signal}/{ticker}/history/{interval} — deprecated, sunset 2026-10-31 — it keeps serving until then, with{' '} <code>Deprecation</code>/<code>Sunset</code> headers.

Since 2026-08-05 it is a thin view over /v2/series rather than its own queries. The { t, v } shape is unchanged at every interval. Two effects worth knowing: at 1q the values now come from the series quarterly arm, which dedupes restated fiscal quarters and takes the latest-recorded row (the old queries did neither, so a ticker with restatements could return a different value run to run), and 1q cursor tokens changed shape — replaying one issued before that date returns 400 rather than restarting the walk silently. The other intervals’ cursors are unaffected.

The route serves the same envelope as before (response array bars of { t, v } pairs; from/to/limit ≤ 1000 / cursor; intervals 1m/1h/1d/1w/1q — custom signals 1m/1h/1d only). Its 1w applies real weekly resampling (Monday-keyed last observation), same rule as series. It returns the same data as the series calls above and will not change shape. New integrations should read /v2/series; the full legacy schema lives in the OpenAPI spec.