curl --request PATCH \
--url https://api.pandaprobe.com/evaluations/trace-scores/{score_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"value": "<string>",
"reason": "<string>",
"metadata": {}
}
'import requests
url = "https://api.pandaprobe.com/evaluations/trace-scores/{score_id}"
payload = {
"value": "<string>",
"reason": "<string>",
"metadata": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({value: '<string>', reason: '<string>', metadata: {}})
};
fetch('https://api.pandaprobe.com/evaluations/trace-scores/{score_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.pandaprobe.com/evaluations/trace-scores/{score_id}"
payload := strings.NewReader("{\n \"value\": \"<string>\",\n \"reason\": \"<string>\",\n \"metadata\": {}\n}")
req, _ := http.NewRequest("PATCH", 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))
}{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"trace_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"value": "<string>",
"status": "SUCCESS",
"source": "AUTOMATED",
"created_at": "<string>",
"project_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"data_type": "NUMERIC",
"eval_run_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"author_user_id": "<string>",
"reason": "<string>",
"environment": "<string>",
"config_id": "<string>",
"metadata": {},
"updated_at": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Update Trace Score
Manually edit a trace score.
Only value, reason, and metadata can be changed by the
caller. status is automatically set to SUCCESS, source is
changed to ANNOTATION, and updated_at is set to now.
Auth: Bearer + X-Project-ID | X-API-Key + X-Project-Name
curl --request PATCH \
--url https://api.pandaprobe.com/evaluations/trace-scores/{score_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"value": "<string>",
"reason": "<string>",
"metadata": {}
}
'import requests
url = "https://api.pandaprobe.com/evaluations/trace-scores/{score_id}"
payload = {
"value": "<string>",
"reason": "<string>",
"metadata": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({value: '<string>', reason: '<string>', metadata: {}})
};
fetch('https://api.pandaprobe.com/evaluations/trace-scores/{score_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.pandaprobe.com/evaluations/trace-scores/{score_id}"
payload := strings.NewReader("{\n \"value\": \"<string>\",\n \"reason\": \"<string>\",\n \"metadata\": {}\n}")
req, _ := http.NewRequest("PATCH", 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))
}{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"trace_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"value": "<string>",
"status": "SUCCESS",
"source": "AUTOMATED",
"created_at": "<string>",
"project_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"data_type": "NUMERIC",
"eval_run_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"author_user_id": "<string>",
"reason": "<string>",
"environment": "<string>",
"config_id": "<string>",
"metadata": {},
"updated_at": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Body
Editable fields for a trace score.
All fields are optional -- only provided fields are updated.
status is set to SUCCESS automatically on save, and
source is changed to ANNOTATION to indicate human edit.
updated_at is also set automatically.
Response
Successful Response
Full trace score representation used by both list and detail endpoints.
Outcome of a trace score evaluation attempt.
SUCCESS, FAILED, PENDING Who produced the score judgment (not how it arrived).
AUTOMATED -- the eval system's LLM judge produced this score ANNOTATION -- a human assigned this score manually PROGRAMMATIC -- external code submitted this score via API/SDK
AUTOMATED, ANNOTATION, PROGRAMMATIC Data type for a trace score value.
NUMERIC, BOOLEAN, CATEGORICAL 
