curl --request GET \
--url https://sacra.com/api/v1/metrics/ \
--header 'Authorization: <api-key>'import requests
url = "https://sacra.com/api/v1/metrics/"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://sacra.com/api/v1/metrics/', 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://sacra.com/api/v1/metrics/",
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: <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://sacra.com/api/v1/metrics/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<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://sacra.com/api/v1/metrics/")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sacra.com/api/v1/metrics/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"metrics": [
{
"metric_id": "604e0090-a7ac-470c-ae63-376e0f5055f1",
"metric_definition": {
"base": "trailing_revenue",
"view": "value",
"base_period": "year",
"base_forward": null,
"growth_period": null,
"growth_period_length": null
},
"measurement": {
"scenario": "historical",
"end_date": "2025-12-31",
"custom_start_date": null,
"comparison_window_end_date": null,
"comparison_window_custom_start_date": null,
"type": "equals",
"unit_kind": "currency",
"currency_code": "USD",
"amount": 2200000000,
"low": null,
"high": null,
"scope_name": null,
"scope_type": null,
"status": "Active"
},
"updated_at": "2026-02-26T20:27:13.693661+00:00",
"created_at": "2026-02-25T20:17:24.752169+00:00",
"company": {
"id": "239",
"slug": "kraken",
"domain": "kraken.com"
},
"citations": {
"summary": {
"count": 1,
"latest_updated_at": "2026-02-25T20:17:40.923084+00:00"
},
"sources": [
{
"link": "https://blog.kraken.com/news/kraken-2025-financials",
"headline": "Kraken 2025 Financials",
"quote": "Adjusted revenue reached $2.2 billion, representing 33% year-over-year growth.",
"publication": "blog.kraken.com",
"type": "article"
}
]
}
},
{
"metric_id": "83a78a15-35a9-42b9-8bd5-084717e1597b",
"metric_definition": {
"base": "trailing_revenue",
"view": "growth",
"base_period": "year",
"base_forward": null,
"growth_period": "year",
"growth_period_length": 1
},
"measurement": {
"scenario": "historical",
"end_date": "2025-12-31",
"custom_start_date": null,
"comparison_window_end_date": "2024-12-31",
"comparison_window_custom_start_date": null,
"type": "equals",
"unit_kind": "percent",
"currency_code": null,
"amount": 33,
"low": null,
"high": null,
"scope_name": null,
"scope_type": null,
"status": "Active"
},
"updated_at": "2026-02-26T20:27:13.690811+00:00",
"created_at": "2026-02-25T20:17:24.761715+00:00",
"company": {
"id": "239",
"slug": "kraken",
"domain": "kraken.com"
},
"citations": {
"summary": {
"count": 1,
"latest_updated_at": "2026-02-25T20:17:40.946868+00:00"
},
"sources": [
{
"link": "https://blog.kraken.com/news/kraken-2025-financials",
"headline": "Kraken 2025 Financials",
"quote": "Adjusted revenue reached $2.2 billion, representing 33% year-over-year growth.",
"publication": "blog.kraken.com",
"type": "article"
}
]
}
}
],
"pagination": {
"page_size": 30,
"current_page_items": 2,
"total_items": 13,
"after_cursor": "Start",
"before_cursor": null,
"next_link": null,
"prev_link": null
},
"meta": {
"query_type": "single-company",
"companies_count": 1,
"companies": [
{
"id": "239",
"slug": "kraken",
"domain": "kraken.com"
}
]
}
}Get metric observations - Metrics API
Returns metric observations with citations for one or more companies, with cursor-based pagination.
Company filters: Provide single-company filters (company_id, company_domain) or multi-company filters (company_ids, company_domains), but not both. GET requests support up to 200 companies.
Global queries (no company filter) require at least one date range (measurement_end_date, comparison_window_end_date, created_at, or updated_at) spanning 14 days or less.
curl --request GET \
--url https://sacra.com/api/v1/metrics/ \
--header 'Authorization: <api-key>'import requests
url = "https://sacra.com/api/v1/metrics/"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://sacra.com/api/v1/metrics/', 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://sacra.com/api/v1/metrics/",
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: <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://sacra.com/api/v1/metrics/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<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://sacra.com/api/v1/metrics/")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sacra.com/api/v1/metrics/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"metrics": [
{
"metric_id": "604e0090-a7ac-470c-ae63-376e0f5055f1",
"metric_definition": {
"base": "trailing_revenue",
"view": "value",
"base_period": "year",
"base_forward": null,
"growth_period": null,
"growth_period_length": null
},
"measurement": {
"scenario": "historical",
"end_date": "2025-12-31",
"custom_start_date": null,
"comparison_window_end_date": null,
"comparison_window_custom_start_date": null,
"type": "equals",
"unit_kind": "currency",
"currency_code": "USD",
"amount": 2200000000,
"low": null,
"high": null,
"scope_name": null,
"scope_type": null,
"status": "Active"
},
"updated_at": "2026-02-26T20:27:13.693661+00:00",
"created_at": "2026-02-25T20:17:24.752169+00:00",
"company": {
"id": "239",
"slug": "kraken",
"domain": "kraken.com"
},
"citations": {
"summary": {
"count": 1,
"latest_updated_at": "2026-02-25T20:17:40.923084+00:00"
},
"sources": [
{
"link": "https://blog.kraken.com/news/kraken-2025-financials",
"headline": "Kraken 2025 Financials",
"quote": "Adjusted revenue reached $2.2 billion, representing 33% year-over-year growth.",
"publication": "blog.kraken.com",
"type": "article"
}
]
}
},
{
"metric_id": "83a78a15-35a9-42b9-8bd5-084717e1597b",
"metric_definition": {
"base": "trailing_revenue",
"view": "growth",
"base_period": "year",
"base_forward": null,
"growth_period": "year",
"growth_period_length": 1
},
"measurement": {
"scenario": "historical",
"end_date": "2025-12-31",
"custom_start_date": null,
"comparison_window_end_date": "2024-12-31",
"comparison_window_custom_start_date": null,
"type": "equals",
"unit_kind": "percent",
"currency_code": null,
"amount": 33,
"low": null,
"high": null,
"scope_name": null,
"scope_type": null,
"status": "Active"
},
"updated_at": "2026-02-26T20:27:13.690811+00:00",
"created_at": "2026-02-25T20:17:24.761715+00:00",
"company": {
"id": "239",
"slug": "kraken",
"domain": "kraken.com"
},
"citations": {
"summary": {
"count": 1,
"latest_updated_at": "2026-02-25T20:17:40.946868+00:00"
},
"sources": [
{
"link": "https://blog.kraken.com/news/kraken-2025-financials",
"headline": "Kraken 2025 Financials",
"quote": "Adjusted revenue reached $2.2 billion, representing 33% year-over-year growth.",
"publication": "blog.kraken.com",
"type": "article"
}
]
}
}
],
"pagination": {
"page_size": 30,
"current_page_items": 2,
"total_items": 13,
"after_cursor": "Start",
"before_cursor": null,
"next_link": null,
"prev_link": null
},
"meta": {
"query_type": "single-company",
"companies_count": 1,
"companies": [
{
"id": "239",
"slug": "kraken",
"domain": "kraken.com"
}
]
}
}Authorizations
Authenticate using one of two formats:
- Organization/user token:
Token <your-token> - Stytch JWT:
Bearer <your-jwt>
Query Parameters
Comma-separated list of metric_definition.base_period values.
Filter by a single company domain (e.g. stripe.com). Cannot combine with multi-company filters.
Comma-separated list of company domains. Max 200 for GET. Cannot combine with single-company filters.
Filter by a single company ID. Cannot combine with multi-company filters.
Comma-separated list of company IDs. Max 200 for GET. Cannot combine with single-company filters.
Filter where measurement.comparison_window_end_date >= this value (ISO 8601).
Filter where measurement.comparison_window_end_date <= this value (ISO 8601).
Filter metrics created on or after this datetime (ISO 8601).
Filter metrics created on or before this datetime (ISO 8601).
Comma-separated list of metric_definition.growth_period values.
When true, include all SignalEvidence rows even without quote/snippet/SEC filing URL. Default: false.
Filter where measurement.end_date >= this value (ISO 8601).
Filter where measurement.end_date <= this value (ISO 8601).
Comma-separated list of measurement.scenario values (e.g. historical,projection).
Comma-separated list of metric_definition.base values to filter by (e.g. revenue,arr,trailing_revenue).
Comma-separated list of metric_definition.view values (e.g. value,growth).
Cursor for the next page. Cannot combine with page_before.
Cursor for the previous page. Cannot combine with page_after.
Results per page. Default: 30, max: 100.
Filter metrics updated on or after this datetime (ISO 8601).
Filter metrics updated on or before this datetime (ISO 8601).