← tickerbot.io
View as markdown

Ticker state

GEThttps://api.tickerbot.io/v2/tickers/{ticker}

The full ticker row, every signal on the schema page, for one symbol or a comma list of up to 50. Right now, or with asof, as of any past date.

string[]required

One symbol, or a comma-separated list of up to 50 for a batch response keyed by symbol. Case-insensitive. Equities are bare symbols (AAPL); every other class carries a prefix — rates (R:SOFR), crypto (X:BTCUSD), fx (X:EURUSD). Bare BTC/ETH are US-listed ETFs, not spot crypto. See Tickers.

string

Optional. Target moment as YYYY-MM-DD (that day's close) or an ISO timestamp (that intraday moment; daily-only signals then carry the previous session's close, never that day's) — the same read as it stood then, unlimited depth. Full contract under [As of a past date]().

enumdefault auto

Grain the past state is read at: 1m, 1h, 1d, or auto (default). auto blends: each signal comes from its freshest grain at or before the instant (minute, then hourly, then the last closed daily session), so nothing is refused for grain and no ticker is dropped; _meta.blended and _meta.intervals_present say what contributed. Pin a grain for the fastest response: one grain is read instead of three. On this single-ticker read a pinned grain returns the columns that grain stores (rsi_14, fundamentals and valuation ratios are 1d-only, so they are absent under 1h/1m rather than refused), and a grain with no row for the ticker within its 5-day window is a 404 interval_unavailable. Only valid alongside asof: a live read with interval is a 400.

1mOne minute. The finest stored tier; carries the intraday column subset for the most liquid tickers only — _meta.sources on a blended as-of read reports how many at that instant.
1hOne hour. Stored tier, intraday column subset, full universe.
1dOne day. The full-history, full-column tier — the only grain that carries daily-only columns (SMAs, RSI, fundamentals).
autodefaultOn as-of reads: each signal at its freshest grain at or before the instant (minute, then hourly, then the last closed daily session), nothing refused for grain. Events with join=state blend hourly and daily on rows and use daily on group_by. Pin a grain instead for the fastest, single-grain read.
as_ofstring

Server time this response was assembled (ISO 8601).

tickerstring

The symbol you asked for, normalised. Single form only.

dataobject

The full ticker row — every signal on the schema page. On the list form, an object keyed by symbol, one full row each.

requestedstring[]

List form only — the canonical symbols asked for, de-duplicated, in request order.

countnumber

List form only — how many of requested were found.

not_foundstring[]

List form only — the requested symbols we do not track, in request order. An empty array when every symbol was found.

_metaobject

With asof only: how the row was reconstructed. This read's own key: column_intervals, the grain each column was served at. Shared keys: see the _meta reference.

200
Success — the response shape is documented under Returns above.
400
Invalid ticker format, malformed asof, or interval on a live read — interval selects the grain a PAST state is reconstructed at, so it is only valid alongside asof.
401
Missing or invalid API key.
404
Ticker not tracked, or no historical row at or before the requested date.
  • Numeric signals carry their current value and every boolean its current state, so one call answers both "what is it" and "what is it doing".
  • For the same row as of a past date, add ?asof= — see Ticker state (as-of). It means the same thing on the list form.
  • The list form is the batch read: requested echoes the canonical symbols, count is how many were found, data holds one full row per found symbol, and not_found lists the rest in request order. A symbol we do not track is simply absent from data — it never fails the request. Symbols are de-duplicated and canonicalised (aapl → AAPL).
  • For the catalog — which symbols exist and what they are — use GET /v2/tickers. It is identity-only and never returns state.
  • The row's branding_icon_url and branding_logo_url are image endpoints on this API (GET /v2/tickers/{ticker}/icon, /logo): request them with the same Authorization: Bearer header and you get the image bytes with their Content-Type. Null when the issuer has no image on file.