For agents

Evaluation API

Evaluations select shadow decisions over a defined observation window and compare integration metrics with recorded success criteria. Use them to measure policy behavior, evidence coverage, and application outcomes. Paid evaluation terms are handled separately through your commercial agreement.

Define and close a study

Create the evaluation with the intended action keys and success criteria before interpreting results. Supported criteria concern shadow-decision counts, abstention, and outcome coverage. Supply timezone-aware boundaries where used. Keep policy and application changes documented alongside the evaluation.

The report includes the selected decision distribution, coverage, insufficient-evidence reasons, challenge and outcome metrics, operator-change indicator counts, latency summaries, and criterion results. The operator-change count is returned as experimental_operator_change_indicators and counts decisions carrying operator_change.detected, rather than independently verified attacks.

The result is passed whenever all recorded criteria are met. Otherwise it is in_progress for an open study or failed for a closed study. An open study can pass before closure; close it to fix the observation cutoff.

abstention_rate is the fraction of selected shadow decisions carrying decision.insufficient_evidence; it is not simply the fraction labeled hold or deny. false_challenge_proxy is the fraction of challenge decisions subsequently labeled executed or manually_approved. That proxy does not establish that those challenges were unnecessary. Outcome coverage is the fraction of selected decisions with a timely recorded outcome.

Closing fixes the cutoff to the earlier of the planned end and closing time; repeated closing preserves it. Later decisions and outcomes are excluded. Save the report before relevant trace retention removes underlying data required for your review.

Interpretation boundary

Interpret results with the selected sample, outcome coverage, and individual criteria. Your review process establishes the basis for customer-reported labels. Identify synthetic fixtures separately from participant observations and retain exclusions that affect how you apply the result to your workflow.

See Evaluate for protocol design and Commercial model for paid evaluation terms. The operation contracts below describe creation, listing, reporting, and closure.

GET /api/v1/evaluations

Read up to 100 evaluation configurations in the authenticated environment.

Credential: Server credential.

Inputs: No body or pagination parameters.

Effect and retry behavior: Read-only; use each id to fetch metrics or close an open study.

Responses

HTTP statusMeaningBody
200Array of up to 100 stored evaluation configurations.application/json: Array of Evaluation

Response handling: Results are scoped to the calling tenant and environment. An empty list describes that scope and the supplied query.

Example

HTTP
GET /api/v1/evaluations
Response - HTTP 200:
[
  {
    "id": "evl_example",
    "name": "Payout shadow study",
    "action_keys": [
      "payout.destination.change"
    ],
    "success_criteria": {
      "min_shadow_decisions": 50,
      "max_abstention_rate": 0.5,
      "min_outcome_coverage": 0.5
    },
    "status": "open",
    "starts_at": "2026-10-01T12:00:00Z",
    "ends_at": "2026-10-31T12:00:00Z",
    "created_at": "2026-10-01T12:00:00Z"
  }
]

POST /api/v1/evaluations

Register the action selection, observation window and thresholds for an operational shadow study.

Credential: Admin server credential.

Inputs: Use registered action_keys and optional success_criteria. Defaults are 50 decisions, maximum abstention 0.5 and minimum outcome coverage 0.5; end defaults 30 days after start.

Effect and retry behavior: Creates an open evaluation record with the selected actions and criteria. Paid evaluation terms are handled separately through your commercial agreement.

Request body

application/json; required. EvaluationCreate.

Responses

HTTP statusMeaningBody
201Open evaluation with deduplicated action keys, recorded thresholds and effective observation window.application/json: Evaluation
422The canonical handler returns a Problem for invalid input; correct the request before retrying.application/problem+json: Problem

Response handling: 422 for unknown action keys, invalid threshold ranges, timestamps without timezone or an end not later than start.

Example

HTTP
POST /api/v1/evaluations
JSON request
{
  "name": "Payout shadow study",
  "action_keys": [
    "payout.destination.change"
  ],
  "success_criteria": {
    "min_shadow_decisions": 50,
    "max_abstention_rate": 0.5,
    "min_outcome_coverage": 0.5
  }
}
Response - HTTP 201:
{
  "id": "evl_example",
  "name": "Payout shadow study",
  "action_keys": [
    "payout.destination.change"
  ],
  "success_criteria": {
    "min_shadow_decisions": 50,
    "max_abstention_rate": 0.5,
    "min_outcome_coverage": 0.5
  },
  "status": "open",
  "starts_at": "2026-10-01T12:00:00Z",
  "ends_at": "2026-10-31T12:00:00Z",
  "created_at": "2026-10-01T12:00:00Z"
}

POST /api/v1/evaluations/{evaluation_id}/close

Fix the study cutoff and return the resulting criteria report.

Credential: Admin server credential.

Inputs: Evaluation id and admin authority.

Effect and retry behavior: Closes at the earlier of the planned end and current time. Repeating close preserves the cutoff; later decisions and outcomes are excluded.

Parameters

Name / locationRequiredMeaning, type and constraints
evaluation_id (path)YesEvaluation identifier returned when the study was created.
string

Responses

HTTP statusMeaningBody
200Closed evaluation report with fixed cutoff and final registered-criterion result.application/json: EvaluationReport
422The canonical handler returns a Problem for invalid input; correct the request before retrying.application/problem+json: Problem

Response handling: 404 for an unavailable evaluation. Closing preserves the recorded criteria and their measured results.

Example

HTTP
POST /api/v1/evaluations/evl_example/close
Response excerpt (selected fields) - HTTP 200:
{
  "id": "evl_example",
  "status": "closed",
  "result": "failed",
  "ends_at": "2026-10-01T12:00:00Z"
}

GET /api/v1/evaluations/{evaluation_id}/report

Compute the study’s selected shadow-decision metrics and compare them with registered success criteria.

Credential: Server credential.

Inputs: Evaluation id. Interpret the report with the study protocol and customer-label limitations.

Effect and retry behavior: Read-only report over retained traces. An open study can already have result passed when all criteria are met. Closing fixes the observation cutoff; trace retention can limit historical reconstruction.

Parameters

Name / locationRequiredMeaning, type and constraints
evaluation_id (path)YesEvaluation identifier returned when the study was created.
string

Responses

HTTP statusMeaningBody
200Evaluation configuration, aggregated metrics, per-criterion checks and in_progress/passed/failed result.application/json: EvaluationReport
422The canonical handler returns a Problem for invalid input; correct the request before retrying.application/problem+json: Problem

Response handling: 404 for an unavailable evaluation. Null ratios indicate insufficient denominator data; inspect the sample and individual criteria before interpreting the result.

Example

HTTP
GET /api/v1/evaluations/evl_example/report
Response excerpt (selected fields) - HTTP 200:
{
  "id": "evl_example",
  "status": "open",
  "result": "in_progress",
  "metrics": {
    "decisions": 0,
    "abstention_rate": null,
    "outcome_coverage": 0.0
  }
}