curl --request GET \
--url https://astreus.ai/api/v1/transcripts/search \
--header 'X-API-KEY: <api-key>'import requests
url = "https://astreus.ai/api/v1/transcripts/search"
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/transcripts/search', 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/transcripts/search",
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/transcripts/search"
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/transcripts/search")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://astreus.ai/api/v1/transcripts/search")
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{
"mode": "keyword",
"hits": [
{
"segmentId": 2406609,
"transcriptId": "262199",
"date": "2026-10-30",
"company": {
"cik": "0001551152",
"ticker": "ABBV",
"name": "AbbVie Inc."
},
"eventLabel": "Q3 2026 earnings call",
"isEarningsCall": true,
"speaker": {
"name": "Roopal Thakkar",
"role": "executive"
},
"section": "prepared",
"snippet": "…SKYRIZI plus our novel anti-alpha4beta7 antibody ABBV 382 in Crohn's disease. The combination resulted in a near doubling of endoscopic remission at week 24 compared to either monotherapy. \nAdditiona…",
"highlights": [
{
"start": 225,
"end": 229
}
],
"charStart": 13807,
"charEnd": 13811
},
{
"segmentId": 2406569,
"transcriptId": "262104",
"date": "2026-10-29",
"company": {
"cik": "DSMD000022",
"ticker": "MEZA",
"name": "MEEZA QSTP-LLC (Public)"
},
"eventLabel": "Q3 2026 earnings call",
"isEarningsCall": true,
"speaker": {
"name": "James Corby",
"role": "executive"
},
"section": "qa",
"snippet": "Yes, so the fit-out projects are approximately 10% margin versus the typical Data Center margin of closer to 40%.",
"highlights": [
{
"start": 77,
"end": 81
},
{
"start": 82,
"end": 88
}
],
"charStart": 14163,
"charEnd": 14167
}
],
"total": 10000,
"totalCapped": true,
"nextCursor": "2026-10-29_2406569"
}{
"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>"
]
}Transcript search
Full-text search over every spoken word in the transcript corpus (websearch syntax: quoted phrases, OR, -exclusion), or with mentioned the passages where other companies name that company. Each passage carries the speaker and role, the speaking company, the call and date, a highlighted snippet, and charStart/charEnd — the exact span in the transcript text.
curl --request GET \
--url https://astreus.ai/api/v1/transcripts/search \
--header 'X-API-KEY: <api-key>'import requests
url = "https://astreus.ai/api/v1/transcripts/search"
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/transcripts/search', 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/transcripts/search",
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/transcripts/search"
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/transcripts/search")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://astreus.ai/api/v1/transcripts/search")
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{
"mode": "keyword",
"hits": [
{
"segmentId": 2406609,
"transcriptId": "262199",
"date": "2026-10-30",
"company": {
"cik": "0001551152",
"ticker": "ABBV",
"name": "AbbVie Inc."
},
"eventLabel": "Q3 2026 earnings call",
"isEarningsCall": true,
"speaker": {
"name": "Roopal Thakkar",
"role": "executive"
},
"section": "prepared",
"snippet": "…SKYRIZI plus our novel anti-alpha4beta7 antibody ABBV 382 in Crohn's disease. The combination resulted in a near doubling of endoscopic remission at week 24 compared to either monotherapy. \nAdditiona…",
"highlights": [
{
"start": 225,
"end": 229
}
],
"charStart": 13807,
"charEnd": 13811
},
{
"segmentId": 2406569,
"transcriptId": "262104",
"date": "2026-10-29",
"company": {
"cik": "DSMD000022",
"ticker": "MEZA",
"name": "MEEZA QSTP-LLC (Public)"
},
"eventLabel": "Q3 2026 earnings call",
"isEarningsCall": true,
"speaker": {
"name": "James Corby",
"role": "executive"
},
"section": "qa",
"snippet": "Yes, so the fit-out projects are approximately 10% margin versus the typical Data Center margin of closer to 40%.",
"highlights": [
{
"start": 77,
"end": 81
},
{
"start": 82,
"end": 88
}
],
"charStart": 14163,
"charEnd": 14167
}
],
"total": 10000,
"totalCapped": true,
"nextCursor": "2026-10-29_2406569"
}{
"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_....
Query Parameters
JSON array of 1–12 ordered columns: id, label, terms, exclude, match (any/all). Each phrase is literal text; exclusions apply across all alternatives. Definitions must fit a 6,000-character URL-encoded budget.
Apply a column from topicColumns (or the default set) to source passages.
Second websearch expression; combined with q in the same speaker passage.
Combine q and q2 using all (AND) or any (OR).
all, any Inspectable lexical research topic.
demand, pricing, margins, investment, ai, credit, funding, regulation, returns, outlook 1 = browse source turns without a keyword predicate.
Issuer region from the country catalog.
Issuer subregion from the country catalog.
Exact city in the company's currently stored business address; missing addresses remain unknown.
Inside or outside the intersection of selected country/region/subregion/city.
inside, outside 1 = include unknown geography in outside searches; excluded by default.
Explicit lexical theme; AND with q in the same passage.
purchase-delays, pricing-pressure, pricing-power, ai-investment, inventory, capacity, tariffs, guidance Speaker name contains; max 120 characters.
1 = include bounded surrounding turns or indexed Q&A exchange; truncation flagged.
Websearch query; combine with mentioned or theme to narrow the same passage.
Company talked about — ticker, CIK or platform key (mentions mode).
Only calls held by this company.
Source issuer country from transcript metadata: uppercase ISO alpha-2 code, or unknown for missing geography.
Comma-separated company basket, at most 20 identifiers; intersects company if supplied.
Speaker role.
executive, analyst, operator Part of the call.
prepared, qa Calls on or after, YYYY-MM-DD.
Calls on or before, YYYY-MM-DD.
newest (default) or relevance; relevance applies only with q, q2, theme, topic or column, otherwise newest is used.
newest, relevance 1–50, default 20.
1 <= x <= 50nextCursor from the previous page.
1 = include the mentioned company's own calls.