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

# Reviews

> Read a review, record a label, and see whether it agrees with the model.

Reviews are evaluations whose status is `review`. Open one, read the redacted ticket and the answers, and record a label. The label does not change the evaluation.

`GET /api/reviews` requires `judgments:read`. It returns up to 50 rows and a `nextCursor`. Each item includes `result` and `redactedTicket`.

| Query | Effect |
| - | - |
| `packId` | One pack |
| `questionId` | Evaluations whose answers include this question id |
| `labeled` | `true` or `false` |
| `cursor` | The next page |

## Write a label

`POST /api/evaluations/{id}/labels` requires `labels:write`.

```json theme={null}
{ "questionId": "department", "answer": { "type": "choice", "choice": "billing" }, "note": "Invoice attached." }
```

The answer has to match the question on the pack version that ran:

| Question | Label |
| - | - |
| `choice` | `{ "type": "choice", "choice": "billing" }` |
| `score` | `{ "type": "score", "levelIndex": 2 }` |
| `boolean` | `{ "type": "boolean", "value": true }` |

`note` is optional, at most 500 characters. A question that is not on that version is `400` with `question not found on this evaluation's pack version`. A label of the wrong shape is `400` with `label does not fit the question`.

`DELETE /api/evaluations/{id}/labels/{questionId}` returns `204`.

The evaluation payload then includes the label and `agreement`: a boolean, or `null` when the model answer cannot be compared. Agreement compares the label to the stored answer. It does not move `status` and it does not change the probability.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.