curl --request POST \
--url https://api.galtea.ai/evaluations/fromVersion \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"versionId": "ver_123",
"productId": "prod_123",
"specificationIds": [
"spec_123",
"spec_456"
]
}
'import requests
url = "https://api.galtea.ai/evaluations/fromVersion"
payload = {
"versionId": "ver_123",
"productId": "prod_123",
"specificationIds": ["spec_123", "spec_456"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
versionId: 'ver_123',
productId: 'prod_123',
specificationIds: ['spec_123', 'spec_456']
})
};
fetch('https://api.galtea.ai/evaluations/fromVersion', 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/evaluations/fromVersion",
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([
'versionId' => 'ver_123',
'productId' => 'prod_123',
'specificationIds' => [
'spec_123',
'spec_456'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://api.galtea.ai/evaluations/fromVersion"
payload := strings.NewReader("{\n \"versionId\": \"ver_123\",\n \"productId\": \"prod_123\",\n \"specificationIds\": [\n \"spec_123\",\n \"spec_456\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.galtea.ai/evaluations/fromVersion")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"versionId\": \"ver_123\",\n \"productId\": \"prod_123\",\n \"specificationIds\": [\n \"spec_123\",\n \"spec_456\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.galtea.ai/evaluations/fromVersion")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"versionId\": \"ver_123\",\n \"productId\": \"prod_123\",\n \"specificationIds\": [\n \"spec_123\",\n \"spec_456\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"jobId": "<string>",
"versionId": "<string>",
"testCaseCount": 123,
"message": "<string>",
"specifications": [
{
"specificationId": "<string>",
"testCount": 123,
"metricCount": 123
}
]
}{
"error": "Error type",
"message": "Error message description"
}{
"error": "Error type",
"message": "Error message description"
}{
"error": "Error type",
"message": "Error message description"
}Evaluate a version
Automatically evaluates a version by resolving its product’s specifications, their linked metrics, and their linked tests. Creates inference generation jobs for every test case across all linked tests. Specifications without tests or without metrics are silently skipped. Provide either versionId or productId. When productId is given without a versionId, the product’s latest properly configured version (one with a conversation-endpoint, phone, or WebRTC connection) is cloned and the evaluation runs against the clone; the product must already have such a version. Omitting versionId clones a version, so it requires permission to create versions (a caller lacking it gets a 403). See Evaluations.
curl --request POST \
--url https://api.galtea.ai/evaluations/fromVersion \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"versionId": "ver_123",
"productId": "prod_123",
"specificationIds": [
"spec_123",
"spec_456"
]
}
'import requests
url = "https://api.galtea.ai/evaluations/fromVersion"
payload = {
"versionId": "ver_123",
"productId": "prod_123",
"specificationIds": ["spec_123", "spec_456"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
versionId: 'ver_123',
productId: 'prod_123',
specificationIds: ['spec_123', 'spec_456']
})
};
fetch('https://api.galtea.ai/evaluations/fromVersion', 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/evaluations/fromVersion",
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([
'versionId' => 'ver_123',
'productId' => 'prod_123',
'specificationIds' => [
'spec_123',
'spec_456'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://api.galtea.ai/evaluations/fromVersion"
payload := strings.NewReader("{\n \"versionId\": \"ver_123\",\n \"productId\": \"prod_123\",\n \"specificationIds\": [\n \"spec_123\",\n \"spec_456\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.galtea.ai/evaluations/fromVersion")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"versionId\": \"ver_123\",\n \"productId\": \"prod_123\",\n \"specificationIds\": [\n \"spec_123\",\n \"spec_456\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.galtea.ai/evaluations/fromVersion")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"versionId\": \"ver_123\",\n \"productId\": \"prod_123\",\n \"specificationIds\": [\n \"spec_123\",\n \"spec_456\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"jobId": "<string>",
"versionId": "<string>",
"testCaseCount": 123,
"message": "<string>",
"specifications": [
{
"specificationId": "<string>",
"testCount": 123,
"metricCount": 123
}
]
}{
"error": "Error type",
"message": "Error message description"
}{
"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-....
Body
The version ID to evaluate. Provide this or productId.
"ver_123"
Product ID to evaluate when no versionId is given. The product's latest properly configured version is cloned and the evaluation runs against the clone.
"prod_123"
Optional list of specification IDs to evaluate. If omitted, all product specifications with linked metrics and tests are used.
["spec_123", "spec_456"]
Response
Evaluation job queued successfully