Create Eval Run
Queue a run per scenario. 202: the worker executes them, never this process.
A tag fans out to every scenario carrying it; the runs share one batch id
so a single request has a single readable verdict. Each run is queued
independently, so one that cannot be pushed does not cost the others theirs.
Headers
Body
Run one stored scenario, every scenario carrying a tag (#75), or a scenario supplied inline (#77).
Exactly one of the three. A tag fans out to one run per matching scenario, all sharing a batch id, so one request has one readable verdict — which is what the CLI's single exit code is built on.
extra="forbid" is what makes "no run-level judge" a rule (#119). A run is
what it was queued as: a request that could swap the judge would make two
runs of one scenario incomparable with nothing on either row explaining
why, and quietly ignoring the field is the same outcome with the author
believing otherwise. Name it on the scenario — including the inline one
above, which is where a run-shaped judge: was aiming.
What a run points at (#74).
Three forms, and the difference between the first two matters: an agent row
is one immutable version, so agent pins a version forever — a scenario
targeting it silently stops testing production the moment the next version
is published. agent_name resolves to whatever is published at run time.
inline has no row at all, which is how a prompt or model change is
evaluated before publishing it, and the sandbox a scenario is pointed at
when its tools have real side effects.
1 - 64A scenario supplied on the run instead of stored first (#77).
This is what a local file holds, and why the CLI needs no format of its
own: the file is the API request body, validated by the same parser a
stored scenario is. Nothing is written to eval_scenarios — the run's
scenario_id is null and its resolved_scenario snapshot is the record,
which is the same shape ADR-0017 uses for an inline agent.
Whether the conversation is spoken or typed.
text skips STT and TTS entirely, so it is fast and free and covers the
smallest share of a voice platform's risk; audio is the only mode that
reaches the provider-connect path where most regressions have lived.
text, audio x >= 1Response
Successful Response
The response is of type Response Create Eval Run V1 Eval Runs Post · object.