OHLCV price bars for a symbol and resolution
https://atlas-api.skylit.ai/v1/historyTradingView UDF history bars for one symbol at one resolution,
covering [from, to) (Unix seconds; to is exclusive). Returns column arrays (t, o,
h, l, c, v) of equal length, oldest-first. When the window
holds no bars the response is a 200 with { "s": "no_data" } (plus
nextTime pointing at the nearest earlier bar when one exists), per the
UDF contract. Equity bars also carry sided-volume columns (bv/sv/uv
= buy / sell / unclassified) where available.
Request-window limit
One call may span at most a fixed number of trading days, set by the
bar tier the resolution reads from — not by the resolution itself. 240
and 60 share the 1-hour tier and therefore share its allowance.
| Tier | Resolutions | Max trading days / request |
|---|---|---|
| 1-min | 1 2 3 5 15 30 | 90 |
| 1-hour | 60 240 480 | 720 |
| 1-day | D W | 2,600 |
A window wider than the cap is rejected with 400, carrying the two
numbers a client needs to react (requested_days, max_days). It is
never silently shortened — a short { "s": "ok" } always means the data
ends there, never that your range was clipped. Page through anything
wider in windows of max_days or fewer.
A rejected 400 is refunded (failed calls are free). The caps are
fixed and published here, so check your range before sending it rather
than discovering the limit by retrying. /v1/config is free if you
would rather read the feed's capabilities first.
Cache-Control tracks data freshness: today max-age=2, the prior
session max-age=60, older complete days immutable. A 400 is
no-store.
Authorization
Authorization: Bearer <your API key>Required. A missing header returns 401; an invalid, revoked or expired key returns 403.
Query parameters
symbolstringrequiredTicker (e.g.
SPY).resolutionstringrequiredBar size. Intraday minutes or
D/W.1235153060240480DWfromintegerint64requiredWindow start, Unix seconds (UTC).
tointegerint64requiredWindow end, Unix seconds (UTC).
countbackintegermin 1When set, return exactly this many bars ending at
to(takes precedence overfrom, per the UDF spec).extendedbooleandefaultfalseInclude extended-hours (pre / post-market) bars. Default is regular trading hours only (09:30–16:00 ET).
Responses
- 200
Bars, or a
no_datamarker — both200per UDF. - 400
The requested range is wider than the resolution's tier allows. Refunded, like every failed call.
- 401
Missing or invalid API key.
- 402
Credit balance is below the request cost.
- 403
Account is not API-eligible (suspended).
- 429
Per-minute rate limit exceeded.
- 503
The credit ledger or datafeed is temporarily unavailable.
Response fields
sstringrequiredStatus flag.
oktinteger[]requiredBar open times, Unix seconds (UTC), oldest-first.
onumber[]requiredOpens.
hnumber[]requiredHighs.
lnumber[]requiredLows.
cnumber[]requiredCloses.
vnumber[]requiredVolumes.
bvnumber[]Buy (aggressor) volume per bar, equities where available.
svnumber[]Sell (aggressor) volume per bar.
uvnumber[]Unclassified volume per bar.
Last updated