curl --request POST \
--url https://api.galtea.ai/runs/{id}/relaunch \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"versionId": "version_123",
"useCurrentTestCases": false
}
'import requests
url = "https://api.galtea.ai/runs/{id}/relaunch"
payload = {
"versionId": "version_123",
"useCurrentTestCases": False
}
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: 'version_123', useCurrentTestCases: false})
};
fetch('https://api.galtea.ai/runs/{id}/relaunch', 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/runs/{id}/relaunch",
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' => 'version_123',
'useCurrentTestCases' => false
]),
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/runs/{id}/relaunch"
payload := strings.NewReader("{\n \"versionId\": \"version_123\",\n \"useCurrentTestCases\": false\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/runs/{id}/relaunch")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"versionId\": \"version_123\",\n \"useCurrentTestCases\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.galtea.ai/runs/{id}/relaunch")
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\": \"version_123\",\n \"useCurrentTestCases\": false\n}"
response = http.request(request)
puts response.read_body{
"id": "run_123",
"productId": "product_123",
"versionId": "version_123",
"userId": "user_123",
"ordinal": 42,
"customId": "nightly-regression",
"relaunchedFromRunId": "run_122",
"openedBy": "LAUNCH",
"status": "COMPLETED",
"evaluationCount": 120,
"sessionCount": 30,
"kind": "GENERATE_INFERENCES",
"jobId": "<string>",
"error": "<string>",
"request": {},
"resolvedInputs": {},
"finishedAt": "2023-11-07T05:31:56Z",
"deletedAt": "2023-11-07T05:31:56Z",
"report": {
"sessionsEvaluated": 28,
"sessionsFailed": 1,
"evaluationsCreated": 56,
"failures": [
{
"sessionId": "<string>",
"error": "<string>"
}
],
"message": "28 sessions evaluated, 56 evaluations created. 2 skipped: 2 whose specification the run being repeated did not score."
},
"createdAt": "2023-11-07T05:31:56Z"
}{
"error": "Error type",
"message": "Error message description"
}{
"error": "Error type",
"message": "Error message description"
}{
"error": "Error type",
"message": "Error message description"
}{
"error": "Error type",
"message": "Error message description"
}Run a run again
Repeats a run and answers with the new one, which names the run it came from. The kind of the source decides the form: a run the platform launched drives the agent again and scores the new sessions, while a run that scored sessions which already existed scores them again and creates none. A run the client performed carries no kind to read, so its own evaluations name the sessions and metrics to score again; no new session is created, because only that client can produce one. A repetition that scores sessions answers with a “report” of what it scored, skipped and failed; one that drives the agent again reports null there, because that work is queued.
curl --request POST \
--url https://api.galtea.ai/runs/{id}/relaunch \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"versionId": "version_123",
"useCurrentTestCases": false
}
'import requests
url = "https://api.galtea.ai/runs/{id}/relaunch"
payload = {
"versionId": "version_123",
"useCurrentTestCases": False
}
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: 'version_123', useCurrentTestCases: false})
};
fetch('https://api.galtea.ai/runs/{id}/relaunch', 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/runs/{id}/relaunch",
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' => 'version_123',
'useCurrentTestCases' => false
]),
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/runs/{id}/relaunch"
payload := strings.NewReader("{\n \"versionId\": \"version_123\",\n \"useCurrentTestCases\": false\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/runs/{id}/relaunch")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"versionId\": \"version_123\",\n \"useCurrentTestCases\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.galtea.ai/runs/{id}/relaunch")
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\": \"version_123\",\n \"useCurrentTestCases\": false\n}"
response = http.request(request)
puts response.read_body{
"id": "run_123",
"productId": "product_123",
"versionId": "version_123",
"userId": "user_123",
"ordinal": 42,
"customId": "nightly-regression",
"relaunchedFromRunId": "run_122",
"openedBy": "LAUNCH",
"status": "COMPLETED",
"evaluationCount": 120,
"sessionCount": 30,
"kind": "GENERATE_INFERENCES",
"jobId": "<string>",
"error": "<string>",
"request": {},
"resolvedInputs": {},
"finishedAt": "2023-11-07T05:31:56Z",
"deletedAt": "2023-11-07T05:31:56Z",
"report": {
"sessionsEvaluated": 28,
"sessionsFailed": 1,
"evaluationsCreated": 56,
"failures": [
{
"sessionId": "<string>",
"error": "<string>"
}
],
"message": "28 sessions evaluated, 56 evaluations created. 2 skipped: 2 whose specification the run being repeated did not score."
},
"createdAt": "2023-11-07T05:31:56Z"
}{
"error": "Error type",
"message": "Error message description"
}{
"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-....
Path Parameters
Run ID
"run_123"
Body
Run the repetition against a different version. Only for a run the platform launched itself; a run that scored existing sessions refuses it, because those sessions already name their version.
1"version_123"
Resolve the original request again instead of repeating the exact rows that ran, so test cases added since are included. On a run that scored existing sessions it also drops the metrics the source recorded, so the repetition scores with each specification's links as they stand today, which can change the metric set and the credit cost. Defaults to false, which keeps the repetition comparable with its source.
false
Response
Run launched again successfully
"run_123"
"product_123"
"version_123"
"user_123"
Per-product launch number, starting at 1 and never reused
42
Caller-supplied label
"nightly-regression"
The run this one repeats, when POST /runs/{id}/relaunch minted it
"run_122"
LAUNCH when a launch endpoint opened the run, which then closes when that launch ends. CALLER when POST /runs opened it, which only POST /runs/{id}/close ends.
LAUNCH, CALLER "LAUNCH"
RUNNING, COMPLETED, FAILED, CANCELLED "COMPLETED"
Evaluations this run launched
120
Distinct sessions covered by the evaluations of this run
30
The shape of work the platform performed. Null on a run the caller opened, and on one several scoring calls filled.
GENERATE_INFERENCES, EVALUATE_SESSION, EVALUATE_SESSION_BATCH, REPLAY_METRIC, null "GENERATE_INFERENCES"
Queue job the run dispatched, when it queued one. Null on a run the caller opened, and on one several scoring calls filled.
Why the run failed, when it did
The launch request as the platform received it. Null on a run the caller opened, and on one several scoring calls filled.
Show child attributes
Show child attributes
What the request resolved to at dispatch: test cases, sessions and metrics. Keys depend on kind. Null on a run the caller opened, and on one several scoring calls filled.
Show child attributes
Show child attributes
What the scoring did, for a repetition that scores sessions inside the request. Null when the repetition drives the agent again, whose work is queued and reports on the new run itself instead.
Show child attributes
Show child attributes