An evaluation suite groups the test cases and scoring rules used to judge a workflow. Define a suite once, then run it repeatedly as your prompts, models, or workflow versions change. This machine API manages the suite's configuration; add its test cases and workflow versions in the operator console before starting a run.
Suite policy is separate from cases
The suite stores its target association, rubric type, schedule, and canary controls. Create does not accept cases, and clone copies suite fields only. A clone starts without the source cases, disables its schedule and canary, and clears last_scheduled_at, while preserving the source interval and maximum-regression values for later re-enablement.
The request has an `eval_suite` wrapper
Create and patch attributes belong under eval_suite. The response is the suite object itself; list is the one response wrapped under the eval_suites key.
Deletion is destructive
DELETE returns 204 and cascades to the suite's cases, eval runs, and related review history. Prefer a deliberate operator workflow when historical evaluation evidence must be preserved.
Before you begin
The command-line examples require curl and jq; any exception is identified in its introduction.
A workflow target in the same workspace before creating a suite.
A credential with eval_suites:read for list/show or eval_suites:write for mutations.
Operator access to /app/evals/suites/:id when test cases must be added or edited.
How it works
Select the target and rubric
Choose a workspace workflow-target ID and one supported rubric: composite, exact match, status code, or LLM judge. Set an explicit pass threshold if the default 80 percent is unsuitable.
Create the suite, then its cases
POST the wrapped suite fields, retain its ID, and use the operator console to add enabled cases and workflow versions. If omitted, the schedule interval defaults to 1440 minutes and maximum canary regression to 5 percent. Set them explicitly to suit your workflow.
Read before update, clone, or delete
GET the suite to inspect its target and case summaries. Remember that cloning is a configuration starting point, not a full test corpus copy.
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.
Create a scheduled suite
The target must already belong to the authenticated workspace.
HTTP 201 returns the suite directly with status, schedule and canary fields, target summary, timestamps, and eval_cases.
Troubleshooting
Create returns 400 or 422
A missing eval_suite wrapper returns 400 before field validation. With the wrapper present, an invalid name, target, rubric, nonpositive schedule interval, or negative canary regression returns 422. Omitted interval/regression fields receive defaults. Add test cases through the operator console, not a cases array in this request.
The clone has no test cases
That is the shipped contract: clone copies suite fields but not cases. It disables schedule_enabled and canary_enabled and clears last_scheduled_at; it retains schedule_interval_minutes and canary_max_regression. Add the new corpus explicitly in the operator UI.
A suite ID returns 404
IDs are workspace-scoped. Verify the credential belongs to the suite's workspace and that the suite was not deleted by another operator.
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.
GET
/api/v1/eval_suites
API key / access token
List eval suites
eval_suites:read
Description
Returns all eval suites for the authenticated workspace, including their eval cases and associated workflow targets.
Creates a new eval suite linked to a workflow target. The suite stores rubrics and scheduling. Eval cases and workflow versions have no API create/update/archive/baseline routes — operators manage them on /app/evals/suites/:id and /app/evals/targets/:id. This request does not accept a cases payload.
Auth
API key / access token
Required Scopes
eval_suites:write
Request Body
Field
Type
Required
Description
eval_suite
object
Yes
Eval suite attributes
eval_suite.name
string
Yes
Suite name
eval_suite.description
string
No
Suite description
eval_suite.slug
string
No
URL-safe slug (auto-generated from name if omitted)
eval_suite.workflow_target_id
string
Yes
Workflow target UUID to evaluate
eval_suite.canary_enabled
boolean
No
Enable canary gate (default: false)
eval_suite.canary_max_regression
number
No
Nonnegative maximum canary regression percentage; defaults to 5.0 when omitted
Deletes an eval suite and cascades to its eval cases, eval runs, and related review history.
Auth
API key / access token
Required Scopes
eval_suites:write
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/eval_suites/:id/clone
API key / access token
Clone an eval suite
eval_suites:write
Description
Creates a copy of an existing eval suite from suite fields only. Eval cases are not copied. Optionally override the name under the eval_suite wrapper. Schedule interval and canary regression numerics are preserved, while scheduling/canary enabled flags are disabled on the clone.