These eval endpoints turn runtime failures into repeatable quality checks. They read and update existing suites, retry or cancel runs, resolve human-review tasks, and promote failure-group suggestions into real eval cases.
Four connected queues
Suites define cases and release settings; runs produce results; review tasks hold ambiguous outcomes; incident suggestions turn observed failures into proposed cases. IDs link those queues without moving data across workspaces.
Retries create new evidence
Retry creates a fresh queued run from any source status rather than rewriting history. Operationally, prefer retrying failed or cancelled work after diagnosing the cause; this is guidance, not a failed-only runtime restriction. Cancelling stops queued or running work and keeps any results already written; a 400 cannot_cancel response means the run had already finished.
Creation is split across surfaces
Operator JSON does not POST suites or runs. Create targets and versions at /app/evals/targets, suites at /app/evals/suites, cases on a suite page, and runs at /app/evals/runs. Scoped machine clients may POST /api/v1/eval_suites and /api/v1/eval_runs.
Clone is a new suite shell
Cloning copies suite configuration but not eval cases. It disables schedule and canary, clears last_scheduled_at, and preserves the source interval and regression threshold for later re-enablement. Add cases deliberately before running the clone.
Before you begin
A signed-in browser session with a selected workspace backed by an active membership is required; an archived workspace remains readable but rejects mutations. Every /api/v1/operator endpoint rejects API credentials and bearer tokens, regardless of their scopes.
Owners, admins, and members can perform eval mutations; auditors can only read. Referenced suites, runs, failure groups, and workflow targets must belong to the selected workspace.
Define a workflow target and a rubric-backed suite before expecting runs or promotion gates to be meaningful.
How it works
Start with suite health
Create the target, suite, cases, and first run through those supported paths. Then use operator JSON to update or clone the suite and filter existing runs by suite, target, status, or kind.
Close the learning loop
Review failed runs and pending review tasks. Generate or edit an incident suggestion from a failure group, choose its destination suite, promote it, and confirm the resulting case appears before relying on the regression gate.
Examples
These examples are illustrative. Replace the sample values with your own.
Keep credentials in environment variables or a secret manager, never in client-side code.
Inspect active eval suites
This reads full suite summaries, including their workflow target and enabled case summaries.
javascript
const response = await fetch("/api/v1/operator/eval_suites?filter%5Bstatus%5D=active", {
credentials: "same-origin",
headers: {"Accept": "application/json"}
});
const body = await response.json();
if (!response.ok) throw new Error(`${response.status}: ${body.detail}`);
console.log(body);
What to expect
200 OK with {"eval_suites": []} when no active suite exists. Populated rows include status, scheduling and canary settings, workflow_target, and eval_cases.
Troubleshooting
An eval resource is 404
The identifier may exist in another workspace, but scoped queries intentionally return 404. Confirm the selected workspace and follow IDs returned by its own list endpoints.
A run will not cancel
Queued and running runs are cancellable; completed, failed, and cancelled runs are not. Re-read the run: if it is already terminal, preserve that evidence and decide whether a later retry is appropriate.
Endpoint reference
Ready to integrate? Open an endpoint for its required permissions, request fields,
response format, and status codes. The examples above explain the workflow;
these details define each individual request.
POST
/api/v1/operator/failure_groups/:id/generate_eval_draft
Web Session
Generate an incident-based eval draft
Description
Creates a draft incident-eval suggestion from a failure group so operators can refine and promote it into a suite.
Auth
Web Session
Request Body
Field
Type
Required
Description
incident_eval_suggestion
object
No
Incident eval suggestion attributes
incident_eval_suggestion.proposed_name
string
No
Optional display name override
incident_eval_suggestion.target_eval_suite_id
string
No
Optional destination eval suite UUID
incident_eval_suggestion.proposed_description
string
No
Optional draft description override
Parameters
Name
In
Type
Required
Description
id
path
string
Yes
Failure group UUID
Responses
201
Incident eval draft created
Returns: IncidentEvalSuggestion
404
Failure group not found
GET
/api/v1/operator/eval_suites
Web Session
List eval suites
Description
Returns the full unpaginated eval suite list for the current workspace. Only nested filter[status] (active | archived) and filter[workflow_target_id] (UUID) are read and validated. limit, offset, eval_suite_id, and run_kind are not list parameters on this endpoint.
Auth
Web Session
Parameters
Name
In
Type
Required
Description
filter[status]
query
string
No
Filter by suite lifecycle status
filter[workflow_target_id]
query
string
No
Filter by workflow target UUID
Responses
200
Full unpaginated list of eval suites
Returns: EvalSuiteList
GET
/api/v1/operator/eval_suites/:id
Web Session
Get eval suite details
Description
Returns details of a specific eval suite.
Auth
Web Session
Parameters
Name
In
Type
Required
Description
id
path
string
Yes
Eval suite UUID
Responses
200
Eval suite details
Returns: EvalSuite
404
Eval suite not found
PATCH
/api/v1/operator/eval_suites/:id
Web Session
Update eval suite
Description
Updates an eval suite's configuration.
Auth
Web Session
Request Body
Field
Type
Required
Description
eval_suite
object
Yes
Eval suite attributes. The controller pattern-matches {"eval_suite" => attrs}; a flat body does not match a clause.
Maximum allowed pass-rate regression in percentage points
eval_suite.pass_threshold
string
No
Passing threshold percentage (e.g. 85.0)
eval_suite.schedule_enabled
boolean
No
Enables periodic automated scheduling
eval_suite.schedule_interval_minutes
integer
No
Scheduling interval in minutes
eval_suite.baseline_version_id
string
No
Baseline workflow version UUID
eval_suite.is_release_gate
boolean
No
Whether this suite gates release readiness
Parameters
Name
In
Type
Required
Description
id
path
string
Yes
Eval suite UUID
Responses
200
Eval suite updated
Returns: EvalSuite
404
Eval suite not found
DELETE
/api/v1/operator/eval_suites/:id
Web Session
Delete eval suite
Description
Deletes an eval suite and cascades to its eval cases, eval runs, and related review history.
Auth
Web Session
Parameters
Name
In
Type
Required
Description
id
path
string
Yes
Eval suite UUID
Responses
204
Eval suite deleted
404
Eval suite not found
POST
/api/v1/operator/eval_suites/:id/clone
Web Session
Clone eval suite
Description
Creates a copy of an eval suite from suite fields only. clone/3 does not copy eval_cases. Schedule and canary flags are reset. The body must be wrapped as {"eval_suite": {"name": "..."}}; a flat body does not match a clause.
Auth
Web Session
Request Body
Field
Type
Required
Description
eval_suite
object
Yes
Override attributes for the cloned suite
eval_suite.name
string
No
Name for the cloned suite (default: Copy of <original>)
Parameters
Name
In
Type
Required
Description
id
path
string
Yes
Eval suite UUID to clone
Responses
201
Eval suite cloned
Returns: EvalSuite
404
Eval suite not found
GET
/api/v1/operator/eval_runs
Web Session
List eval runs (operator)
Description
Returns a paginated eval-run list for the current workspace. Nested filter[status|eval_suite_id|workflow_target_id|run_kind|hiring_id|provider|provider_run_id|engagement_id|eval_run_id] plus limit (0-100, default 50) and offset (0-10000) are applied. Correlation filters remain workspace-scoped. The JSON envelope is {eval_runs, pagination}.
Auth
Web Session
Parameters
Name
In
Type
Required
Description
filter[status]
query
string
No
Filter by run status
filter[eval_suite_id]
query
string
No
Eval suite UUID
filter[workflow_target_id]
query
string
No
Workflow target UUID
filter[run_kind]
query
string
No
Filter by run kind
filter[provider]
query
string
No
Canonical provider name in the correlation envelope
filter[hiring_id]
query
string
No
Marketplace hiring identifier
filter[provider_run_id]
query
string
No
Provider run identifier supplied by the originating runtime
Returns detailed information for a single eval run.
Auth
Web Session
Parameters
Name
In
Type
Required
Description
id
path
string
Yes
Eval run UUID
Responses
200
Eval run details
Returns: EvalRun
404
Eval run not found
POST
/api/v1/operator/eval_runs/:id/retry
Web Session
Retry eval run
Description
Retries a failed eval run.
Auth
Web Session
Parameters
Name
In
Type
Required
Description
id
path
string
Yes
Eval run UUID
Responses
201
New eval run created
Returns: EvalRun
404
Eval run not found
POST
/api/v1/operator/eval_runs/:id/cancel
Web Session
Cancel eval run
Description
Cancels a queued or running eval run: status becomes cancelled and its pending worker job is cancelled. A case already executing may finish, and results already written are kept, but the run stays cancelled. A completed, failed, or cancelled run returns 400 cannot_cancel.
Auth
Web Session
Parameters
Name
In
Type
Required
Description
id
path
string
Yes
Eval run UUID
Responses
200
Eval run cancelled
Returns: EvalRun
400
cannot_cancel — the run already finished (completed, failed, or cancelled)
404
Eval run not found
GET
/api/v1/operator/eval_reviews
Web Session
List eval review tasks
Description
Returns one page of pending or completed review tasks created from errored, failed, llm_judge-scored or review_required eval results, newest first. Pass next_cursor back as cursor for older tasks; it is null on the last page.
Auth
Web Session
Parameters
Name
In
Type
Required
Description
status
query
string
No
Filter by review status
eval_run_id
query
string
No
Filter by eval run UUID
limit
query
integer
No
Maximum review tasks to return (default 100, maximum 500)
cursor
query
string
No
Opaque next_cursor from the previous page
Responses
200
Page of eval review tasks with next_cursor
Returns: EvalReviewTaskList
400
Invalid cursor
POST
/api/v1/operator/eval_reviews/:id/resolve
Web Session
Resolve an eval review task
Description
Approves an automated result or revises the final score and pass state for an eval case result.
Auth
Web Session
Request Body
Field
Type
Required
Description
decision
string (approved, revised)
No
Review decision
decision_notes
string
No
Operator notes for the review decision
final_passed
boolean
No
Final pass/fail when revising
final_score
string
No
Final score (0-100) when revising
Parameters
Name
In
Type
Required
Description
id
path
string
Yes
Eval review task UUID
Responses
200
Eval review task resolved
Returns: EvalReviewTask
404
Eval review task not found
409
The review task was already resolved; the earlier decision stands
422
Validation failed, for example final_score outside 0-100
GET
/api/v1/operator/incident_eval_suggestions
Web Session
List incident-generated eval drafts
Description
Returns incident-eval suggestions generated from failure groups, including drafts awaiting review or promotion.
Auth
Web Session
Parameters
Name
In
Type
Required
Description
status
query
string
No
Filter by suggestion status
failure_group_id
query
string
No
Filter by failure group UUID
workflow_target_id
query
string
No
Filter by workflow target UUID
Responses
200
List of incident eval suggestions
Returns: IncidentEvalSuggestionList
PATCH
/api/v1/operator/incident_eval_suggestions/:id
Web Session
Update an incident eval suggestion
Description
Edits a draft incident suggestion or marks it approved or rejected before promotion.
Auth
Web Session
Request Body
Field
Type
Required
Description
status
string (draft, approved, rejected)
No
Suggestion status
proposed_name
string
No
Draft eval case name
target_eval_suite_id
string
No
Destination eval suite UUID
proposed_description
string
No
Draft eval case description
proposed_expected_assertions
object
No
Suggested assertions
proposed_input_payload
object
No
Suggested input payload
proposed_policy_expectations
object
No
Suggested policy expectations
rationale
string
No
Why this incident should become a test
Parameters
Name
In
Type
Required
Description
id
path
string
Yes
Incident eval suggestion UUID
Responses
200
Incident eval suggestion updated
Returns: IncidentEvalSuggestion
400
Invalid status transition or target eval suite
404
Incident eval suggestion not found
409
Incident eval suggestion is already finalized
POST
/api/v1/operator/incident_eval_suggestions/:id/promote
Web Session
Promote an incident suggestion into an eval case
Description
Converts an approved incident suggestion into a real eval case in the selected suite.
Auth
Web Session
Request Body
Field
Type
Required
Description
target_eval_suite_id
string
No
Destination eval suite UUID when not already set on the suggestion
Parameters
Name
In
Type
Required
Description
id
path
string
Yes
Incident eval suggestion UUID
Responses
201
Incident suggestion promoted
Returns: IncidentEvalSuggestion
400
Invalid target eval suite
404
Incident eval suggestion not found
409
Incident eval suggestion has already been promoted or rejected