Skip to main content
POST
Create Eval Run

Headers

authorization
string | null

Body

application/json

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.

target
EvalTarget · object
required

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.

scenario_id
string<uuid> | null
tag
string | null
Required string length: 1 - 64
scenario
InlineScenario · object | null

A 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.

modality
enum<string>
default:text

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.

Available options:
text,
audio
iterations
integer
default:1
Required range: x >= 1

Response

Successful Response

The response is of type Response Create Eval Run V1 Eval Runs Post · object.