Skip to content

GET /v1/time_series

GET /v1/time_series

Returns historical OHLCV bars for a single symbol. Supports intraday and daily-or-coarser intervals. Adjusted for splits by default.

Request

GET /v1/time_series?symbol=AAPL&interval=1day&outputsize=30 HTTP/1.1
Host: api.oneapi.finance
Authorization: Bearer oa_live_<your_key>

Query parameters

ParamTypeRequiredNotes
symbolstringyesSingle symbol. Batched mode is not supported here.
intervalenumyesOne of 1min, 5min, 15min, 30min, 45min, 1h, 2h, 4h, 1day, 1week, 1month.
outputsizeintnoDefault 30 for intraday, 365 for daily and coarser. Cap 5,000.
start_dateISOnoInclusive lower bound.
end_dateISOnoInclusive upper bound. Default now.
exchangestringnoDisambiguate cross-listed tickers.
adjustenumnosplit (default) | none | total_return.
formatenumnojson (default) | csv.

Intraday intervals support up to 60 days of history. Daily and coarser intervals support 20+ years for major tickers. See pagination for the windowing convention.

Response

{
"symbol": "AAPL",
"interval": "1day",
"currency": "USD",
"exchange": "NASDAQ",
"values": [
{
"datetime": "2026-05-02T00:00:00Z",
"open": 174.0,
"high": 176.1,
"low": 173.8,
"close": 175.43,
"volume": 52000000
},
{
"datetime": "2026-05-01T00:00:00Z",
"open": 173.2,
"high": 174.7,
"low": 172.9,
"close": 174.5,
"volume": 48000000
}
]
}

Response shape

FieldTypeNotes
symbolstringEcho of the requested symbol, normalized.
intervalstringEcho of the requested interval.
currencystring | nullISO 4217, possibly a sub-unit.
exchangestring | nullCanonical exchange code.
valuesarrayBars in descending chronological order.
values[].datetimestringISO 8601 UTC. For daily and coarser, T00:00:00Z. For intraday, the bar’s start time.
values[].opennumber | null
values[].highnumber | null
values[].lownumber | null
values[].closenumber | nullAdjusted per the adjust parameter.
values[].volumeinteger | nullAdjusted inversely to splits when adjust=split.

The wire-format model is oneapi_core.responses.time_series.TimeSeriesResponse.

CSV format

Pass format=csv to receive a CSV body suitable for pandas.read_csv. The header row is fixed:

datetime,open,high,low,close,volume
2026-05-02T00:00:00Z,174.0,176.1,173.8,175.43,52000000
2026-05-01T00:00:00Z,173.2,174.7,172.9,174.5,48000000

Examples

Terminal window
# 30 days of daily bars
curl -H "Authorization: Bearer oa_live_..." \
"https://api.oneapi.finance/v1/time_series?symbol=AAPL&interval=1day&outputsize=30"
# 5-minute bars for last week
curl -H "Authorization: Bearer oa_live_..." \
"https://api.oneapi.finance/v1/time_series?symbol=AAPL&interval=5min&start_date=2026-04-27&end_date=2026-05-04"
# Total-return adjusted
curl -H "Authorization: Bearer oa_live_..." \
"https://api.oneapi.finance/v1/time_series?symbol=KO&interval=1day&outputsize=2520&adjust=total_return"
# CSV
curl -H "Authorization: Bearer oa_live_..." \
"https://api.oneapi.finance/v1/time_series?symbol=AAPL&interval=1day&outputsize=30&format=csv"

Errors

StatuscodeWhen
400bad_requestUnknown interval, malformed date, outputsize over 5,000.
401unauthenticatedMissing or invalid API key.
404not_foundSymbol unknown, or no bars in the requested window.
429rate_limitSee rate limits.
502upstream_failureAll sources failed.

See also