Technical indicators
Calculated series with explicit inputs. Requires instrument_ids or symbols. Until a source publishes indicator values, they are calculated on request from end-of-day bars (interval 1d, which also needs eod.read) or the retained intraday bars of /v1/intraday (5m, and 1h rolled up from it, for exchange listings; these need intraday.read), under the same knowledge cutoff, adjustment and plan history depth as those bars; event_at is the close of each bar, and recursive indicators (ema, macd, rsi, atr) are seeded at the start of a warmup long enough that the seed's weight in each value is below 1e-20 (480 bars for a 20-day ema), so they equal, to the published eight places, values seeded from the earliest bar the key may read. Bars are split-adjusted by default where the listing has split adjustments, and raw otherwise; over a window with no later split the two give the same values. Definition defaults apply when indicator-specific parameters are omitted; unsupported parameter combinations return 422. Include preceding bars for warmup without emitting results before from; insufficient warmup produces null values. An indicator that cannot be calculated from stored bars returns 422 indicator-unavailable, and a request that would read more than 100,000 bars, or 50,000 for one instrument, returns 422 indicator-history-limit. Default order: event_at descending (newest first), id ascending. Instrument selection is required. Until a source publishes indicator values, they are calculated on request from stored bars. Access requires the operation capability on the API key.
/v1/indicators- Required capability
- indicators.read
- Data timing
- End of day; intraday delayed 15+ minutes
- Credits
- 25 credits per symbol.
Parameters
instrument_idsstringoptional · query- Filter by stable instrument IDs. IDs and symbols may not be combined.
symbolsstringoptional · query- Convenience lookup for exchange-listed instruments as MIC:TICKER or a bare ticker, which resolves to the exchange listing that ticker; resolves at symbol_at. The MIC and the ticker are case-insensitive, and two spellings of one listing (AAPL and XNAS:AAPL) count as a repeated value. A bare ticker that names no listing as written is also read in the common vendor spellings: with an exchange suffix (RY.TO, SHEL.L, VOD.LSE, BHP.AX), ^GSPC for INDEX:GSPC, and EURUSD=X or EURUSD for FOREX:EUR-USD. A ticker may contain a space (BAC PRL) but not start or end with one. A request in which no symbol resolves returns 404 symbol-not-resolved; otherwise each symbol that does not resolve, or resolves to a listing with no rows for the request (no-data), is an entry of meta.errors. IDs and symbols may not be combined.
symbol_atstringoptional · query- Resolve symbols as they were assigned at the end of this UTC date (YYYY-MM-DD); defaults to as_of. Only listings the security master holds resolve: it was built in September 2026 and records delistings from then on, so most issuers delisted earlier, such as TWTR or SIVB, resolve at no date. Only valid with symbols.
indicatorstringrequired · query- Code from indicators/definitions.
fromstringoptional · query- First UTC date (YYYY-MM-DD, inclusive) of event_at.
tostringoptional · query- Last UTC date (YYYY-MM-DD, inclusive) of event_at; on or after from.
intervalstringrequired · query- Source bar interval, as /v1/bars serves it: 1d for every listing, 5m and 1h for exchange listings, and 1m only for listings collected at one minute (crypto and currency pairs); otherwise 422 unsupported-interval. Weekly and monthly bars are not served.
1d5m1h1m periodintegeroptional · query- Lookback bars; only valid for indicators whose definition supports period. Without it, the definition's default applies: 20 for sma, ema and bollinger_bands, 14 for rsi, atr and stochastic, 12 for roc (GET /v1/indicators/definitions states each one's limits; rsi and bollinger_bands need at least 2).
fast_periodintegeroptional · query- Optional indicator-specific fast period; macd defaults to 12.
slow_periodintegeroptional · query- Optional slow period, greater than fast_period; macd defaults to 26.
signal_periodintegeroptional · query- Optional signal period; macd defaults to 9 and stochastic to 3.
adjustmentstringoptional · query- Source-bar adjustment. Without it, bars are split-adjusted (meta.default_adjustment) for a listing with validated split adjustments, so a window that spans a split is on one share basis, and raw for a listing without them (crypto and currency pairs, indices, bonds, OTC), for which an explicit split or total_return returns 422 adjustment-unsupported. Each record's adjustment states what its bars had. raw reads bars as traded.
rawsplittotal_return sessionstringoptional · query- Source-bar session; default regular. Continuous markets (crypto and currency pairs) trade in one session a UTC day, so all selects the same bars as regular for them; exchange listings return 422 unsupported-session for anything but regular.
regularall as_ofstringoptional · query- Knowledge cutoff as a UTC date (YYYY-MM-DD): the response reflects what was known by the end of that day. Defaults to now; cannot be in the future. A date from before the dataset's knowledge history returns 422 point-in-time-unavailable naming the earliest one, which GET /v1/datasets lists as earliest_as_of.
orderstringoptional · query- Direction on event_at; ties use ID ascending.
Default:ascdescdesc limitintegeroptional · query- Maximum records per page.Default:
100 cursorstringoptional · query- Opaque cursor, expires after one hour; binds filters, order, resolved as_of, account/key and entitlement. Repeat the original query unchanged.
formatstringoptional · query- Response format. csv returns the data rows with a header row, for spreadsheet functions such as IMPORTDATA; nested fields become dotted columns and lists one JSON array cell, the next page cursor is returned in X-Next-Cursor and meta.errors in X-Meta-Errors. A result without rows is the header row alone, listing the documented fields of a row. Default json, or csv when format is omitted and the Accept header ranks text/csv above JSON; a format the Accept header does not admit returns 406 not-acceptable.
jsoncsv
Response fields
Returns data as an array of records. All example values are illustrative.
idstring- Record identifier, stable across revisions.
instrument_idstring- Opaque stable public identifier; never an internal database key.
event_atstring- event at
indicatorstring- Indicator code.
intervalstring- Source bar interval: 1d, 5m or 1h for exchange listings; 1m only for crypto and currency pairs.
1d5m1h1m sessionstring- Source bar session: regular for exchange listings; all only for crypto and currency pairs.
regularall adjustmentstring- Adjustment of the bars this value was calculated from: the one requested, or without one the listing's default.
rawsplittotal_return parametersobject- parameters
outputstring- Output name: e.g. value, signal, histogram, upper, lower.
valueobject- currency_code is required when unit=currency and null otherwise. Null value means unavailable, not zero.
Response metadata
Responses include meta.timezone. Dataset responses include next_cursor; health and exports have their own metadata. Request tracing uses the X-Request-ID header.
When something goes wrong
An empty data: [] is a successful query with no matching records. Invalid symbols, permissions and malformed parameters produce an RFC 9457 problem with an actionable detail.
Plans
Requires indicators.read. Access, recency and history depth come from the plan definitions the API enforces.
| Plan | Access | Recency | History |
|---|---|---|---|
| Free | Not included | — | — |
| Developer | Not included | — | — |
| Pro | Included | End of day; intraday delayed 15+ minutes | 15 years |
| Commercial | Included | End of day; intraday delayed 15+ minutes | Full history |
| Scale | Included | End of day; intraday delayed 15+ minutes | Full history |
Interval 1d also require eod.read: Pro, Commercial, Scale.
Intraday intervals (1m, 5m, 1h) also require intraday.read: Pro, Commercial, Scale.
History is how far back a plan may request. How far records actually go for a symbol is history_from in dataset coverage. Nothing is real-time. Compare plans