curl --request POST \
--url https://sacra.com/api/v1/metrics/ \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"company_id": "<string>",
"company_domain": "<string>",
"company_ids": [
"<string>"
],
"company_domains": [
"<string>"
],
"metric_base": "<string>",
"metric_view": "<string>",
"measurement_scenario": "<string>",
"base_period": "<string>",
"growth_period": "<string>",
"measurement_end_date_gte": "2023-11-07T05:31:56Z",
"measurement_end_date_lte": "2023-11-07T05:31:56Z",
"comparison_window_end_date_gte": "2023-11-07T05:31:56Z",
"comparison_window_end_date_lte": "2023-11-07T05:31:56Z",
"created_at_gte": "2023-11-07T05:31:56Z",
"created_at_lte": "2023-11-07T05:31:56Z",
"updated_at_gte": "2023-11-07T05:31:56Z",
"updated_at_lte": "2023-11-07T05:31:56Z",
"include_all_signal_evidence": false,
"page_size": 123,
"page_after": "<string>",
"page_before": "<string>"
}
'import requests
url = "https://sacra.com/api/v1/metrics/"
payload = {
"company_id": "<string>",
"company_domain": "<string>",
"company_ids": ["<string>"],
"company_domains": ["<string>"],
"metric_base": "<string>",
"metric_view": "<string>",
"measurement_scenario": "<string>",
"base_period": "<string>",
"growth_period": "<string>",
"measurement_end_date_gte": "2023-11-07T05:31:56Z",
"measurement_end_date_lte": "2023-11-07T05:31:56Z",
"comparison_window_end_date_gte": "2023-11-07T05:31:56Z",
"comparison_window_end_date_lte": "2023-11-07T05:31:56Z",
"created_at_gte": "2023-11-07T05:31:56Z",
"created_at_lte": "2023-11-07T05:31:56Z",
"updated_at_gte": "2023-11-07T05:31:56Z",
"updated_at_lte": "2023-11-07T05:31:56Z",
"include_all_signal_evidence": False,
"page_size": 123,
"page_after": "<string>",
"page_before": "<string>"
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
company_id: '<string>',
company_domain: '<string>',
company_ids: ['<string>'],
company_domains: ['<string>'],
metric_base: '<string>',
metric_view: '<string>',
measurement_scenario: '<string>',
base_period: '<string>',
growth_period: '<string>',
measurement_end_date_gte: '2023-11-07T05:31:56Z',
measurement_end_date_lte: '2023-11-07T05:31:56Z',
comparison_window_end_date_gte: '2023-11-07T05:31:56Z',
comparison_window_end_date_lte: '2023-11-07T05:31:56Z',
created_at_gte: '2023-11-07T05:31:56Z',
created_at_lte: '2023-11-07T05:31:56Z',
updated_at_gte: '2023-11-07T05:31:56Z',
updated_at_lte: '2023-11-07T05:31:56Z',
include_all_signal_evidence: false,
page_size: 123,
page_after: '<string>',
page_before: '<string>'
})
};
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 => "POST",
CURLOPT_POSTFIELDS => json_encode([
'company_id' => '<string>',
'company_domain' => '<string>',
'company_ids' => [
'<string>'
],
'company_domains' => [
'<string>'
],
'metric_base' => '<string>',
'metric_view' => '<string>',
'measurement_scenario' => '<string>',
'base_period' => '<string>',
'growth_period' => '<string>',
'measurement_end_date_gte' => '2023-11-07T05:31:56Z',
'measurement_end_date_lte' => '2023-11-07T05:31:56Z',
'comparison_window_end_date_gte' => '2023-11-07T05:31:56Z',
'comparison_window_end_date_lte' => '2023-11-07T05:31:56Z',
'created_at_gte' => '2023-11-07T05:31:56Z',
'created_at_lte' => '2023-11-07T05:31:56Z',
'updated_at_gte' => '2023-11-07T05:31:56Z',
'updated_at_lte' => '2023-11-07T05:31:56Z',
'include_all_signal_evidence' => false,
'page_size' => 123,
'page_after' => '<string>',
'page_before' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sacra.com/api/v1/metrics/"
payload := strings.NewReader("{\n \"company_id\": \"<string>\",\n \"company_domain\": \"<string>\",\n \"company_ids\": [\n \"<string>\"\n ],\n \"company_domains\": [\n \"<string>\"\n ],\n \"metric_base\": \"<string>\",\n \"metric_view\": \"<string>\",\n \"measurement_scenario\": \"<string>\",\n \"base_period\": \"<string>\",\n \"growth_period\": \"<string>\",\n \"measurement_end_date_gte\": \"2023-11-07T05:31:56Z\",\n \"measurement_end_date_lte\": \"2023-11-07T05:31:56Z\",\n \"comparison_window_end_date_gte\": \"2023-11-07T05:31:56Z\",\n \"comparison_window_end_date_lte\": \"2023-11-07T05:31:56Z\",\n \"created_at_gte\": \"2023-11-07T05:31:56Z\",\n \"created_at_lte\": \"2023-11-07T05:31:56Z\",\n \"updated_at_gte\": \"2023-11-07T05:31:56Z\",\n \"updated_at_lte\": \"2023-11-07T05:31:56Z\",\n \"include_all_signal_evidence\": false,\n \"page_size\": 123,\n \"page_after\": \"<string>\",\n \"page_before\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://sacra.com/api/v1/metrics/")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"company_id\": \"<string>\",\n \"company_domain\": \"<string>\",\n \"company_ids\": [\n \"<string>\"\n ],\n \"company_domains\": [\n \"<string>\"\n ],\n \"metric_base\": \"<string>\",\n \"metric_view\": \"<string>\",\n \"measurement_scenario\": \"<string>\",\n \"base_period\": \"<string>\",\n \"growth_period\": \"<string>\",\n \"measurement_end_date_gte\": \"2023-11-07T05:31:56Z\",\n \"measurement_end_date_lte\": \"2023-11-07T05:31:56Z\",\n \"comparison_window_end_date_gte\": \"2023-11-07T05:31:56Z\",\n \"comparison_window_end_date_lte\": \"2023-11-07T05:31:56Z\",\n \"created_at_gte\": \"2023-11-07T05:31:56Z\",\n \"created_at_lte\": \"2023-11-07T05:31:56Z\",\n \"updated_at_gte\": \"2023-11-07T05:31:56Z\",\n \"updated_at_lte\": \"2023-11-07T05:31:56Z\",\n \"include_all_signal_evidence\": false,\n \"page_size\": 123,\n \"page_after\": \"<string>\",\n \"page_before\": \"<string>\"\n}")
.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::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"company_id\": \"<string>\",\n \"company_domain\": \"<string>\",\n \"company_ids\": [\n \"<string>\"\n ],\n \"company_domains\": [\n \"<string>\"\n ],\n \"metric_base\": \"<string>\",\n \"metric_view\": \"<string>\",\n \"measurement_scenario\": \"<string>\",\n \"base_period\": \"<string>\",\n \"growth_period\": \"<string>\",\n \"measurement_end_date_gte\": \"2023-11-07T05:31:56Z\",\n \"measurement_end_date_lte\": \"2023-11-07T05:31:56Z\",\n \"comparison_window_end_date_gte\": \"2023-11-07T05:31:56Z\",\n \"comparison_window_end_date_lte\": \"2023-11-07T05:31:56Z\",\n \"created_at_gte\": \"2023-11-07T05:31:56Z\",\n \"created_at_lte\": \"2023-11-07T05:31:56Z\",\n \"updated_at_gte\": \"2023-11-07T05:31:56Z\",\n \"updated_at_lte\": \"2023-11-07T05:31:56Z\",\n \"include_all_signal_evidence\": false,\n \"page_size\": 123,\n \"page_after\": \"<string>\",\n \"page_before\": \"<string>\"\n}"
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"
}
]
}
}
],
"pagination": {
"page_size": 30,
"current_page_items": 1,
"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 (batch)
Same as GET but accepts a JSON body. Use for large multi-company queries.
Company filters: Provide single-company filters (company_id, company_domain) or multi-company filters (company_ids, company_domains), but not both.
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 POST \
--url https://sacra.com/api/v1/metrics/ \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"company_id": "<string>",
"company_domain": "<string>",
"company_ids": [
"<string>"
],
"company_domains": [
"<string>"
],
"metric_base": "<string>",
"metric_view": "<string>",
"measurement_scenario": "<string>",
"base_period": "<string>",
"growth_period": "<string>",
"measurement_end_date_gte": "2023-11-07T05:31:56Z",
"measurement_end_date_lte": "2023-11-07T05:31:56Z",
"comparison_window_end_date_gte": "2023-11-07T05:31:56Z",
"comparison_window_end_date_lte": "2023-11-07T05:31:56Z",
"created_at_gte": "2023-11-07T05:31:56Z",
"created_at_lte": "2023-11-07T05:31:56Z",
"updated_at_gte": "2023-11-07T05:31:56Z",
"updated_at_lte": "2023-11-07T05:31:56Z",
"include_all_signal_evidence": false,
"page_size": 123,
"page_after": "<string>",
"page_before": "<string>"
}
'import requests
url = "https://sacra.com/api/v1/metrics/"
payload = {
"company_id": "<string>",
"company_domain": "<string>",
"company_ids": ["<string>"],
"company_domains": ["<string>"],
"metric_base": "<string>",
"metric_view": "<string>",
"measurement_scenario": "<string>",
"base_period": "<string>",
"growth_period": "<string>",
"measurement_end_date_gte": "2023-11-07T05:31:56Z",
"measurement_end_date_lte": "2023-11-07T05:31:56Z",
"comparison_window_end_date_gte": "2023-11-07T05:31:56Z",
"comparison_window_end_date_lte": "2023-11-07T05:31:56Z",
"created_at_gte": "2023-11-07T05:31:56Z",
"created_at_lte": "2023-11-07T05:31:56Z",
"updated_at_gte": "2023-11-07T05:31:56Z",
"updated_at_lte": "2023-11-07T05:31:56Z",
"include_all_signal_evidence": False,
"page_size": 123,
"page_after": "<string>",
"page_before": "<string>"
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
company_id: '<string>',
company_domain: '<string>',
company_ids: ['<string>'],
company_domains: ['<string>'],
metric_base: '<string>',
metric_view: '<string>',
measurement_scenario: '<string>',
base_period: '<string>',
growth_period: '<string>',
measurement_end_date_gte: '2023-11-07T05:31:56Z',
measurement_end_date_lte: '2023-11-07T05:31:56Z',
comparison_window_end_date_gte: '2023-11-07T05:31:56Z',
comparison_window_end_date_lte: '2023-11-07T05:31:56Z',
created_at_gte: '2023-11-07T05:31:56Z',
created_at_lte: '2023-11-07T05:31:56Z',
updated_at_gte: '2023-11-07T05:31:56Z',
updated_at_lte: '2023-11-07T05:31:56Z',
include_all_signal_evidence: false,
page_size: 123,
page_after: '<string>',
page_before: '<string>'
})
};
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 => "POST",
CURLOPT_POSTFIELDS => json_encode([
'company_id' => '<string>',
'company_domain' => '<string>',
'company_ids' => [
'<string>'
],
'company_domains' => [
'<string>'
],
'metric_base' => '<string>',
'metric_view' => '<string>',
'measurement_scenario' => '<string>',
'base_period' => '<string>',
'growth_period' => '<string>',
'measurement_end_date_gte' => '2023-11-07T05:31:56Z',
'measurement_end_date_lte' => '2023-11-07T05:31:56Z',
'comparison_window_end_date_gte' => '2023-11-07T05:31:56Z',
'comparison_window_end_date_lte' => '2023-11-07T05:31:56Z',
'created_at_gte' => '2023-11-07T05:31:56Z',
'created_at_lte' => '2023-11-07T05:31:56Z',
'updated_at_gte' => '2023-11-07T05:31:56Z',
'updated_at_lte' => '2023-11-07T05:31:56Z',
'include_all_signal_evidence' => false,
'page_size' => 123,
'page_after' => '<string>',
'page_before' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sacra.com/api/v1/metrics/"
payload := strings.NewReader("{\n \"company_id\": \"<string>\",\n \"company_domain\": \"<string>\",\n \"company_ids\": [\n \"<string>\"\n ],\n \"company_domains\": [\n \"<string>\"\n ],\n \"metric_base\": \"<string>\",\n \"metric_view\": \"<string>\",\n \"measurement_scenario\": \"<string>\",\n \"base_period\": \"<string>\",\n \"growth_period\": \"<string>\",\n \"measurement_end_date_gte\": \"2023-11-07T05:31:56Z\",\n \"measurement_end_date_lte\": \"2023-11-07T05:31:56Z\",\n \"comparison_window_end_date_gte\": \"2023-11-07T05:31:56Z\",\n \"comparison_window_end_date_lte\": \"2023-11-07T05:31:56Z\",\n \"created_at_gte\": \"2023-11-07T05:31:56Z\",\n \"created_at_lte\": \"2023-11-07T05:31:56Z\",\n \"updated_at_gte\": \"2023-11-07T05:31:56Z\",\n \"updated_at_lte\": \"2023-11-07T05:31:56Z\",\n \"include_all_signal_evidence\": false,\n \"page_size\": 123,\n \"page_after\": \"<string>\",\n \"page_before\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://sacra.com/api/v1/metrics/")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"company_id\": \"<string>\",\n \"company_domain\": \"<string>\",\n \"company_ids\": [\n \"<string>\"\n ],\n \"company_domains\": [\n \"<string>\"\n ],\n \"metric_base\": \"<string>\",\n \"metric_view\": \"<string>\",\n \"measurement_scenario\": \"<string>\",\n \"base_period\": \"<string>\",\n \"growth_period\": \"<string>\",\n \"measurement_end_date_gte\": \"2023-11-07T05:31:56Z\",\n \"measurement_end_date_lte\": \"2023-11-07T05:31:56Z\",\n \"comparison_window_end_date_gte\": \"2023-11-07T05:31:56Z\",\n \"comparison_window_end_date_lte\": \"2023-11-07T05:31:56Z\",\n \"created_at_gte\": \"2023-11-07T05:31:56Z\",\n \"created_at_lte\": \"2023-11-07T05:31:56Z\",\n \"updated_at_gte\": \"2023-11-07T05:31:56Z\",\n \"updated_at_lte\": \"2023-11-07T05:31:56Z\",\n \"include_all_signal_evidence\": false,\n \"page_size\": 123,\n \"page_after\": \"<string>\",\n \"page_before\": \"<string>\"\n}")
.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::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"company_id\": \"<string>\",\n \"company_domain\": \"<string>\",\n \"company_ids\": [\n \"<string>\"\n ],\n \"company_domains\": [\n \"<string>\"\n ],\n \"metric_base\": \"<string>\",\n \"metric_view\": \"<string>\",\n \"measurement_scenario\": \"<string>\",\n \"base_period\": \"<string>\",\n \"growth_period\": \"<string>\",\n \"measurement_end_date_gte\": \"2023-11-07T05:31:56Z\",\n \"measurement_end_date_lte\": \"2023-11-07T05:31:56Z\",\n \"comparison_window_end_date_gte\": \"2023-11-07T05:31:56Z\",\n \"comparison_window_end_date_lte\": \"2023-11-07T05:31:56Z\",\n \"created_at_gte\": \"2023-11-07T05:31:56Z\",\n \"created_at_lte\": \"2023-11-07T05:31:56Z\",\n \"updated_at_gte\": \"2023-11-07T05:31:56Z\",\n \"updated_at_lte\": \"2023-11-07T05:31:56Z\",\n \"include_all_signal_evidence\": false,\n \"page_size\": 123,\n \"page_after\": \"<string>\",\n \"page_before\": \"<string>\"\n}"
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"
}
]
}
}
],
"pagination": {
"page_size": 30,
"current_page_items": 1,
"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>
Body
Filter by a single company ID.
Filter by a single company domain (e.g. stripe.com).
List of company IDs.
List of company domains.
Comma-separated metric_definition.base values (e.g. revenue,arr).
Comma-separated metric_definition.view values (e.g. value,growth).
Comma-separated measurement.scenario values (e.g. historical,projection).
Comma-separated metric_definition.base_period values.
Comma-separated metric_definition.growth_period values.
Filter where measurement.end_date >= this value (ISO 8601).
Filter where measurement.end_date <= this value (ISO 8601).
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).
Filter metrics updated on or after this datetime (ISO 8601).
Filter metrics updated on or before this datetime (ISO 8601).
When true, include all SignalEvidence rows. Default: false.
Results per page. Default: 30, max: 100.
Cursor for the next page.
Cursor for the previous page.