---
title: "Get an eval run"
method: GET
path: "/v1/ai/eval/runs/{runId}"
tags: ["AI Eval"]
---

# Get an eval run

`GET /v1/ai/eval/runs/{runId}`

Get an eval run with every per-prompt result row, including the underlying agentic job state and any scoring data.

## Path parameters

- `runId` string, uuid, required — The unique identifier of the eval run.

## Response `200`

Run detail.

- EvalRunsGetResponse
  - `run` EvalRunDetail, required — The newly created run with its initial results.
    - `branch_id` string, uuid, nullable, required — Optional branch ID the run was executed against. Null when run against the main shared model.
    - `branch_name` string, nullable, required — Display name for the branch, if `branch_id` is set.
    - `completed_at` string, nullable, required — ISO 8601 timestamp when the run reached a terminal state.
    - `created_at` string, nullable, required — ISO 8601 timestamp when the run was created.
    - `description` string, nullable, required — Optional human-readable description for the run.
    - `id` string, uuid, required — Unique identifier for the run.
    - `is_archived` boolean, required — Whether the run has been archived.
    - `model_id` string, uuid, required — The shared model this run was executed against.
    - `prompt_set_id` string, uuid, required — The prompt set this run was created from.
    - `results` EvalRunResult[], required — Per-prompt results for this run, ordered by their creation order in the prompt set.
      - `agentic_job` EvalRunResultAgenticJob, required
        - `conversation_id` string, uuid, nullable, required — Conversation the agentic job belongs to.
        - `id` string, uuid, required — Agentic job identifier.
        - `state` 'CANCELLED' | 'COMPLETE' | 'DELIVERING' | 'EXECUTING' | 'FAILED' | 'QUEUED', required — Current state of the agentic job that ran this prompt.
      - `cost` number, nullable, required — Total LLM cost (USD) for this prompt, if available.
      - `error_reason` string, nullable, required — Failure reason string for prompts whose underlying job failed.
      - `id` string, uuid, required — Unique identifier for the run result row.
      - `prompt` string, required — The prompt text that was evaluated.
      - `score` number, nullable, required — Numeric judge score for this prompt result, if scoring ran.
      - `scoring_cost` number, nullable, required — Total LLM cost (USD) for scoring this prompt result.
      - `timing_ms` integer, nullable, required — Wall-clock duration of the underlying job in milliseconds.
    - `run_number` integer, required — Sequential, per-prompt-set run number.
    - `status` 'RUNNING' | 'COMPLETE' | 'CANCELLED', required — Run-level lifecycle. Flips to a terminal state (COMPLETE or CANCELLED) exactly once.

## Other responses

- `400` — Invalid `runId` — must be a UUID.
- `401` — Missing or invalid API key.
- `403` — Insufficient permissions.
- `404` — Run not found.

---

[API](https://skmtc.net/omni/apis/omni-api.md) · [All operations](https://skmtc.net/omni/apis/omni-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/omni/omni-api/revisions/6b02f7349d0e/schema)
