curl --request PATCH \
--url https://api.lightsage.com/v2/agent-preference/evals/{eval_id} \
--header 'Content-Type: application/json' \
--header 'X-Lightsage-Api-Key: <api-key>' \
--data '
{
"name": "<string>",
"prompts": [
"<string>"
],
"agent": [
"<string>"
],
"persona": "<string>",
"runs": 10,
"tags": [
"<string>"
]
}
'import requests
url = "https://api.lightsage.com/v2/agent-preference/evals/{eval_id}"
payload = {
"name": "<string>",
"prompts": ["<string>"],
"agent": ["<string>"],
"persona": "<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>'],
agent: ['<string>'],
persona: '<string>',
runs: 10,
tags: ['<string>']
})
};
fetch('https://api.lightsage.com/v2/agent-preference/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/agent-preference/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>'
],
'agent' => [
'<string>'
],
'persona' => '<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/agent-preference/evals/{eval_id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"prompts\": [\n \"<string>\"\n ],\n \"agent\": [\n \"<string>\"\n ],\n \"persona\": \"<string>\",\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/agent-preference/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 \"agent\": [\n \"<string>\"\n ],\n \"persona\": \"<string>\",\n \"runs\": 10,\n \"tags\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lightsage.com/v2/agent-preference/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 \"agent\": [\n \"<string>\"\n ],\n \"persona\": \"<string>\",\n \"runs\": 10,\n \"tags\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"competitor": {
"id": "<string>",
"name": "<string>",
"domain": "<string>",
"logo_url": "<string>"
},
"prompts": [
"<string>"
],
"judges": [
"<string>"
],
"agent": [
"<string>"
],
"persona": "<string>",
"search_grounding": "default",
"runs": 1,
"tags": [
"<string>"
],
"created_at": "<string>",
"updated_at": "<string>"
}{
"detail": "Agent preference eval not found. Use an eval ID from the agent preference evals list."
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Update Eval
Updates an Agent Preference eval. Omitted fields remain unchanged, an empty agent or tags array clears that collection, and persona: null clears the saved persona. The competitor and the judge that decides the comparison cannot be changed.
curl --request PATCH \
--url https://api.lightsage.com/v2/agent-preference/evals/{eval_id} \
--header 'Content-Type: application/json' \
--header 'X-Lightsage-Api-Key: <api-key>' \
--data '
{
"name": "<string>",
"prompts": [
"<string>"
],
"agent": [
"<string>"
],
"persona": "<string>",
"runs": 10,
"tags": [
"<string>"
]
}
'import requests
url = "https://api.lightsage.com/v2/agent-preference/evals/{eval_id}"
payload = {
"name": "<string>",
"prompts": ["<string>"],
"agent": ["<string>"],
"persona": "<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>'],
agent: ['<string>'],
persona: '<string>',
runs: 10,
tags: ['<string>']
})
};
fetch('https://api.lightsage.com/v2/agent-preference/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/agent-preference/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>'
],
'agent' => [
'<string>'
],
'persona' => '<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/agent-preference/evals/{eval_id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"prompts\": [\n \"<string>\"\n ],\n \"agent\": [\n \"<string>\"\n ],\n \"persona\": \"<string>\",\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/agent-preference/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 \"agent\": [\n \"<string>\"\n ],\n \"persona\": \"<string>\",\n \"runs\": 10,\n \"tags\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lightsage.com/v2/agent-preference/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 \"agent\": [\n \"<string>\"\n ],\n \"persona\": \"<string>\",\n \"runs\": 10,\n \"tags\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"competitor": {
"id": "<string>",
"name": "<string>",
"domain": "<string>",
"logo_url": "<string>"
},
"prompts": [
"<string>"
],
"judges": [
"<string>"
],
"agent": [
"<string>"
],
"persona": "<string>",
"search_grounding": "default",
"runs": 1,
"tags": [
"<string>"
],
"created_at": "<string>",
"updated_at": "<string>"
}{
"detail": "Agent preference eval not found. Use an eval ID from the agent preference evals list."
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
Path Parameters
Body
1 - 160Buying or build questions the agent answers by choosing between your company and the competitor. CLI clients expose this as repeatable --prompt.
1 - 20 elementsRunnable agents from GET /v2/agents. An empty array saves the comparison without default agents. CLI clients expose repeatable --agent.
10Set to null to clear the saved persona.
160Requested web-retrieval behavior for an eval run.
disabled, enabled, default 1 <= x <= 2020Response
Successful Response
Eval ID. Pass it as eval_id to POST /v2/eval-runs to run the comparison.
The competitor your company is compared against. Null when the competitor is no longer tracked.
Show child attributes
Show child attributes
Criteria applied to each response. The first one decides which company the agent recommended and cannot be changed.
Requested web-retrieval behavior for an eval run.
disabled, enabled, default 1 <= x <= 20