> ## Documentation Index
> Fetch the complete documentation index at: https://docs.verial.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Criterion Runs

> Per-criterion results produced by the verification engine.

A **Criterion Run** is the result of running a single [Criterion](/api-reference/resources/criteria) against a [Task Run](/api-reference/resources/task-runs). The [verification engine](/guides/concepts/verification) creates one Criterion Run per criterion when a task run completes.

## Endpoints

| Method | Endpoint                                    | Description                        |
| ------ | ------------------------------------------- | ---------------------------------- |
| `GET`  | `/criterion-runs?task_run_id={task_run_id}` | List criterion runs for a task run |
| `GET`  | `/criterion-runs/{id}`                      | Get criterion run details          |

Criterion Runs are read-only. They are created automatically when you complete a task run (see the [Task Runs](/api-reference/resources/task-runs) page and the v1 [completion flow](/guides/quickstart)).

## Criterion Run Object

| Field          | Type             | Description                                                                                                                           |
| -------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| `id`           | string           | Unique identifier                                                                                                                     |
| `task_run_id`  | string           | Parent [Task Run](/api-reference/resources/task-runs)                                                                                 |
| `criterion_id` | string           | Source [Criterion](/api-reference/resources/criteria)                                                                                 |
| `passed`       | boolean          | `true` if the criterion passed                                                                                                        |
| `score`        | number           | Score (`0.0` to `1.0`)                                                                                                                |
| `details`      | string \| null   | Human-readable explanation of the result                                                                                              |
| `evidence`     | object \| null   | Structured evidence payload (field-level results, matched messages, transcript snippets). Shape depends on the criterion's check type |
| `started_at`   | datetime         | When verification started                                                                                                             |
| `completed_at` | datetime \| null | When verification finished                                                                                                            |

## HTTP Example

```bash theme={null}
curl "https://api.verial.ai/criterion-runs?task_run_id=tr_abc123" \
  -H "Authorization: Bearer $VERIAL_API_KEY"
```

```json theme={null}
{
  "data": [
    {
      "id": "crun_01H...",
      "task_run_id": "tr_abc123",
      "criterion_id": "crit_01H...",
      "passed": true,
      "score": 1.0,
      "details": "Appointment resource matched; all 2 field assertions passed.",
      "evidence": {
        "field_results": [
          {
            "path": "participant.0.actor.display",
            "expected": "Dr. Rivera",
            "actual": "Dr. Rivera",
            "passed": true
          }
        ]
      },
      "started_at": "2026-04-20T17:10:02.000Z",
      "completed_at": "2026-04-20T17:10:04.000Z"
    }
  ],
  "next_cursor": null
}
```

## SDK Example

```typescript theme={null}
// List criterion runs for a task run
const runs = await verial.criterionRuns.list({ taskRunId: "tr_abc123" });

for (const run of runs.data) {
  console.log(`${run.criterionId}: ${run.passed ? "PASS" : "FAIL"} (${run.score})`);
  if (!run.passed) console.log(run.details);
}

// Fetch one criterion run with full evidence
const detail = await verial.criterionRuns.get({ id: "crun_01H..." });
```
