curl --request POST \
--url https://api.galileo.ai/v2/projects/{project_id}/recompute-metrics \
--header 'Content-Type: application/json' \
--header 'Galileo-API-Key: <api-key>' \
--data '
{
"filters": [
{
"case_sensitive": true,
"name": "input",
"operator": "eq",
"type": "text",
"value": "example input"
}
],
"log_stream_id": "00000000-0000-0000-0000-000000000000",
"pagination": {
"limit": 5,
"starting_token": 0
},
"sort": {
"ascending": false,
"name": "updated_at",
"sort_type": "column"
}
}
'import requests
url = "https://api.galileo.ai/v2/projects/{project_id}/recompute-metrics"
payload = {
"filters": [
{
"case_sensitive": True,
"name": "input",
"operator": "eq",
"type": "text",
"value": "example input"
}
],
"log_stream_id": "00000000-0000-0000-0000-000000000000",
"pagination": {
"limit": 5,
"starting_token": 0
},
"sort": {
"ascending": False,
"name": "updated_at",
"sort_type": "column"
}
}
headers = {
"Galileo-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Galileo-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
filters: [
{
case_sensitive: true,
name: 'input',
operator: 'eq',
type: 'text',
value: 'example input'
}
],
log_stream_id: '00000000-0000-0000-0000-000000000000',
pagination: {limit: 5, starting_token: 0},
sort: {ascending: false, name: 'updated_at', sort_type: 'column'}
})
};
fetch('https://api.galileo.ai/v2/projects/{project_id}/recompute-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://api.galileo.ai/v2/projects/{project_id}/recompute-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([
'filters' => [
[
'case_sensitive' => true,
'name' => 'input',
'operator' => 'eq',
'type' => 'text',
'value' => 'example input'
]
],
'log_stream_id' => '00000000-0000-0000-0000-000000000000',
'pagination' => [
'limit' => 5,
'starting_token' => 0
],
'sort' => [
'ascending' => false,
'name' => 'updated_at',
'sort_type' => 'column'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"Galileo-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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.galileo.ai/v2/projects/{project_id}/recompute-metrics"
payload := strings.NewReader("{\n \"filters\": [\n {\n \"case_sensitive\": true,\n \"name\": \"input\",\n \"operator\": \"eq\",\n \"type\": \"text\",\n \"value\": \"example input\"\n }\n ],\n \"log_stream_id\": \"00000000-0000-0000-0000-000000000000\",\n \"pagination\": {\n \"limit\": 5,\n \"starting_token\": 0\n },\n \"sort\": {\n \"ascending\": false,\n \"name\": \"updated_at\",\n \"sort_type\": \"column\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Galileo-API-Key", "<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://api.galileo.ai/v2/projects/{project_id}/recompute-metrics")
.header("Galileo-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"filters\": [\n {\n \"case_sensitive\": true,\n \"name\": \"input\",\n \"operator\": \"eq\",\n \"type\": \"text\",\n \"value\": \"example input\"\n }\n ],\n \"log_stream_id\": \"00000000-0000-0000-0000-000000000000\",\n \"pagination\": {\n \"limit\": 5,\n \"starting_token\": 0\n },\n \"sort\": {\n \"ascending\": false,\n \"name\": \"updated_at\",\n \"sort_type\": \"column\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.galileo.ai/v2/projects/{project_id}/recompute-metrics")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Galileo-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"filters\": [\n {\n \"case_sensitive\": true,\n \"name\": \"input\",\n \"operator\": \"eq\",\n \"type\": \"text\",\n \"value\": \"example input\"\n }\n ],\n \"log_stream_id\": \"00000000-0000-0000-0000-000000000000\",\n \"pagination\": {\n \"limit\": 5,\n \"starting_token\": 0\n },\n \"sort\": {\n \"ascending\": false,\n \"name\": \"updated_at\",\n \"sort_type\": \"column\"\n }\n}"
response = http.request(request)
puts response.read_body{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Recompute Metrics
curl --request POST \
--url https://api.galileo.ai/v2/projects/{project_id}/recompute-metrics \
--header 'Content-Type: application/json' \
--header 'Galileo-API-Key: <api-key>' \
--data '
{
"filters": [
{
"case_sensitive": true,
"name": "input",
"operator": "eq",
"type": "text",
"value": "example input"
}
],
"log_stream_id": "00000000-0000-0000-0000-000000000000",
"pagination": {
"limit": 5,
"starting_token": 0
},
"sort": {
"ascending": false,
"name": "updated_at",
"sort_type": "column"
}
}
'import requests
url = "https://api.galileo.ai/v2/projects/{project_id}/recompute-metrics"
payload = {
"filters": [
{
"case_sensitive": True,
"name": "input",
"operator": "eq",
"type": "text",
"value": "example input"
}
],
"log_stream_id": "00000000-0000-0000-0000-000000000000",
"pagination": {
"limit": 5,
"starting_token": 0
},
"sort": {
"ascending": False,
"name": "updated_at",
"sort_type": "column"
}
}
headers = {
"Galileo-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Galileo-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
filters: [
{
case_sensitive: true,
name: 'input',
operator: 'eq',
type: 'text',
value: 'example input'
}
],
log_stream_id: '00000000-0000-0000-0000-000000000000',
pagination: {limit: 5, starting_token: 0},
sort: {ascending: false, name: 'updated_at', sort_type: 'column'}
})
};
fetch('https://api.galileo.ai/v2/projects/{project_id}/recompute-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://api.galileo.ai/v2/projects/{project_id}/recompute-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([
'filters' => [
[
'case_sensitive' => true,
'name' => 'input',
'operator' => 'eq',
'type' => 'text',
'value' => 'example input'
]
],
'log_stream_id' => '00000000-0000-0000-0000-000000000000',
'pagination' => [
'limit' => 5,
'starting_token' => 0
],
'sort' => [
'ascending' => false,
'name' => 'updated_at',
'sort_type' => 'column'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"Galileo-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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.galileo.ai/v2/projects/{project_id}/recompute-metrics"
payload := strings.NewReader("{\n \"filters\": [\n {\n \"case_sensitive\": true,\n \"name\": \"input\",\n \"operator\": \"eq\",\n \"type\": \"text\",\n \"value\": \"example input\"\n }\n ],\n \"log_stream_id\": \"00000000-0000-0000-0000-000000000000\",\n \"pagination\": {\n \"limit\": 5,\n \"starting_token\": 0\n },\n \"sort\": {\n \"ascending\": false,\n \"name\": \"updated_at\",\n \"sort_type\": \"column\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Galileo-API-Key", "<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://api.galileo.ai/v2/projects/{project_id}/recompute-metrics")
.header("Galileo-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"filters\": [\n {\n \"case_sensitive\": true,\n \"name\": \"input\",\n \"operator\": \"eq\",\n \"type\": \"text\",\n \"value\": \"example input\"\n }\n ],\n \"log_stream_id\": \"00000000-0000-0000-0000-000000000000\",\n \"pagination\": {\n \"limit\": 5,\n \"starting_token\": 0\n },\n \"sort\": {\n \"ascending\": false,\n \"name\": \"updated_at\",\n \"sort_type\": \"column\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.galileo.ai/v2/projects/{project_id}/recompute-metrics")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Galileo-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"filters\": [\n {\n \"case_sensitive\": true,\n \"name\": \"input\",\n \"operator\": \"eq\",\n \"type\": \"text\",\n \"value\": \"example input\"\n }\n ],\n \"log_stream_id\": \"00000000-0000-0000-0000-000000000000\",\n \"pagination\": {\n \"limit\": 5,\n \"starting_token\": 0\n },\n \"sort\": {\n \"ascending\": false,\n \"name\": \"updated_at\",\n \"sort_type\": \"column\"\n }\n}"
response = http.request(request)
puts response.read_body{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
Path Parameters
Body
Request to recompute metrics for a genai project run (log stream or experiment). This request is used to trigger recomputation of metrics based on the provided filters and scorer IDs.
List of scorer IDs for which metrics should be recomputed.
Log stream id associated with the traces.
Experiment id associated with the traces.
Metrics testing id associated with the traces.
- LogRecordsIDFilter
- LogRecordsDateFilter
- LogRecordsNumberFilter
- LogRecordsBooleanFilter
- LogRecordsCollectionFilter
- LogRecordsTextFilter
- LogRecordsFullyAnnotatedFilter
Show child attributes
Show child attributes
- FilterLeaf[Annotated[Union[LogRecordsIDFilter, LogRecordsDateFilter, LogRecordsNumberFilter, LogRecordsBooleanFilter, LogRecordsCollectionFilter, LogRecordsTextFilter, LogRecordsFullyAnnotatedFilter], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]
- AndNode[Annotated[Union[LogRecordsIDFilter, LogRecordsDateFilter, LogRecordsNumberFilter, LogRecordsBooleanFilter, LogRecordsCollectionFilter, LogRecordsTextFilter, LogRecordsFullyAnnotatedFilter], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]
- OrNode[Annotated[Union[LogRecordsIDFilter, LogRecordsDateFilter, LogRecordsNumberFilter, LogRecordsBooleanFilter, LogRecordsCollectionFilter, LogRecordsTextFilter, LogRecordsFullyAnnotatedFilter], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]
- NotNode[Annotated[Union[LogRecordsIDFilter, LogRecordsDateFilter, LogRecordsNumberFilter, LogRecordsBooleanFilter, LogRecordsCollectionFilter, LogRecordsTextFilter, LogRecordsFullyAnnotatedFilter], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]
Show child attributes
Show child attributes
Sort for the query. Defaults to native sort (created_at, id descending).
Show child attributes
Show child attributes
If True, include computed child counts (e.g., num_traces for sessions, num_spans for traces).
If True, include per-row scorer metadata (the dict returned alongside the score by code-based scorers via the (score, metadata) tuple-return contract) on each MetricSuccess in the response. Off by default to keep payloads small for callers that don't need it.
Response
Successful Response
Was this page helpful?