Log in Create workspace
Skip to content

API reference

Operator - Evals

Operate eval suites, runs, reviews, and incident-derived regression candidates.

Jump to 15 endpoints
On this page

Overview

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

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

  2. 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.
eval_suite.name string No Suite name
eval_suite.status string (active, archived) No Suite lifecycle status
eval_suite.description string No Suite description
eval_suite.canary_enabled boolean No Enables canary regression-based release gate checks
eval_suite.canary_max_regression string No 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
filter[engagement_id] query string No AgentOps engagement UUID
filter[eval_run_id] query string No Correlated AgentOps eval UUID
limit query integer No Page size from 0 to 100 (default 50)
offset query integer No Zero-based offset up to 10000 (default 0)
Responses
200

Paginated list of eval runs

Returns: EvalRunList

Example
{
  "eval_runs": [
    {
      "average_cost": null,
      "average_latency_ms": null,
      "candidate_workflow_version": null,
      "candidate_workflow_version_id": null,
      "correlation": {
        "contract_version": "correlation/v1",
        "eval_run_id": "d0b91d0c-0f4b-4a28-8d9d-ccf0c427d6e8",
        "provider": "provider-runtime",
        "provider_run_id": "provider-run-example"
      },
      "eval_suite": null,
      "eval_suite_id": "9e1f1538-ff37-48f0-a2f9-65066d7d6699",
      "failed_cases": 2,
      "finished_at": "2026-03-20T14:05:00Z",
      "id": "d0b91d0c-0f4b-4a28-8d9d-ccf0c427d6e8",
      "inserted_at": "2026-03-20T14:00:00Z",
      "pass_rate": "0.85",
      "passed_cases": 8,
      "results": [],
      "review_counts": {
        "approved": 0,
        "pending": 0,
        "revised": 0,
        "total": 0,
        "unreviewed": 0
      },
      "reviewed_pass_rate": null,
      "run_kind": "standard",
      "segments": [],
      "shadow_summary": null,
      "source_failure_group": null,
      "source_failure_group_id": null,
      "started_at": "2026-03-20T14:00:00Z",
      "status": "completed",
      "summary": null,
      "total_cases": 10,
      "triggered_by_id": null,
      "updated_at": "2026-03-20T14:05:00Z",
      "workflow_target": null,
      "workflow_target_id": null,
      "workflow_version": null,
      "workflow_version_id": null
    }
  ],
  "pagination": {
    "limit": 50,
    "offset": 0
  }
}
GET
/api/v1/operator/eval_runs/:id Web Session

Get eval run (operator)

Description

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

Where to go next

see also