Get an eval run's status
curl --request GET \
--url https://voice-api.onclarity.com/v1/projects/{projectId}/eval-submissions/{id}/status \
--header 'Authorization: Bearer <token>'import requests
url = "https://voice-api.onclarity.com/v1/projects/{projectId}/eval-submissions/{id}/status"
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}/eval-submissions/{id}/status', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"state": "in_progress",
"status": "active",
"error_message": null,
"runs_completed": 1,
"runs_total": 2,
"judge_counts": {
"pending": 0,
"in_progress": 0,
"done": 1,
"error": 0,
"error_final": 0,
"unusable": 0
},
"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
}
}
}{
"error": "Invalid or revoked token"
}{
"error": "Eval submission not found"
}Eval submissions
Get an eval run's status
A light read for polling: the run’s state (not_started, in_progress, paused, failed, completed), the reason it paused itself if it did, and a progress breakdown of calls and grading with an estimated time remaining.
GET
/
v1
/
projects
/
{projectId}
/
eval-submissions
/
{id}
/
status
Get an eval run's status
curl --request GET \
--url https://voice-api.onclarity.com/v1/projects/{projectId}/eval-submissions/{id}/status \
--header 'Authorization: Bearer <token>'import requests
url = "https://voice-api.onclarity.com/v1/projects/{projectId}/eval-submissions/{id}/status"
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}/eval-submissions/{id}/status', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"state": "in_progress",
"status": "active",
"error_message": null,
"runs_completed": 1,
"runs_total": 2,
"judge_counts": {
"pending": 0,
"in_progress": 0,
"done": 1,
"error": 0,
"error_final": 0,
"unusable": 0
},
"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
}
}
}{
"error": "Invalid or revoked token"
}{
"error": "Eval submission not found"
}Authorizations
Your organization API key (it starts with anek_org_). The same key works on the Voice API and the Support API. See Authentication.
Response
The run's status
A light status read for polling a run.
Available options:
not_started, in_progress, paused, failed, completed Available options:
active, paused Calls of this run by grading state.
Show child attributes
Show child attributes
How far along the run is.
Show child attributes
Show child attributes