curl --request PATCH \
--url https://api.lightsage.com/v2/evals/{eval_id} \
--header 'Content-Type: application/json' \
--header 'X-Lightsage-Api-Key: <api-key>' \
--data '
{
"name": "<string>",
"prompts": [
"<string>"
],
"judges": [
"<string>"
],
"agent": [
"<string>"
],
"persona": "<string>",
"clis": [
"<string>"
],
"mcps": [
{
"id": "<string>"
}
],
"setup_commands": [
"<string>"
],
"cleanup_commands": [
"<string>"
],
"runs": 10,
"tags": [
"<string>"
]
}
'import requests
url = "https://api.lightsage.com/v2/evals/{eval_id}"
payload = {
"name": "<string>",
"prompts": ["<string>"],
"judges": ["<string>"],
"agent": ["<string>"],
"persona": "<string>",
"clis": ["<string>"],
"mcps": [{ "id": "<string>" }],
"setup_commands": ["<string>"],
"cleanup_commands": ["<string>"],
"runs": 10,
"tags": ["<string>"]
}
headers = {
"X-Lightsage-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'X-Lightsage-Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
prompts: ['<string>'],
judges: ['<string>'],
agent: ['<string>'],
persona: '<string>',
clis: ['<string>'],
mcps: [{id: '<string>'}],
setup_commands: ['<string>'],
cleanup_commands: ['<string>'],
runs: 10,
tags: ['<string>']
})
};
fetch('https://api.lightsage.com/v2/evals/{eval_id}', 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.lightsage.com/v2/evals/{eval_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'prompts' => [
'<string>'
],
'judges' => [
'<string>'
],
'agent' => [
'<string>'
],
'persona' => '<string>',
'clis' => [
'<string>'
],
'mcps' => [
[
'id' => '<string>'
]
],
'setup_commands' => [
'<string>'
],
'cleanup_commands' => [
'<string>'
],
'runs' => 10,
'tags' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Lightsage-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.lightsage.com/v2/evals/{eval_id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"prompts\": [\n \"<string>\"\n ],\n \"judges\": [\n \"<string>\"\n ],\n \"agent\": [\n \"<string>\"\n ],\n \"persona\": \"<string>\",\n \"clis\": [\n \"<string>\"\n ],\n \"mcps\": [\n {\n \"id\": \"<string>\"\n }\n ],\n \"setup_commands\": [\n \"<string>\"\n ],\n \"cleanup_commands\": [\n \"<string>\"\n ],\n \"runs\": 10,\n \"tags\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("X-Lightsage-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.patch("https://api.lightsage.com/v2/evals/{eval_id}")
.header("X-Lightsage-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"prompts\": [\n \"<string>\"\n ],\n \"judges\": [\n \"<string>\"\n ],\n \"agent\": [\n \"<string>\"\n ],\n \"persona\": \"<string>\",\n \"clis\": [\n \"<string>\"\n ],\n \"mcps\": [\n {\n \"id\": \"<string>\"\n }\n ],\n \"setup_commands\": [\n \"<string>\"\n ],\n \"cleanup_commands\": [\n \"<string>\"\n ],\n \"runs\": 10,\n \"tags\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lightsage.com/v2/evals/{eval_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["X-Lightsage-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"prompts\": [\n \"<string>\"\n ],\n \"judges\": [\n \"<string>\"\n ],\n \"agent\": [\n \"<string>\"\n ],\n \"persona\": \"<string>\",\n \"clis\": [\n \"<string>\"\n ],\n \"mcps\": [\n {\n \"id\": \"<string>\"\n }\n ],\n \"setup_commands\": [\n \"<string>\"\n ],\n \"cleanup_commands\": [\n \"<string>\"\n ],\n \"runs\": 10,\n \"tags\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"prompts": [
"<string>"
],
"judges": [
"<string>"
],
"agent": [
"<string>"
],
"persona": "<string>",
"clis": [
{
"id": "<string>"
}
],
"mcps": [
{
"id": "<string>"
}
],
"setup_commands": [
"<string>"
],
"cleanup_commands": [
"<string>"
],
"search_grounding": "default",
"runs": 1,
"tags": [
"<string>"
],
"created_at": "<string>",
"updated_at": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Update Eval
Updates a reusable eval simulation definition. Omitted fields remain unchanged. Empty agent, clis, mcps, setup_commands, cleanup_commands, or tags arrays clear those collections, and persona: null clears the saved persona.
curl --request PATCH \
--url https://api.lightsage.com/v2/evals/{eval_id} \
--header 'Content-Type: application/json' \
--header 'X-Lightsage-Api-Key: <api-key>' \
--data '
{
"name": "<string>",
"prompts": [
"<string>"
],
"judges": [
"<string>"
],
"agent": [
"<string>"
],
"persona": "<string>",
"clis": [
"<string>"
],
"mcps": [
{
"id": "<string>"
}
],
"setup_commands": [
"<string>"
],
"cleanup_commands": [
"<string>"
],
"runs": 10,
"tags": [
"<string>"
]
}
'import requests
url = "https://api.lightsage.com/v2/evals/{eval_id}"
payload = {
"name": "<string>",
"prompts": ["<string>"],
"judges": ["<string>"],
"agent": ["<string>"],
"persona": "<string>",
"clis": ["<string>"],
"mcps": [{ "id": "<string>" }],
"setup_commands": ["<string>"],
"cleanup_commands": ["<string>"],
"runs": 10,
"tags": ["<string>"]
}
headers = {
"X-Lightsage-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'X-Lightsage-Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
prompts: ['<string>'],
judges: ['<string>'],
agent: ['<string>'],
persona: '<string>',
clis: ['<string>'],
mcps: [{id: '<string>'}],
setup_commands: ['<string>'],
cleanup_commands: ['<string>'],
runs: 10,
tags: ['<string>']
})
};
fetch('https://api.lightsage.com/v2/evals/{eval_id}', 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.lightsage.com/v2/evals/{eval_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'prompts' => [
'<string>'
],
'judges' => [
'<string>'
],
'agent' => [
'<string>'
],
'persona' => '<string>',
'clis' => [
'<string>'
],
'mcps' => [
[
'id' => '<string>'
]
],
'setup_commands' => [
'<string>'
],
'cleanup_commands' => [
'<string>'
],
'runs' => 10,
'tags' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Lightsage-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.lightsage.com/v2/evals/{eval_id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"prompts\": [\n \"<string>\"\n ],\n \"judges\": [\n \"<string>\"\n ],\n \"agent\": [\n \"<string>\"\n ],\n \"persona\": \"<string>\",\n \"clis\": [\n \"<string>\"\n ],\n \"mcps\": [\n {\n \"id\": \"<string>\"\n }\n ],\n \"setup_commands\": [\n \"<string>\"\n ],\n \"cleanup_commands\": [\n \"<string>\"\n ],\n \"runs\": 10,\n \"tags\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("X-Lightsage-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.patch("https://api.lightsage.com/v2/evals/{eval_id}")
.header("X-Lightsage-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"prompts\": [\n \"<string>\"\n ],\n \"judges\": [\n \"<string>\"\n ],\n \"agent\": [\n \"<string>\"\n ],\n \"persona\": \"<string>\",\n \"clis\": [\n \"<string>\"\n ],\n \"mcps\": [\n {\n \"id\": \"<string>\"\n }\n ],\n \"setup_commands\": [\n \"<string>\"\n ],\n \"cleanup_commands\": [\n \"<string>\"\n ],\n \"runs\": 10,\n \"tags\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lightsage.com/v2/evals/{eval_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["X-Lightsage-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"prompts\": [\n \"<string>\"\n ],\n \"judges\": [\n \"<string>\"\n ],\n \"agent\": [\n \"<string>\"\n ],\n \"persona\": \"<string>\",\n \"clis\": [\n \"<string>\"\n ],\n \"mcps\": [\n {\n \"id\": \"<string>\"\n }\n ],\n \"setup_commands\": [\n \"<string>\"\n ],\n \"cleanup_commands\": [\n \"<string>\"\n ],\n \"runs\": 10,\n \"tags\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"prompts": [
"<string>"
],
"judges": [
"<string>"
],
"agent": [
"<string>"
],
"persona": "<string>",
"clis": [
{
"id": "<string>"
}
],
"mcps": [
{
"id": "<string>"
}
],
"setup_commands": [
"<string>"
],
"cleanup_commands": [
"<string>"
],
"search_grounding": "default",
"runs": 1,
"tags": [
"<string>"
],
"created_at": "<string>",
"updated_at": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
Path Parameters
Body
1 - 1601 - 20 elementsReplacement success criteria for the eval.
1 - 20 elements10Replacement eval persona. Pass null to clear it; omit it to leave the saved value unchanged.
160Replacement saved CLI IDs or shell installation commands. UUID values resolve saved CLIs; every other value is an installation command. Pass an empty array to clear all CLIs.
2020- V2SavedMcpReference
- V2InlineMcpDefinition
Show child attributes
Show child attributes
Replacement setup commands. Pass an empty array to clear all saved setup commands.
20Replacement cleanup commands. Pass an empty array to clear all saved cleanup commands.
20Replacement web-retrieval policy. Omit it to keep the saved value.
disabled, enabled, default 1 <= x <= 20Replacement labels for the eval. Pass an empty array to clear all tags.
20Response
Successful Response
- V2SavedCliReference
- V2InlineCliReference
Show child attributes
Show child attributes
- V2SavedMcpReference
- V2InlineMcpDefinition
Show child attributes
Show child attributes
Saved web-retrieval policy: disabled, enabled, or default.
disabled, enabled, default 1 <= x <= 20