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

# Criteria Versioning

> How criteria versions affect scoring and auditability

Every change to a job's criteria creates a new version. Scoring jobs reference the version they used.

## What creates a new version

* `POST /v1/jobs/{jobId}/criteria/generate`
* `POST /v1/jobs/{jobId}/criteria/items`
* `PATCH /v1/jobs/{jobId}/criteria/items/{criterionId}`
* `DELETE /v1/jobs/{jobId}/criteria/items/{criterionId}`
* `DELETE /v1/jobs/{jobId}/criteria` (archives the active version)

## Response format

Criteria endpoints return a flat array of criterion items:

```json theme={null}
{
  "criteria": [
    {
      "id": "crit_a1b2c3d4e5f6",
      "text": "5+ years experience",
      "importance": "MUST_HAVE",
      "order": 0
    }
  ]
}
```

Version metadata is available through dedicated endpoints:

* `GET /v1/jobs/{jobId}/criteria/versions/current`
* `GET /v1/jobs/{jobId}/criteria/versions`
* `GET /v1/jobs/{jobId}/criteria/versions/{criteriaVersionId}`

<Tip>
  **Criterion IDs are stable across versions.** When you add, edit, or remove a criterion, a new version is created internally, but each criterion keeps its original `id`.
</Tip>

## How this affects scoring

Scoring uses the job's active criteria version by default. When re-scoring (`rescore.enabled: true`), you can pin a specific version with `rescore.criteriaVersionId`.

Old scores stay tied to the criteria version used at the time. Criteria changes don't retroactively alter historical results.
