---
title: "Get a model comparison"
method: GET
path: "/v3/model-comparisons/{comparisonID}"
tags: ["Function Accuracy"]
---

# Get a model comparison

`GET /v3/model-comparisons/{comparisonID}`

**Get a comparison's metrics.**

Returns each entry's metric bundle (aggregate + per-field accuracy, latency,
dataset baseline) and its lift against the baseline entry.

Every entry is re-scored on each read, so the parameters below decide the answer
and none of them had to be chosen before the run started. Re-reading with
different settings costs nothing — no model calls are repeated.

Structure — how array elements pair up:
- `orderMatching`: score array elements in order instead of as sets

Strictness — how close two values must be to count as equal:
- `matchMode`: `strict` (default) | `normalized` | `fuzzy`

`matchMode` is the whole of strictness. There are no separate thresholds to tune:
`normalized` already compares numbers numerically and dates by calendar value
rather than by spelling, and `fuzzy` adds a fixed similarity pass over free text.

## Path parameters

- `comparisonID` string, required

## Query parameters

- `matchMode` string
- `orderMatching` boolean
- `includeRowResults` boolean

## Response `200`

The request has succeeded.

- ModelComparisonResponseV3 — Returned by `GET /v3/model-comparisons/{comparisonID}`.
  - `comparisonID` string, required
  - `name` string
  - `status` 'pending' | 'running' | 'complete' | 'partial' | 'cancelled' | 'error', required — Rolled-up status of a comparison, derived from its entries' scoring runs.
  - `entries` ModelComparisonEntryResultV3[], required
    - `label` string, required
    - `functionName` string, required
    - `functionVersionNum` integer, required
    - `scoreRunID` string, required — The underlying eval-score run (`evalrun_…`).
    - `status` 'pending' | 'running' | 'complete' | 'partial' | 'cancelled' | 'error', required — Rolled-up status of a comparison, derived from its entries' scoring runs.
    - `isBaseline` boolean, required — True for the baseline entry (the first one), which others report lift against.
    - `coverage` ModelComparisonCoverageV3, required — Completed / total scored calls for an entry.
      - `completed` integer, required
      - `total` integer, required
    - `metrics` ModelComparisonMetricsV3 — Accuracy metrics for one scored entry (aggregate + per-field).
      - `aggregateMetrics` ModelComparisonAggregateV3, required — Aggregate confusion-matrix accuracy metrics.
        - `accuracy` number, double
        - `precision` number, double
        - `recall` number, double
        - `f1Score` number, double
        - `tp` integer, required
        - `fp` integer, required
        - `fn` integer, required
        - `tn` integer, required
      - `fieldMetrics` unknown[], required — Per-field metrics (same shape as the lab metrics `fieldMetrics`).
        - unknown
    - `latencyPercentiles` ModelComparisonLatencyV3 — End-to-end latency percentiles, in seconds.
      - `latencyP50` number, double, required
      - `latencyP90` number, double, required
      - `latencyP95` number, double, required
    - `baselineMetrics` ModelComparisonMetricsV3 — Accuracy metrics for one scored entry (aggregate + per-field).
      - `aggregateMetrics` ModelComparisonAggregateV3, required — Aggregate confusion-matrix accuracy metrics.
        - `accuracy` number, double
        - `precision` number, double
        - `recall` number, double
        - `f1Score` number, double
        - `tp` integer, required
        - `fp` integer, required
        - `fn` integer, required
        - `tn` integer, required
      - `fieldMetrics` unknown[], required — Per-field metrics (same shape as the lab metrics `fieldMetrics`).
        - unknown
    - `lift` ModelComparisonLiftV3 — Lift of an entry's aggregate metrics against the baseline entry.
      - `accuracy` ModelComparisonMetricDeltaV3, required — One metric's baseline vs comparison value, absolute diff, and percent lift.
        - `baselineValue` number, double
        - `comparisonValue` number, double
        - `difference` number, double
        - `liftPercent` number, double
      - `precision` ModelComparisonMetricDeltaV3, required — One metric's baseline vs comparison value, absolute diff, and percent lift.
        - `baselineValue` number, double
        - `comparisonValue` number, double
        - `difference` number, double
        - `liftPercent` number, double
      - `recall` ModelComparisonMetricDeltaV3, required — One metric's baseline vs comparison value, absolute diff, and percent lift.
        - `baselineValue` number, double
        - `comparisonValue` number, double
        - `difference` number, double
        - `liftPercent` number, double
      - `f1Score` ModelComparisonMetricDeltaV3, required — One metric's baseline vs comparison value, absolute diff, and percent lift.
        - `baselineValue` number, double
        - `comparisonValue` number, double
        - `difference` number, double
        - `liftPercent` number, double
    - `rowResults` ModelComparisonRowResultV3[] — Per-row, per-field comparison detail (this entry's value vs the label, re-matched under `matchMode`). Present only when the request passes `includeRowResults=true`. Powers mislabel detection.
      - `rowKey` string, required
      - `fields` ModelComparisonFieldResultV3[], required
        - `path` string, required — JSON Pointer to the field.
        - `category` string, required — `match` | `mismatch` | `missing` | `extra`.
        - `expected` unknown
        - `actual` unknown

## Other responses

- `400` — The server could not understand the request due to invalid syntax.
- `404` — The server cannot find the requested resource.

---

[API](https://skmtc.dev/bem-team/apis/bem-api.md) · [All operations](https://skmtc.dev/bem-team/apis/bem-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/bem-team/bem-api/revisions/a6e4624117c6/schema)
