Endpoints

Signals

Time-series history for any column on the schema: numerics as bars, continuous flags as on/off windows, edge-triggered flags as trigger timestamps. Every signal listed on the schema page is queryable here, for any tracked ticker.

Three response shapes, one endpoint

The shape depends on the signal type. The endpoint is the same; the response just renders the appropriate primitive.

Numeric — bars

price, market_cap, rsi_14, and every other numeric on the schema returns an array of {time, value}. The cadence is the signal’s native recording rate by default; pass ?frequency= to resample (only the values listed in the schema page’s “signal history” column work for that signal).

[
  { "time": "2026-04-30T14:32:00Z", "value": 187.42 },
  { "time": "2026-04-30T14:31:00Z", "value": 187.38 },
  { "time": "2026-04-30T14:30:00Z", "value": 187.30 }
]

Continuous flag — windows

above_sma_50, in_uptrend, rsi_oversold, and other continuous flags return an array of {start, end} windows during which the flag was true. The most recent window’s end is null if the flag is currently true.

[
  { "start": "2026-04-22T13:30:00Z", "end": null },
  { "start": "2026-03-15T13:30:00Z", "end": "2026-04-08T19:55:00Z" },
  { "start": "2026-01-08T14:31:00Z", "end": "2026-02-19T18:42:00Z" }
]

Edge-triggered flag — trigger timestamps

breakout, gap_up_3pct, golden_cross_today, and other edge-triggered flags return an array of timestamps — the moment the event happened. The flag stays true for the rest of that session; the docs report the trigger only.

[
  "2026-04-22T13:33:15Z",
  "2026-03-15T14:01:00Z",
  "2026-02-08T15:22:00Z"
]

The response envelope wraps the array in a data field and includes a kind discriminator (numeric, continuous_flag, or edge_flag) so machine consumers can branch on the shape without inspecting the payload.

Endpoint reference

GET/v1/signals/{ticker}/{signal}

Get the history of one signal for one ticker.

Returns the time series for any signal listed on the schema page, for the requested ticker. The response shape depends on the signal type: - **Numeric signals** (price, market_cap, RSI, …) return bars: `[{time, value}, …]` at the signal’s native cadence, or resampled if you pass `frequency`. - **Continuous flags** (above_sma_50, in_uptrend, …) return windows: `[{start, end}, …]`. The last entry’s `end` is `null` if the flag is currently true. - **Edge-triggered flags** (breakout, gap_up_3pct, …) return trigger timestamps only: `["2026-04-22T13:33:15Z", …]`. Newest first. Default page size 100, paginate with `cursor`.

Authentication required
Path parameters
NameInTypeRequiredDescription
tickerpathstringrequired
Ticker symbol.
Example: TSLA
signalpathstringrequired
Any field name from the schema (numeric, string, or flag). Bare names — no `precomputed_flag_` prefix.
Example: market_cap
Query parameters
NameInTypeRequiredDescription
fromquerytimestamp (ISO 8601) or date (YYYY-MM-DD)optional
Start of the range, inclusive. Defaults to far enough back to fill the requested `limit`.
Example: 2026-01-01
toquerytimestamp (ISO 8601) or date (YYYY-MM-DD)optional
End of the range, inclusive. Defaults to now.
Example: 2026-04-30
frequencyquerystringoptional
Resample target. Allowed values depend on the signal — check the schema page. Common: `1m`, `5m`, `15m`, `1h`, `1d`, `1w`. Numerics only; flags ignore this parameter.
Example: 1d
limitqueryintegeroptional
Max rows in this response. Capped at 1000.
Default: 100
cursorquerystringoptional
Pagination cursor returned in `next_cursor` from the previous response. Older rows are paged in this direction.
Responses
StatusDescription
200Time series for the signal. Empty `data` array means no values in the range — not an error.
404Unknown ticker or unknown signal name.

Daily market cap for TSLA over the last four months

Request
curl "https://api.tickerbot.io/v1/signals/TSLA/market_cap?from=2026-01-01&to=2026-04-30&frequency=1d" \
  -H "Authorization: Bearer YOUR_KEY"
Response · 200
{
  "ticker": "TSLA",
  "signal": "market_cap",
  "kind": "numeric",
  "frequency": "1d",
  "from": "2026-01-01",
  "to": "2026-04-30",
  "data": [
    { "time": "2026-04-30T00:00:00Z", "value": 798240000000 },
    { "time": "2026-04-29T00:00:00Z", "value": 791320000000 },
    { "time": "2026-04-28T00:00:00Z", "value": 786910000000 },
    { "time": "2026-04-25T00:00:00Z", "value": 779550000000 }
  ],
  "next_cursor": "eyJ0Ijoi..."
}

Continuous flag — when has TSLA been above its 50-day SMA?

Request
curl "https://api.tickerbot.io/v1/signals/TSLA/above_sma_50?from=2026-01-01&to=2026-04-30" \
  -H "Authorization: Bearer YOUR_KEY"
Response · 200
{
  "ticker": "TSLA",
  "signal": "above_sma_50",
  "kind": "continuous_flag",
  "from": "2026-01-01",
  "to": "2026-04-30",
  "data": [
    { "start": "2026-04-22T13:30:00Z", "end": null },
    { "start": "2026-03-15T13:30:00Z", "end": "2026-04-08T19:55:00Z" },
    { "start": "2026-01-08T14:31:00Z", "end": "2026-02-19T18:42:00Z" }
  ],
  "next_cursor": null
}

Edge-triggered flag — every TSLA breakout this year

Request
curl "https://api.tickerbot.io/v1/signals/TSLA/breakout?from=2026-01-01&to=2026-04-30" \
  -H "Authorization: Bearer YOUR_KEY"
Response · 200
{
  "ticker": "TSLA",
  "signal": "breakout",
  "kind": "edge_flag",
  "from": "2026-01-01",
  "to": "2026-04-30",
  "data": [
    "2026-04-22T13:33:15Z",
    "2026-03-15T14:01:00Z",
    "2026-02-08T15:22:00Z"
  ],
  "next_cursor": null
}

Pagination

Default 100 rows, newest first. Older rows are fetched by passing the cursor returned in the previous response.

next_cursor is opaque — don’t parse it; just send it back. null means there are no more rows in the requested range.

# First page
curl "https://api.tickerbot.io/v1/signals/TSLA/price?from=2026-01-01&limit=100" \
  -H "Authorization: Bearer YOUR_KEY"

# Next page (use the cursor from the previous response)
curl "https://api.tickerbot.io/v1/signals/TSLA/price?from=2026-01-01&limit=100&cursor=eyJ0Ijoi..." \
  -H "Authorization: Bearer YOUR_KEY"