---
title: "Get Eval Run"
method: GET
path: "/api/platform/v1/eval-runs/{id}"
tags: ["observability"]
---

# Get Eval Run

`GET /api/platform/v1/eval-runs/{id}`

## Request

- Base URL: `https://docs.amdahl.ai`
- URL: `https://docs.amdahl.ai/api/platform/v1/eval-runs/{id}`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

Fetch one eval run by id: its status and, once complete, the verdict — verdict.headline carries the grade of the copy the caller SUBMITTED beside the grade of the version the eval wrote, plus the pass/partial/fail bucket and per-case + per-grader detail. Use when polling a run started via evals.run or rendering a report card; pass wait_ms (max 30000) to block until it finishes instead of tight-looping. Returns null for a missing id.

## Path parameters

- `id` string, required

## Query parameters

- `wait_ms` integer: Optional long-poll budget in ms, hard-capped at 30000. The read blocks until the run reaches complete / failed / canceled, then returns the SAME body an immediate poll would have returned.

## Response `200`

OK

- object
  - `data` object, required
    - `status` 'queued' | 'running' | 'complete' | 'failed' | 'canceled', required: The run status, mirrored at the ROOT so `data.status` resolves here exactly as it does on POST /evals/run and on /gate, /drafts, /improvement, /evidence. Identical to `run.status`, which is retained. The terminal success value is `complete` — never `completed`.
    - `run` object, required: The run row. Null is returned for a missing or cross-tenant id — the two are deliberately indistinguishable.
      - `id` string, required
      - `eval_slug` string
      - `eval_version` string
      - `status` 'queued' | 'running' | 'complete' | 'failed' | 'canceled', required: Lifecycle state. The terminal success value is `complete` — never `completed`.
      - `verdict` object: The graded report card. Null until the run reaches `complete`.
      - `error_message` string, nullable
      - `created_at` string
      - `finished_at` string, nullable
    - `regrade` object: Present exactly when this run’s evidence pool is pinnable: the parameter set that holds it fixed for the next call. Absent otherwise, never partial.

## Other responses

- `400`: Invalid input - failed schema validation
- `401`: Authentication required
- `403`: Forbidden - missing scope or role
- `404`: Not found
- `500`: Internal server error

---

[API](https://skmtc.dev/amdahl/apis/amdahl-platform-api.md) · [All operations](https://skmtc.dev/amdahl/apis/amdahl-platform-api/llms.txt) · [OpenAPI document](https://skmtc.dev/amdahl/apis/amdahl-platform-api/revisions/d4eee33e2472?raw)
