curl --request GET \
--url https://astreus.ai/api/v1/companies/{id}/prices \
--header 'X-API-KEY: <api-key>'import requests
url = "https://astreus.ai/api/v1/companies/{id}/prices"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://astreus.ai/api/v1/companies/{id}/prices', 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://astreus.ai/api/v1/companies/{id}/prices",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$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://astreus.ai/api/v1/companies/{id}/prices"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://astreus.ai/api/v1/companies/{id}/prices")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://astreus.ai/api/v1/companies/{id}/prices")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"symbol": "NVDA",
"bars": [
{
"t": 1790812800000,
"o": 229.979996,
"h": 232.289993,
"l": 228.160004,
"c": 230.860001,
"v": 98591400,
"adj": 230.860001
},
{
"t": 1792972800000,
"o": 213.110001,
"h": 217.75,
"l": 212.610001,
"c": 216,
"v": 90829300,
"adj": 216
}
],
"displayFrom": 1790812800000,
"currency": "USD",
"range": "1M",
"rangeFrom": "2026-10-01",
"lookbackBars": 0,
"coverageFrom": "1999-01-22"
}{
"error": "<string>",
"code": "unknown_parameter",
"param": "<string>",
"allowed": [
"<string>"
]
}{
"error": "<string>",
"code": "unknown_parameter",
"param": "<string>",
"allowed": [
"<string>"
]
}{
"error": "<string>",
"code": "unknown_parameter",
"param": "<string>",
"allowed": [
"<string>"
]
}{
"error": "<string>",
"code": "unknown_parameter",
"param": "<string>",
"allowed": [
"<string>"
]
}Stock prices
Daily OHLCV bars of the company’s listed security (the share class of a ticker), in its listing currency. Bars run from the first trading day of range to the latest; lookback adds earlier bars for moving averages. coverageFrom is the first day held; note says when the history starts after the range’s first day or no bar falls inside it. Bar times t are epoch ms at UTC midnight. An unknown company is a 404.
curl --request GET \
--url https://astreus.ai/api/v1/companies/{id}/prices \
--header 'X-API-KEY: <api-key>'import requests
url = "https://astreus.ai/api/v1/companies/{id}/prices"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://astreus.ai/api/v1/companies/{id}/prices', 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://astreus.ai/api/v1/companies/{id}/prices",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$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://astreus.ai/api/v1/companies/{id}/prices"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://astreus.ai/api/v1/companies/{id}/prices")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://astreus.ai/api/v1/companies/{id}/prices")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"symbol": "NVDA",
"bars": [
{
"t": 1790812800000,
"o": 229.979996,
"h": 232.289993,
"l": 228.160004,
"c": 230.860001,
"v": 98591400,
"adj": 230.860001
},
{
"t": 1792972800000,
"o": 213.110001,
"h": 217.75,
"l": 212.610001,
"c": 216,
"v": 90829300,
"adj": 216
}
],
"displayFrom": 1790812800000,
"currency": "USD",
"range": "1M",
"rangeFrom": "2026-10-01",
"lookbackBars": 0,
"coverageFrom": "1999-01-22"
}{
"error": "<string>",
"code": "unknown_parameter",
"param": "<string>",
"allowed": [
"<string>"
]
}{
"error": "<string>",
"code": "unknown_parameter",
"param": "<string>",
"allowed": [
"<string>"
]
}{
"error": "<string>",
"code": "unknown_parameter",
"param": "<string>",
"allowed": [
"<string>"
]
}{
"error": "<string>",
"code": "unknown_parameter",
"param": "<string>",
"allowed": [
"<string>"
]
}Authorizations
Astreus API key (pk_live_...), created on the Developers page in the terminal. Also accepted as Authorization: Bearer pk_live_....
Path Parameters
Ticker symbol (e.g. NVDA), numeric SEC CIK (zero-padding optional), or the platform key of a non-SEC issuer (e.g. XSAU000001 — the cik field of the company payload). A bare ticker always resolves to the SEC registrant.
Query Parameters
Window of bars served: from the range's first day (1M = 31 days back, YTD = 1 January) to the latest bar; ALL is the whole history. rangeFrom echoes the first day; displayFrom is the epoch ms of the first bar inside the range.
1M, 3M, 6M, YTD, 1Y, 2Y, 5Y, ALL Bars to add before the range's first day, e.g. 200 to draw a 200-day moving average from the first bar. Default 0: only bars inside the range. lookbackBars says how many were added.
0 <= x <= 1000