auto router

List Shadow Eval Jobs

List shadow eval jobs, newest first, each target with its attempt count so status is accurate. Judged counts, spend, and results ride the detail endpoint only.

get/auto_router/shadow_eval

Query parameters

target_type'key' | 'team' | 'user' nullable

Kind of target to filter on; requires target_id

Kind of target to filter on; requires target_id

target_idstring nullable

Filter to jobs that shadow this target, alone or alongside others

Filter to jobs that shadow this target, alone or alongside others

limitinteger

Newest jobs to return

Newest jobs to return

Response

Successful Response

job_idstring required
router_namesstring[] required

Every auto-router this job runs as a shadow arm. Multi-router jobs sample one slice of traffic and judge every arm against the same real responses

modelsstring[]

Model groups the sampled traffic is narrowed to; empty means every model the targets use

direction'forward' | 'reverse'
baseline_modelstring nullable
judge_modelstring required
shadow_percentagenumber required
created_atstring date-time required
ends_atstring date-time required
stopped_bystring nullable

The operator who stopped the job early, recorded by the stop endpoint; 'unknown' backfilled by migration for jobs that displayed stopped when the column arrived; None when the job ended on its own. Its presence is what makes a job read stopped rather than completed

judged_countinteger nullable

Verdicts recorded; detail endpoint only

error_countinteger nullable

Sampled attempts that errored; detail endpoint only

judge_spendnumber nullable

Judge cost so far; detail endpoint only

last_errorstring nullable

Most recent attempt error; detail endpoint only

router_namestring required

The first router, kept for callers that predate router_names; derived so the two fields can never disagree.

status'running' | 'completed' | 'stopped' required

Three recorded facts, no history-guessing: a stop is stopped_by (the migration backfills it for every job that displayed stopped when the column arrived, so the pre-column population is closed), completion is the window passing or every target spending its budget, and anything else is running. The all-targets-stamped fallback covers only stops written by pre-column pods during a rolling deploy.

Changes