Supported indicators
The table below matches /v1/indicators/definitions as of October 3, 2026. Warmup is the number of preceding bars needed before the first value at default parameters.
| Code | Indicator | Parameters (default) | Outputs | Warmup |
|---|---|---|---|---|
sma | Simple moving average of closes | period (20) | value | 19 |
ema | Exponential moving average, smoothing 2 / (period + 1) | period (20) | value | 19 |
rsi | Wilder relative strength index, 0 to 100 | period (14) | value | 14 |
macd | Fast EMA minus slow EMA, with signal line | fast_period (12), slow_period (26), signal_period (9) | value, signal, histogram | 33 |
bollinger_bands | SMA ± two population standard deviations | period (20) | value, upper, lower | 19 |
atr | Wilder-smoothed average true range | period (14) | value | 14 |
roc | Rate of change: 100 × (close / close n bars ago − 1) | period (12) | value | 12 |
stochastic | %K over the high-low range, %D as its SMA | period (14), signal_period (3) | value, signal | 15 |
Multi-output indicators return one row per output per bar, named in output, so a MACD request yields value, signal and histogram rows for each date. Values arrive as a measure object with value, unit and currency_code; a null value means unavailable, not zero.
How the calculation works
Indicators are calculated on request from the same bars the price endpoints serve: end-of-day bars for interval=1d, and the retained 5-minute bars (or hourly bars rolled up from them) for 5m and 1h. event_at is the close of each source bar, so a daily value for a U.S. stock is stamped 20:00 UTC in summer.
Results start at from, but preceding bars are read for warmup. If there are not enough of them, early values are null rather than computed on a short window. Recursive indicators (EMA, MACD, RSI and ATR) warm up long enough that their starting point no longer shows in the published eight decimals (480 bars for a 20-day EMA), so each value matches one seeded from the earliest bar your key may read. A short history, or a plan's shorter history depth, still starts from the earliest bar available, so values close to it can differ slightly from a charting tool that seeds from a different start.
Adjusted inputs
Source bars are split-adjusted by default, so a lookback that crosses a 4-for-1 split does not see a 75% drop that drags every average with it. Crypto and currency pairs, indices, bonds and OTC listings, which have no split adjustments, are read raw, and each value's adjustment says which its bars had. Pass adjustment=raw for prices as traded; total_return also accounts for dividends. See stock splits for how the factors work.
curl 'https://api.ohlc.io/v1/indicators?symbols=ARCX:SPY&indicator=macd&interval=1h&from=2026-09-29&to=2026-10-02&adjustment=split' \
-H "Authorization: Bearer $OHLC_API_KEY"Limits
- Intervals:
1d,5mand1h. Weekly and monthly bars are not published yet, and1mis not collected for stocks - Intraday indicators reach back only as far as intraday bars are kept, about 30 days
periodis accepted only by indicators that define it; unsupported combinations return 422- Exchange listings use the regular session only
- Each request costs 25 credits per symbol, up to 100 symbols; the definitions endpoint costs 5 credits
Common uses
- Adding moving averages, Bollinger Bands or RSI panes to a chart without maintaining your own math
- Generating signals for a backtest, such as a 50-day and 200-day SMA crossover
- Sizing positions or stops from ATR
- Answering indicator questions in Claude or another assistant through the MCP server
Plans
Technical indicators need the indicators.read capability, included on Pro, Commercial and Scale. Daily indicators also read end-of-day bars, and intraday ones read intraday bars; both are part of Pro. History depth follows the plan: 15 years on Pro and full history on Commercial and Scale.
14-day RSI for Apple
curl 'https://api.ohlc.io/v1/indicators?symbols=XNAS:AAPL&indicator=rsi&interval=1d&period=14&from=2026-10-01&to=2026-10-02' \
-H "Authorization: Bearer $OHLC_API_KEY"{
"data": [
{
"id": "record_d362aada5049380e9fecd352255d621ea1fe008ddfa5fc14cc6f2ed26ffa7b2d",
"instrument_id": "01M35H2KE2ZJHXFY5C3E7FPC66",
"event_at": "2026-10-02T20:00:00.000000Z",
"indicator": "rsi",
"interval": "1d",
"session": "regular",
"adjustment": "split",
"parameters": { "period": 14, "fast_period": null, "slow_period": null, "signal_period": null },
"output": "value",
"value": { "value": "54.71995818", "unit": "index_points", "currency_code": null }
}
],
"meta": {
"timezone": "UTC",
"as_of": "2026-10-03T15:04:55Z",
"next_cursor": null,
"coverage": { "status": "partial", "reason": "Calculated on request from stored end-of-day and retained intraday bars; history follows the eod and intraday datasets." }
}
}Prices delayed 15 minutes · Illustrative sample data