> For the complete documentation index, see [llms.txt](/llms.txt).
> A full single-fetch corpus is available at [llms-full.txt](/llms-full.txt).
---
title: "Create a quality case"
description: "Open a quality case, optionally linked to the run or score that surfaced it."
method: "POST"
endpoint: "/api/v1/projects/:projectId/quality/cases"
order: 2
last_verified: 2026-07-27
---



`POST /api/v1/projects/:projectId/quality/cases`

Open a quality case, optionally linked to the run or score that surfaced it.


  ### Body parameters

  - `title` _string_ **required** — A short summary of the issue.
  - `description` _string_ — What's wrong and where it was observed.
  - `severity` _string_ — e.g. low, medium, high, critical.
  - `category` _string_ — One of behavior_quality, eval_regression, production_failure, deployment_health, runtime_infra, support_request, release_risk. Defaults to production_failure.
  - `source_type` _string_ — One of runtime_run, eval_run_item, eval_alert, guardrail_decision, deployment, deployment_failure, worker_health, runtime_cluster, behavior_topic, manual, support_ticket. Defaults to manual.
  - `experiment_run_id` _string_ — The experiment run that surfaced this case, if any.
  - `experiment_run_item_id` _string_ — The specific run item that failed, if any.
  - `expected_behavior` _string_ — What should have happened.
  - `observed_behavior` _string_ — What actually happened.



> `category` and `source_type` are only validated at the database layer, not by the API itself. An unlisted value doesn't return a clean `400` — it surfaces as a generic insert error.



  ### Request example


```bash
curl -X POST https://api.agnt5.com/api/v1/projects/b6f1a3e2-.../quality/cases \
  -H "X-API-KEY: {api_key}" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Vendor name misread on scanned invoices with logos",
    "severity": "high",
    "experiment_run_id": "7f6e5d4c-..."
  }'
```

```javascript
fetch(`https://api.agnt5.com/api/v1/projects/${projectId}/quality/cases`, {
  method: 'POST',
  headers: { 'X-API-KEY': apiKey, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    title: 'Vendor name misread on scanned invoices with logos',
    severity: 'high',
    experiment_run_id: experimentRunId
  })
})
```




