curl --request POST \
--url https://api.galtea.ai/inferenceResults/generate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"testIds": [
"test_123",
"test_456"
],
"testCaseIds": [
"tc_123",
"tc_456"
],
"versionId": "ver_123",
"productId": "prod_123",
"metricIds": [
"metric_123",
"metric_456"
]
}
'import requests
url = "https://api.galtea.ai/inferenceResults/generate"
payload = {
"testIds": ["test_123", "test_456"],
"testCaseIds": ["tc_123", "tc_456"],
"versionId": "ver_123",
"productId": "prod_123",
"metricIds": ["metric_123", "metric_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({
testIds: ['test_123', 'test_456'],
testCaseIds: ['tc_123', 'tc_456'],
versionId: 'ver_123',
productId: 'prod_123',
metricIds: ['metric_123', 'metric_456']
})
};
fetch('https://api.galtea.ai/inferenceResults/generate', 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/inferenceResults/generate",
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([
'testIds' => [
'test_123',
'test_456'
],
'testCaseIds' => [
'tc_123',
'tc_456'
],
'versionId' => 'ver_123',
'productId' => 'prod_123',
'metricIds' => [
'metric_123',
'metric_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/inferenceResults/generate"
payload := strings.NewReader("{\n \"testIds\": [\n \"test_123\",\n \"test_456\"\n ],\n \"testCaseIds\": [\n \"tc_123\",\n \"tc_456\"\n ],\n \"versionId\": \"ver_123\",\n \"productId\": \"prod_123\",\n \"metricIds\": [\n \"metric_123\",\n \"metric_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/inferenceResults/generate")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"testIds\": [\n \"test_123\",\n \"test_456\"\n ],\n \"testCaseIds\": [\n \"tc_123\",\n \"tc_456\"\n ],\n \"versionId\": \"ver_123\",\n \"productId\": \"prod_123\",\n \"metricIds\": [\n \"metric_123\",\n \"metric_456\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.galtea.ai/inferenceResults/generate")
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 \"testIds\": [\n \"test_123\",\n \"test_456\"\n ],\n \"testCaseIds\": [\n \"tc_123\",\n \"tc_456\"\n ],\n \"versionId\": \"ver_123\",\n \"productId\": \"prod_123\",\n \"metricIds\": [\n \"metric_123\",\n \"metric_456\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"jobId": "<string>",
"versionId": "<string>",
"message": "<string>",
"testCaseCount": 123,
"warnings": [
"<string>"
],
"runId": "<string>"
}{
"error": "Error type",
"message": "Error message description"
}{
"error": "Error type",
"message": "Error message description"
}Generate traces from test cases
Triggers async inference generation for specified test cases using the version’s endpoint connection. 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 inferences run 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 Traces. The REST path /inferenceResults and the inferenceResult* JSON fields keep the old name of this entity.
curl --request POST \
--url https://api.galtea.ai/inferenceResults/generate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"testIds": [
"test_123",
"test_456"
],
"testCaseIds": [
"tc_123",
"tc_456"
],
"versionId": "ver_123",
"productId": "prod_123",
"metricIds": [
"metric_123",
"metric_456"
]
}
'import requests
url = "https://api.galtea.ai/inferenceResults/generate"
payload = {
"testIds": ["test_123", "test_456"],
"testCaseIds": ["tc_123", "tc_456"],
"versionId": "ver_123",
"productId": "prod_123",
"metricIds": ["metric_123", "metric_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({
testIds: ['test_123', 'test_456'],
testCaseIds: ['tc_123', 'tc_456'],
versionId: 'ver_123',
productId: 'prod_123',
metricIds: ['metric_123', 'metric_456']
})
};
fetch('https://api.galtea.ai/inferenceResults/generate', 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/inferenceResults/generate",
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([
'testIds' => [
'test_123',
'test_456'
],
'testCaseIds' => [
'tc_123',
'tc_456'
],
'versionId' => 'ver_123',
'productId' => 'prod_123',
'metricIds' => [
'metric_123',
'metric_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/inferenceResults/generate"
payload := strings.NewReader("{\n \"testIds\": [\n \"test_123\",\n \"test_456\"\n ],\n \"testCaseIds\": [\n \"tc_123\",\n \"tc_456\"\n ],\n \"versionId\": \"ver_123\",\n \"productId\": \"prod_123\",\n \"metricIds\": [\n \"metric_123\",\n \"metric_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/inferenceResults/generate")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"testIds\": [\n \"test_123\",\n \"test_456\"\n ],\n \"testCaseIds\": [\n \"tc_123\",\n \"tc_456\"\n ],\n \"versionId\": \"ver_123\",\n \"productId\": \"prod_123\",\n \"metricIds\": [\n \"metric_123\",\n \"metric_456\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.galtea.ai/inferenceResults/generate")
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 \"testIds\": [\n \"test_123\",\n \"test_456\"\n ],\n \"testCaseIds\": [\n \"tc_123\",\n \"tc_456\"\n ],\n \"versionId\": \"ver_123\",\n \"productId\": \"prod_123\",\n \"metricIds\": [\n \"metric_123\",\n \"metric_456\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"jobId": "<string>",
"versionId": "<string>",
"message": "<string>",
"testCaseCount": 123,
"warnings": [
"<string>"
],
"runId": "<string>"
}{
"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
Array of test IDs to generate traces for (will process all test cases in these tests)
["test_123", "test_456"]
Array of test case IDs to generate traces for
["tc_123", "tc_456"]
Version ID containing the endpoint connection configuration. Provide this or productId.
"ver_123"
Product ID to run against when no versionId is given. The product's latest properly configured version is cloned and inferences run against the clone.
"prod_123"
Optional array of metric IDs to evaluate after inference generation. If provided, evaluations will be triggered automatically.
["metric_123", "metric_456"]
Response
Inference generation job queued successfully
The version the job runs against — the passed versionId, or the id of the clone created when only productId was given.
Non-fatal problems with the queued run, e.g. attached files the endpoint connection template cannot deliver. Empty when there are none.
The run this launch opened. Every launch opens one, whether or not it evaluates a metric.