curl --request GET \
--url https://api.galtea.ai/analytics \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.galtea.ai/analytics"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.galtea.ai/analytics', 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://api.galtea.ai/analytics",
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: Bearer <token>"
],
]);
$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://api.galtea.ai/analytics"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.galtea.ai/analytics")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.galtea.ai/analytics")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"groups": [
{
"type": "<string>",
"specifications": [
{
"id": "<string>",
"description": "<string>",
"type": "<string>",
"scores": [
{
"versionId": "<string>",
"versionName": "<string>",
"score": 123
}
],
"overallScores": [
{
"versionId": "<string>",
"versionName": "<string>",
"score": 123
}
]
}
]
}
]
}{
"error": "Error type",
"message": "Error message description"
}{
"error": "Error type",
"message": "Error message description"
}Get analytics data
Get analytics data for a product with optional filtering. See Platform Overview.
curl --request GET \
--url https://api.galtea.ai/analytics \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.galtea.ai/analytics"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.galtea.ai/analytics', 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://api.galtea.ai/analytics",
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: Bearer <token>"
],
]);
$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://api.galtea.ai/analytics"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.galtea.ai/analytics")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.galtea.ai/analytics")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"groups": [
{
"type": "<string>",
"specifications": [
{
"id": "<string>",
"description": "<string>",
"type": "<string>",
"scores": [
{
"versionId": "<string>",
"versionName": "<string>",
"score": 123
}
],
"overallScores": [
{
"versionId": "<string>",
"versionName": "<string>",
"score": 123
}
]
}
]
}
]
}{
"error": "Error type",
"message": "Error message description"
}{
"error": "Error type",
"message": "Error message description"
}Authorizations
API key authorization. Pass your API key in the Authorization header as a Bearer token. Both new (gsk_*) and legacy (gsk-) API keys are accepted, e.g. Authorization: Bearer gsk_... or Authorization: Bearer gsk-....
Query Parameters
Product ID (required)
Filter by version IDs
Filter by test IDs
Filter by metric IDs
Start date for filtering (epoch milliseconds). Ranges wider than 1830 days (5 years) are rejected with 400.
End date for filtering (epoch milliseconds)
Filter by language codes
When set, returns only production (true) or only development (false) data. Omit to include both.
Response
Analytics data retrieved successfully
Analytics data containing evaluation results and metrics. Each entry in averages.total carries a per-version coverage number (0-100, same scale as score): the percentage of the product's reachable test cases that have at least one scored SUCCESS evaluation under that version. Reachable means a case of one of the product's own datasets, or a case of a platform-wide dataset the product has run; deleted cases and superseded revisions count on neither side. It is 0 when the product has no reachable test cases or the version evaluated none, and is computed independently of the isProduction filter.
Show child attributes
Show child attributes