---
title: "Model-vs-data metrics for every pair in a study"
method: GET
path: "/projects/{project_id}/studies/{study_id}/validation-metrics"
tags: ["study-validation"]
---

# Model-vs-data metrics for every pair in a study

`GET /projects/{project_id}/studies/{study_id}/validation-metrics`

RMSE, MAE and max residual per pair, each computed over every sample.

The report's table shows these for all pairs at once, which is why they are served
apart from the channels: downloading both full datasets per pair just to fill three
numbers in a row would be wasteful.

A pair whose simulation has no results is omitted rather than failing the batch — its
row renders as pending, which is what it is.

## Path parameters

- `study_id` string, required
- `project_id` string, required

## Response `200`

Successful Response

- ValidationPairMetrics[]
  - `simulation_id` string, required
  - `measurement_id` string, required
  - `rmse` number, required
  - `mae` number, required
  - `max` number, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/ionworks/apis/fastapi.md) · [All operations](https://skmtc.dev/ionworks/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/ionworks/fastapi/revisions/7337a3cbdaf2/schema)
