---
title: "Read a run's current scores"
method: GET
path: "/factory/runs/{run_id}/scores"
tags: ["Factories", "Scorers"]
---

# Read a run's current scores

`GET /factory/runs/{run_id}/scores`

## Request

- Base URL: `https://app.warp.dev/api/v1`
- URL: `https://app.warp.dev/api/v1/factory/runs/{run_id}/scores`
- Auth: HTTP bearer

List the current live attempt for each evaluation that has attempted
the given run, most recent attempt first. Excludes a deleted
evaluation's data.
Requires only view access to the run, since reading scores is part of viewing
the run.

## Path parameters

- `run_id` string, required

## Response `200`

The run's current scores

- GetRunScoresResponse
  - `run_id` string, required: The run these scores belong to
  - `scores` RunScoreItem[], required: One entry per evaluation that has attempted the run, most recent attempt first
    - `scorer_uid` string, uuid, required: Stable scorer UUID; new scorers use UUIDv4. Nil UUIDs are invalid.
    - `scorer_id` integer, required: The evaluation that attempted this run
    - `scorer_name` string, required: Display name of the evaluation
    - `stage_name` string: Blueprint stage this attempt evaluates; present only for stage scorers
    - `attempt_status` 'in_flight' | 'scored' | 'failed', required: Classification of a run's current attempt against one evaluation. "scored" takes precedence over in-flight: a live score reads as scored even while a replacement judge runs, and is_in_flight reports that overlap independently.
    - `is_in_flight` boolean, required: True when a non-terminal judge run currently holds this pair
    - `trigger_source` 'automatic' | 'manual', required: Whether the current attempt was requested by an automatic scoring dispatch or a manual dispatch request
    - `classification` string, nullable: The live classification; absent when there is no live score
    - `attempted_at` string, date-time, required: When the evaluation last attempted this run
    - `scored_at` string, date-time, nullable: When the live score was recorded; absent when there is no live score
    - `scoring_run_id` string, nullable: The Warp run that performed the judging; absent when scoring was never dispatched for this attempt

## Other responses

- `401`: Authentication required
- `403`: Factory access is not enabled for the authenticated principal
- `404`: Run not found, or the caller cannot view it
- `500`: Internal server error

## Changes

- **2026-11-04** `4b5d145669be`: 1 info
  - added the optional property `scores/items/stage_name` to the response with the `200` status
- **2026-10-21** `7ee3ba55debc`: 2 info
  - api tag `factory-scorers` added
  - api tag `factory` removed
- **2026-10-15** `f4630aae17ba`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/warp/apis/oz-agent-api/changes/factory/runs/:run_id/scores/get.md)

---

[API](https://skmtc.dev/warp/apis/oz-agent-api.md) - [All operations](https://skmtc.dev/warp/apis/oz-agent-api/llms.txt) - [OpenAPI document](https://skmtc.dev/warp/apis/oz-agent-api/revisions/4b5d145669be?raw)
