curl --request GET \
--url https://astreus.ai/api/v1/transcripts/search/summary \
--header 'X-API-KEY: <api-key>'import requests
url = "https://astreus.ai/api/v1/transcripts/search/summary"
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/summary', 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/summary",
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/summary"
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/summary")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://astreus.ai/api/v1/transcripts/search/summary")
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",
"totalMatches": 20000,
"totalDocuments": 6073,
"totalCompanies": 1195,
"firstDate": "2023-04-25",
"lastDate": "2026-10-30",
"quarters": [
{
"quarter": "2023 Q2",
"start": "2023-04-01",
"matches": 555,
"documents": 241
},
{
"quarter": "2023 Q3",
"start": "2023-07-01",
"matches": 696,
"documents": 294
}
],
"speakers": [
{
"cik": "0000002488",
"ticker": "AMD",
"name": "Advanced Micro Devices, Inc.",
"matches": 370,
"documents": 31,
"lastDate": "2026-09-11"
},
{
"cik": "XNSE000077",
"ticker": "TECHNOE",
"name": "Techno Electric & Engineering Company Limited",
"matches": 315,
"documents": 14,
"lastDate": "2026-08-12"
}
],
"sampled": true,
"companyQuarters": [],
"countries": []
}{
"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 summary
The same search, summarized: matches per calendar quarter, the companies doing the talking, and companyQuarters counts of matching calls and passages for the leading companies. countries carries issuer country/region counts across all matches. Sampled summaries omit companyQuarters and countries detail.
curl --request GET \
--url https://astreus.ai/api/v1/transcripts/search/summary \
--header 'X-API-KEY: <api-key>'import requests
url = "https://astreus.ai/api/v1/transcripts/search/summary"
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/summary', 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/summary",
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/summary"
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/summary")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://astreus.ai/api/v1/transcripts/search/summary")
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",
"totalMatches": 20000,
"totalDocuments": 6073,
"totalCompanies": 1195,
"firstDate": "2023-04-25",
"lastDate": "2026-10-30",
"quarters": [
{
"quarter": "2023 Q2",
"start": "2023-04-01",
"matches": 555,
"documents": 241
},
{
"quarter": "2023 Q3",
"start": "2023-07-01",
"matches": 696,
"documents": 294
}
],
"speakers": [
{
"cik": "0000002488",
"ticker": "AMD",
"name": "Advanced Micro Devices, Inc.",
"matches": 370,
"documents": 31,
"lastDate": "2026-09-11"
},
{
"cik": "XNSE000077",
"ticker": "TECHNOE",
"name": "Techno Electric & Engineering Company Limited",
"matches": 315,
"documents": 14,
"lastDate": "2026-08-12"
}
],
"sampled": true,
"companyQuarters": [],
"countries": []
}{
"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.
Websearch query; combine with mentioned or theme to narrow the same passage.
Company talked about (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.
1 = include the mentioned company's own calls.
Response
OK
Inferred from captured responses: every field shown was returned by a real call; a field may be absent or null on other calls.