---
title: "Batch Save Case"
method: PUT
path: "/evals/cases/{case_id}/save"
tags: ["evals"]
---

# Batch Save Case

`PUT /evals/cases/{case_id}/save`

Save all labeling changes for an eval case in one request.

Merges all column updates into a single DB write, then runs oracle
append and metadata refresh in parallel where possible.

## Path parameters

- `case_id` string, required

## Request body

- BatchSaveCaseRequest — Single request to save all labeling changes for an eval case.
  - `labels` UpdateLabelsRequest
    - `instance_class` string, nullable
    - `case_quality` 'exemplary' | 'acceptable' | 'bad', nullable
    - `difficulty` 'easy' | 'medium' | 'hard', nullable
    - `criticality` 'low' | 'medium' | 'high', nullable
    - `tags` string[], nullable
    - `labeled_by` string, nullable
  - `status` 'draft' | 'ready' | 'needs_review' | 'archived', nullable
  - `expected_outputs` object, nullable
  - `eval_dataset_id` string, nullable
  - `oracle` AppendOracleRequest
    - `content` object, required
    - `authored_by` string, nullable

## Response `200`

Successful Response

- object

## Other responses

- `422` — Validation Error

---

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