---
title: "Confirm Evaluation Run"
method: POST
path: "/core/evaluation-runs/{run_id}/confirm"
tags: ["Evaluation Runs"]
---

# Confirm Evaluation Run

`POST /core/evaluation-runs/{run_id}/confirm`

## Request

- Base URL: `https://api.anyreach.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.anyreach.ai/core/evaluation-runs/{run_id}/confirm`
- Auth: HTTP bearer

Human confirm/correct over AI pre-fill (FR-H2/H8).

Confirming an AI run creates a new completed human run carrying the
submitted atoms; confirming a pending human run (e.g. a calibration
assignment) fills it in place. The tagger's Logto user id is recorded
as assessor_id. Flips vs. the AI run are derivable by diffing runs —
they are the AI↔human disagreement data feeding calibration.

## Path parameters

- `run_id` string, required

## Headers

- `x-anyreach-org` string, nullable: Organization ID for user PATs (pat_ prefix tokens)

## Request body

- ConfirmRunRequest: Schema for POST /evaluation-runs/{id}/confirm. The human's final state for the run's criteria (AI pre-fill + flips). Confirming an AI run creates a new human run; confirming a pending human run (calibration assignment) fills it in place. Every flip vs. the AI run is an AI↔human disagreement datum (feeds the calibration engine, FR-H2).
  - `results` ConfirmCriterionItem[], required
    - `criterion_id` string, required
    - `outcome` 'true' | 'false' | 'abstain' | 'na', required
    - `quote` string, nullable
    - `reasoning` string, nullable

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/anyreach/apis/anyreach-api.md) - [All operations](https://skmtc.dev/anyreach/apis/anyreach-api/llms.txt) - [OpenAPI document](https://skmtc.dev/anyreach/apis/anyreach-api/revisions/2eddf40c8c93?raw)
