Get an eval run's report
curl --request GET \
--url https://voice-api.onclarity.com/v1/projects/{projectId}/agents/{agentId}/eval-submissions/{id}/report \
--header 'Authorization: Bearer <token>'import requests
url = "https://voice-api.onclarity.com/v1/projects/{projectId}/agents/{agentId}/eval-submissions/{id}/report"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://voice-api.onclarity.com/v1/projects/{projectId}/agents/{agentId}/eval-submissions/{id}/report', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"submission": {
"id": "sub_01J9",
"project_id": "proj_123",
"created_by": null,
"agent_id": "agent_456",
"judge_id": "judge_01",
"suite_id": "suite_01",
"name": "Booking regression 2026-10-22 14:00",
"description": null,
"runs_per_scenario": 2,
"judge_concurrency": 5,
"judge_max_retries": 3,
"max_parallel_calls": 2,
"status": "active",
"use_isolated_data": false,
"simulator_audio_stack": "hamsa",
"simulator_llm": "gemini",
"simulator_silence_mode": "off",
"simulator_model_config": null,
"agent_version_id": "ver_789",
"agent_version_number": 12,
"error_message": null,
"created_at": "2026-10-22T14:00:00.000Z",
"updated_at": "2026-10-22T14:00:00.000Z",
"judge": {
"id": "judge_01",
"name": "Default judge",
"description": null,
"model": "gemini-3.5-flash",
"prompt_template": "…",
"temperature": 0
},
"suite": {
"id": "suite_01",
"name": "Booking flows",
"description": null,
"scenario_ids": [
"scn_01"
],
"common_test_case_ids": [
"tc_7f3a"
]
},
"scenarios": [
{
"id": "scn_01",
"name": "Caller books for tomorrow",
"description": null,
"simulator_config": {
"prompt": "You want to book a cleaning for tomorrow morning.",
"max_turns": 20
},
"test_case_ids": [],
"test_cases": []
}
],
"common_test_cases": [
{
"id": "tc_7f3a",
"project_id": "proj_123",
"name": "Confirms the booking",
"description": null,
"when_relevant": "The caller asked to book an appointment.",
"success_criteria": "The agent repeats the date and time back and the caller confirms.",
"failure_criteria": "The agent ends the call without confirming the date and time.",
"created_by": null,
"created_at": "2026-10-01T09:00:00.000Z",
"updated_at": "2026-10-01T09:00:00.000Z"
}
],
"runs_completed": 0,
"runs_total": 2,
"judge_counts": {
"pending": 0,
"in_progress": 0,
"done": 0,
"error": 0,
"error_final": 0,
"unusable": 0
}
},
"agent": {
"id": "agent_456",
"name": "Reception agent",
"version_id": "ver_789",
"version_number": 12,
"stack": null
},
"harness": {
"suite": {
"id": "suite_01",
"name": "Booking flows"
},
"judge": {
"id": "judge_01",
"name": "Default judge",
"model": "gemini-3.5-flash"
},
"simulator_audio_stack": "hamsa",
"simulator_llm": "gemini",
"silence_modes": [
"off"
],
"simulator_model_config": null,
"runs_per_scenario": 2,
"max_parallel_calls": 2,
"use_isolated_data": false
},
"progress": {
"percent": 50,
"calls": {
"total": 2,
"completed": 1,
"in_flight": 1,
"failed": 0,
"failed_infra": 0,
"queued": 0
},
"judging": {
"total": 1,
"done": 1,
"in_progress": 0,
"queued": 0,
"error": 0,
"error_retrying": 0,
"error_final": 0,
"unusable": 0
},
"timing": {
"started_at": "2026-10-22T14:05:00.000Z",
"last_activity_at": "2026-10-22T14:09:12.000Z",
"elapsed_ms": 252000,
"eta_ms": null
}
},
"totals": {
"passed": 1,
"failed": 0,
"not_sure": 0,
"not_relevant": 0,
"error": 0,
"verdicts": 1,
"applicable": 1,
"pass_rate": 100,
"pass_rate_wide": 100
},
"by_kind": {
"common": {
"passed": 1,
"failed": 0,
"not_sure": 0,
"not_relevant": 0,
"error": 0,
"verdicts": 1,
"applicable": 1,
"pass_rate": 100,
"pass_rate_wide": 100
},
"scenario": {
"passed": 0,
"failed": 0,
"not_sure": 0,
"not_relevant": 0,
"error": 0,
"verdicts": 0,
"applicable": 0,
"pass_rate": null,
"pass_rate_wide": null
}
},
"criteria": [],
"scenarios": [],
"calls": [],
"latency": {},
"health": {
"checks": [
{
"id": "coverage",
"title": "Verdict coverage",
"status": "pass",
"detail": "Every graded call has verdicts."
}
],
"verdict": "INCOMPLETE"
},
"top_failures": []
}{
"error": "Invalid or revoked token"
}{
"error": "Eval submission not found"
}{
"error": "agent type assist cannot take calls: an assist agent listens to a human-operated call and never speaks",
"code": "AGENT_TYPE_NOT_DISPATCHABLE",
"agent_type": "assist",
"agent_id": "agent_456"
}Runs
Get an eval run's report
Returns the whole run summarized in one read: pass rates overall and per test case and scenario, each call, latency, run-health checks, the agent setup tested and the test setup used. The judge’s reasoning is not included; read it from the verdicts endpoint.
GET
/
v1
/
projects
/
{projectId}
/
agents
/
{agentId}
/
eval-submissions
/
{id}
/
report
Get an eval run's report
curl --request GET \
--url https://voice-api.onclarity.com/v1/projects/{projectId}/agents/{agentId}/eval-submissions/{id}/report \
--header 'Authorization: Bearer <token>'import requests
url = "https://voice-api.onclarity.com/v1/projects/{projectId}/agents/{agentId}/eval-submissions/{id}/report"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://voice-api.onclarity.com/v1/projects/{projectId}/agents/{agentId}/eval-submissions/{id}/report', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"submission": {
"id": "sub_01J9",
"project_id": "proj_123",
"created_by": null,
"agent_id": "agent_456",
"judge_id": "judge_01",
"suite_id": "suite_01",
"name": "Booking regression 2026-10-22 14:00",
"description": null,
"runs_per_scenario": 2,
"judge_concurrency": 5,
"judge_max_retries": 3,
"max_parallel_calls": 2,
"status": "active",
"use_isolated_data": false,
"simulator_audio_stack": "hamsa",
"simulator_llm": "gemini",
"simulator_silence_mode": "off",
"simulator_model_config": null,
"agent_version_id": "ver_789",
"agent_version_number": 12,
"error_message": null,
"created_at": "2026-10-22T14:00:00.000Z",
"updated_at": "2026-10-22T14:00:00.000Z",
"judge": {
"id": "judge_01",
"name": "Default judge",
"description": null,
"model": "gemini-3.5-flash",
"prompt_template": "…",
"temperature": 0
},
"suite": {
"id": "suite_01",
"name": "Booking flows",
"description": null,
"scenario_ids": [
"scn_01"
],
"common_test_case_ids": [
"tc_7f3a"
]
},
"scenarios": [
{
"id": "scn_01",
"name": "Caller books for tomorrow",
"description": null,
"simulator_config": {
"prompt": "You want to book a cleaning for tomorrow morning.",
"max_turns": 20
},
"test_case_ids": [],
"test_cases": []
}
],
"common_test_cases": [
{
"id": "tc_7f3a",
"project_id": "proj_123",
"name": "Confirms the booking",
"description": null,
"when_relevant": "The caller asked to book an appointment.",
"success_criteria": "The agent repeats the date and time back and the caller confirms.",
"failure_criteria": "The agent ends the call without confirming the date and time.",
"created_by": null,
"created_at": "2026-10-01T09:00:00.000Z",
"updated_at": "2026-10-01T09:00:00.000Z"
}
],
"runs_completed": 0,
"runs_total": 2,
"judge_counts": {
"pending": 0,
"in_progress": 0,
"done": 0,
"error": 0,
"error_final": 0,
"unusable": 0
}
},
"agent": {
"id": "agent_456",
"name": "Reception agent",
"version_id": "ver_789",
"version_number": 12,
"stack": null
},
"harness": {
"suite": {
"id": "suite_01",
"name": "Booking flows"
},
"judge": {
"id": "judge_01",
"name": "Default judge",
"model": "gemini-3.5-flash"
},
"simulator_audio_stack": "hamsa",
"simulator_llm": "gemini",
"silence_modes": [
"off"
],
"simulator_model_config": null,
"runs_per_scenario": 2,
"max_parallel_calls": 2,
"use_isolated_data": false
},
"progress": {
"percent": 50,
"calls": {
"total": 2,
"completed": 1,
"in_flight": 1,
"failed": 0,
"failed_infra": 0,
"queued": 0
},
"judging": {
"total": 1,
"done": 1,
"in_progress": 0,
"queued": 0,
"error": 0,
"error_retrying": 0,
"error_final": 0,
"unusable": 0
},
"timing": {
"started_at": "2026-10-22T14:05:00.000Z",
"last_activity_at": "2026-10-22T14:09:12.000Z",
"elapsed_ms": 252000,
"eta_ms": null
}
},
"totals": {
"passed": 1,
"failed": 0,
"not_sure": 0,
"not_relevant": 0,
"error": 0,
"verdicts": 1,
"applicable": 1,
"pass_rate": 100,
"pass_rate_wide": 100
},
"by_kind": {
"common": {
"passed": 1,
"failed": 0,
"not_sure": 0,
"not_relevant": 0,
"error": 0,
"verdicts": 1,
"applicable": 1,
"pass_rate": 100,
"pass_rate_wide": 100
},
"scenario": {
"passed": 0,
"failed": 0,
"not_sure": 0,
"not_relevant": 0,
"error": 0,
"verdicts": 0,
"applicable": 0,
"pass_rate": null,
"pass_rate_wide": null
}
},
"criteria": [],
"scenarios": [],
"calls": [],
"latency": {},
"health": {
"checks": [
{
"id": "coverage",
"title": "Verdict coverage",
"status": "pass",
"detail": "Every graded call has verdicts."
}
],
"verdict": "INCOMPLETE"
},
"top_failures": []
}{
"error": "Invalid or revoked token"
}{
"error": "Eval submission not found"
}{
"error": "agent type assist cannot take calls: an assist agent listens to a human-operated call and never speaks",
"code": "AGENT_TYPE_NOT_DISPATCHABLE",
"agent_type": "assist",
"agent_id": "agent_456"
}Authorizations
Your organization API key (it starts with anek_org_). The same key works on the Voice API and the Support API. See Authentication.
Path Parameters
Response
The report
The whole run, summarized: totals and pass rates, results per test case and per scenario, each call, latency, run-health checks, the agent setup tested and the test setup used. The judge's reasoning is not included; read it from the verdicts endpoint.