Evals
HTTP API routes for evals and held-out evidence.
| Route | Use | CLI equivalent |
|---|---|---|
GET /evals | List evals. | ax evals list |
GET /evals/{eval_id} | Get an eval. | ax evals show |
GET /evals/{eval_id}/trend | Read grader trends. | ax evals trend |
GET /evals/{eval_id}/results | List eval results. | ax evals results |
GET /evals/{eval_id}/results/{run_id}/{case_key} | Read a case result. | MCP: eval_result_get |
GET /evals/{eval_id}/results/{run_id}/{case_key}/detail | Read result assertions and events. | MCP: eval_result_detail |
GET /evals/{eval_id}/runs | List eval runs. | MCP: eval_runs |
GET /evals/runs/{run_id} | Read an eval run. | MCP: eval_run_get |
All routes require a bearer API key and organization access with agent evals
enabled. Supply org_id when the key belongs to several organizations. GET
parameters use snake_case. Write envelope fields use lowerCamelCase; fields
inside values keep snake_case (case_key, split_ratio). Records retain
their original snake_case fields. Arguments are optional unless marked required.
List routes return {rows, nextPageToken}. Pass page_size (default 50,
maximum 200) and page_token to continue. Single-record routes return {record}.
Test-split results and snapshot cases stay redacted until your user explicitly
records a reveal for that exact dataset version. The response preserves
redacted_held_out: true. Detail reads return HTTP 412 with
error: "failed_precondition" and a message naming RecordReveal when a reveal
is required. No GET records a reveal.
GET /api/v1/evals
List evals.
curl -H "Authorization: Bearer $AX_API_KEY" \
"https://app.514.ax/api/v1/evals?agent_id=$AGENT_ID"| Parameter | What it does |
|---|---|
agent_id | Required. Context agent UUID. |
GET /api/v1/evals/{eval_id}
Get an eval.
curl -H "Authorization: Bearer $AX_API_KEY" \
"https://app.514.ax/api/v1/evals/${EVAL_ID}?agent_id=$AGENT_ID"| Parameter | What it does |
|---|---|
agent_id | Required. Context agent UUID. |
GET /api/v1/evals/{eval_id}/trend
Read grader trends.
curl -H "Authorization: Bearer $AX_API_KEY" \
"https://app.514.ax/api/v1/evals/${EVAL_ID}/trend?agent_id=$AGENT_ID"| Parameter | What it does |
|---|---|
agent_id | Required. Context agent UUID. |
GET /api/v1/evals/{eval_id}/results
List eval results.
curl -H "Authorization: Bearer $AX_API_KEY" \
"https://app.514.ax/api/v1/evals/${EVAL_ID}/results?agent_id=$AGENT_ID"| Parameter | What it does |
|---|---|
agent_id | Required. Context agent UUID. |
split | Optional train, validation or test filter. |
GET /api/v1/evals/{eval_id}/results/{run_id}/{case_key}
Read a case result.
curl -H "Authorization: Bearer $AX_API_KEY" \
"https://app.514.ax/api/v1/evals/${EVAL_ID}/results/${RUN_ID}/${CASE_KEY}?agent_id=$AGENT_ID&dataset_id=$DATASET_ID"| Parameter | What it does |
|---|---|
agent_id | Required. Context agent UUID. |
dataset_id | Required. Parent dataset UUID. |
GET /api/v1/evals/{eval_id}/results/{run_id}/{case_key}/detail
Read result assertions and events.
curl -H "Authorization: Bearer $AX_API_KEY" \
"https://app.514.ax/api/v1/evals/${EVAL_ID}/results/${RUN_ID}/${CASE_KEY}/detail?agent_id=$AGENT_ID&dataset_id=$DATASET_ID"| Parameter | What it does |
|---|---|
agent_id | Required. Context agent UUID. |
dataset_id | Required. Parent dataset UUID. |
assertions_page_token | Optional assertions cursor. |
events_page_token | Optional events cursor. |
Returns {result, assertions, events, assertionsNextPageToken, eventsNextPageToken}.
Each evidence list has an independent cursor; page_size bounds each.
GET /api/v1/evals/{eval_id}/runs
List eval runs.
curl -H "Authorization: Bearer $AX_API_KEY" \
"https://app.514.ax/api/v1/evals/${EVAL_ID}/runs?agent_id=$AGENT_ID"| Parameter | What it does |
|---|---|
agent_id | Required. Context agent UUID. |
GET /api/v1/evals/runs/{run_id}
Read an eval run.
curl -H "Authorization: Bearer $AX_API_KEY" \
"https://app.514.ax/api/v1/evals/runs/${RUN_ID}?agent_id=$AGENT_ID"| Parameter | What it does |
|---|---|
agent_id | Required. Context agent UUID. |