Skip to main content
GET
/
v1
/
history
OHLCV price bars for a symbol and resolution
curl --request GET \
  --url https://atlas-api.skylit.ai/v1/history \
  --header 'Authorization: Bearer <token>'
import requests

url = "https://atlas-api.skylit.ai/v1/history"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

fetch('https://atlas-api.skylit.ai/v1/history', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://atlas-api.skylit.ai/v1/history",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"net/http"
"io"
)

func main() {

url := "https://atlas-api.skylit.ai/v1/history"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("Authorization", "Bearer <token>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.get("https://atlas-api.skylit.ai/v1/history")
.header("Authorization", "Bearer <token>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://atlas-api.skylit.ai/v1/history")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
{
  "s": "ok",
  "t": [
    1748304000,
    1748390400,
    1748476800
  ],
  "o": [
    742.1,
    744.02,
    733.9
  ],
  "h": [
    750.18,
    745.61,
    739.94
  ],
  "l": [
    741.55,
    732.88,
    731.2
  ],
  "c": [
    744.38,
    733.68,
    733.05
  ],
  "v": [
    61230400,
    74910200,
    58120900
  ]
}

Authorizations

Authorization
string
header
required

Skylit API key in the Authorization header (Authorization: Bearer <key>). X-API-Key is also accepted. The same key works across Atlas, Heatseeker, and Flowseeker.

Query Parameters

symbol
string
required

Ticker (e.g. SPY).

Example:

"SPY"

resolution
enum<string>
required

Bar size. Intraday minutes or D/W.

Available options:
1,
2,
3,
5,
15,
30,
60,
240,
480,
D,
W
Example:

"D"

from
integer<int64>
required

Window start, Unix seconds (UTC).

Example:

1748131200

to
integer<int64>
required

Window end, Unix seconds (UTC).

Example:

1748736000

countback
integer

When set, return exactly this many bars ending at to (takes precedence over from, per the UDF spec).

Required range: x >= 1
extended
boolean
default:false

Include extended-hours (pre / post-market) bars. Default is regular trading hours only (09:30–16:00 ET).

Response

Bars, or a no_data marker — both 200 per UDF.

s
enum<string>
required

Status flag.

Available options:
ok
t
integer<int64>[]
required

Bar open times, Unix seconds (UTC), oldest-first.

o
number[]
required

Opens.

h
number[]
required

Highs.

l
number[]
required

Lows.

c
number[]
required

Closes.

v
number[]
required

Volumes.

bv
number[]

Buy (aggressor) volume per bar, equities where available.

sv
number[]

Sell (aggressor) volume per bar.

uv
number[]

Unclassified volume per bar.