curl --request GET \
--url https://astreus.ai/api/v1/companies/{id}/presentation-guidance \
--header 'X-API-KEY: <api-key>'import requests
url = "https://astreus.ai/api/v1/companies/{id}/presentation-guidance"
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}/presentation-guidance', 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}/presentation-guidance",
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}/presentation-guidance"
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}/presentation-guidance")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://astreus.ai/api/v1/companies/{id}/presentation-guidance")
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{
"cik": "XDFM000004",
"guidance": [
{
"id": 4876,
"guidance_key": "cost_to_income",
"label": "Cost to income ratio",
"guidance_kind": "target",
"axis": null,
"member_label": null,
"value": 0.28,
"value_qualifier": null,
"unit_kind": "percent",
"unit_expression": "%",
"currency": null,
"disclosed_period_end": "2026-09-30",
"disclosed_label": "9M-26",
"target_period_label": "FY-26",
"target_period_end": "2026-12-31",
"doc_ref": "DFM-DIB-20261020-DECK",
"page": 26,
"printed_expression": "28.0%",
"raw_label": "Cost-to-Income Ratio - FY 2026 Guidance",
"note": "Full-year 2026 guidance as shown in the 9M-26 deck (same as in the H1-26 deck).",
"published_date": "2026-10-20",
"headline": "Q3 2026 Presentation"
},
{
"id": 4873,
"guidance_key": "digital_payment_merchants",
"label": "Merchants onboarded to DIB digital payments",
"guidance_kind": "target",
"axis": null,
"member_label": null,
"value": 2800,
"value_qualifier": null,
"unit_kind": "count",
"unit_expression": "count",
"currency": null,
"disclosed_period_end": "2026-09-30",
"disclosed_label": "9M-26",
"target_period_label": "FY-26",
"target_period_end": "2026-12-31",
"doc_ref": "DFM-DIB-20261020-DECK",
"page": 23,
"printed_expression": "2,800",
"raw_label": "on-track to achieve the year-end target of 2,800 merchants",
"note": "Year-end 2026 target.",
"published_date": "2026-10-20",
"headline": "Q3 2026 Presentation"
}
],
"total": 458,
"offset": 0,
"nextOffset": 2,
"limit": 2,
"hasMore": true,
"sort": "newest",
"keys": [
{
"key": "cash_coverage_ratio",
"label": "Cash coverage ratio",
"count": 34
},
{
"key": "cost_to_income",
"label": "Cost to income ratio",
"count": 57
}
]
}{
"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>"
]
}Presentation guidance
Guidance the company printed in its investor presentations, every disclosure kept (the same target said in several decks is several rows), each with its deck (doc_ref) and page. Newest deck first by default; paged (total, limit, offset, hasMore, nextOffset); keys lists every guidance key the company has with its label and row count.
curl --request GET \
--url https://astreus.ai/api/v1/companies/{id}/presentation-guidance \
--header 'X-API-KEY: <api-key>'import requests
url = "https://astreus.ai/api/v1/companies/{id}/presentation-guidance"
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}/presentation-guidance', 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}/presentation-guidance",
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}/presentation-guidance"
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}/presentation-guidance")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://astreus.ai/api/v1/companies/{id}/presentation-guidance")
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{
"cik": "XDFM000004",
"guidance": [
{
"id": 4876,
"guidance_key": "cost_to_income",
"label": "Cost to income ratio",
"guidance_kind": "target",
"axis": null,
"member_label": null,
"value": 0.28,
"value_qualifier": null,
"unit_kind": "percent",
"unit_expression": "%",
"currency": null,
"disclosed_period_end": "2026-09-30",
"disclosed_label": "9M-26",
"target_period_label": "FY-26",
"target_period_end": "2026-12-31",
"doc_ref": "DFM-DIB-20261020-DECK",
"page": 26,
"printed_expression": "28.0%",
"raw_label": "Cost-to-Income Ratio - FY 2026 Guidance",
"note": "Full-year 2026 guidance as shown in the 9M-26 deck (same as in the H1-26 deck).",
"published_date": "2026-10-20",
"headline": "Q3 2026 Presentation"
},
{
"id": 4873,
"guidance_key": "digital_payment_merchants",
"label": "Merchants onboarded to DIB digital payments",
"guidance_kind": "target",
"axis": null,
"member_label": null,
"value": 2800,
"value_qualifier": null,
"unit_kind": "count",
"unit_expression": "count",
"currency": null,
"disclosed_period_end": "2026-09-30",
"disclosed_label": "9M-26",
"target_period_label": "FY-26",
"target_period_end": "2026-12-31",
"doc_ref": "DFM-DIB-20261020-DECK",
"page": 23,
"printed_expression": "2,800",
"raw_label": "on-track to achieve the year-end target of 2,800 merchants",
"note": "Year-end 2026 target.",
"published_date": "2026-10-20",
"headline": "Q3 2026 Presentation"
}
],
"total": 458,
"offset": 0,
"nextOffset": 2,
"limit": 2,
"hasMore": true,
"sort": "newest",
"keys": [
{
"key": "cash_coverage_ratio",
"label": "Cash coverage ratio",
"count": 34
},
{
"key": "cost_to_income",
"label": "Cost to income ratio",
"count": 57
}
]
}{
"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
Guidance keys, comma-separated.
Guidance kinds, comma-separated.
First published date, YYYY-MM-DD.
Last published date, YYYY-MM-DD.
Rows per page, 1–500, default 100.
1 <= x <= 500Rows to skip: the previous reply's nextOffset.
x >= 0newest puts the latest deck first (the default; undated last), target orders by the period targeted (latest first), key groups by metric (the Guidance table's order).
newest, target, key Response
OK