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.

GET/v1/indicators
Required capability
indicators.read
Data timing
End of day; intraday delayed 15+ minutes
Credits
25 credits per symbol.
Live endpoint. Request examples query live data with your API key; response examples are illustrative. History and coverage vary by dataset and plan; see dataset coverage.

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.

ascdesc

Default: desc
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.

Read the shared data conventions

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.

Error codes & retry guidance

Plans

Requires indicators.read. Access, recency and history depth come from the plan definitions the API enforces.

PlanAccessRecencyHistory
FreeNot included——
DeveloperNot included——
ProIncludedEnd of day; intraday delayed 15+ minutes15 years
CommercialIncludedEnd of day; intraday delayed 15+ minutesFull history
ScaleIncludedEnd of day; intraday delayed 15+ minutesFull 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