---
title: "Fetch an archived decider version"
method: GET
path: "/v1/projects/{project_id}/deciders/{decider_id}/versions/{version}"
tags: ["Deciders"]
---

# Fetch an archived decider version

`GET /v1/projects/{project_id}/deciders/{decider_id}/versions/{version}`

## Request

- Base URL: `https://api.naturali.ai`
- URL: `https://api.naturali.ai/v1/projects/{project_id}/deciders/{decider_id}/versions/{version}`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://api.naturali.ai/authorize`, token URL `https://api.naturali.ai/token`, scopes: `mcp:access`)

Returns the question set a version held. A decision names the `decider_version` it was answered under, so this is how its criteria are read after the decider has changed.

## Path parameters

- `decider_id` string, required
- `version` integer, required

## Response `200`

Archived decider version

- DeciderVersion: An immutable archive of a decider's question set at one version.
  - `id` string
  - `decider_id` string
  - `version` integer
  - `config` object: The versioned surface as it stood at this version.
    - `questions` DeciderQuestion[]: The questions, in the order the model is shown them.
      - `type` 'predicate' | 'choice' | 'score', required
      - `name` string, required: Names the question's answer. Unique within the set; starts with a letter or underscore and holds only letters, digits and underscores (at most 64).
      - `instructions` string, required: What to judge
      - `choices` DeciderChoice[]: A `choice` question's options; required for `choice` only
        - `value` string, required: What a `choice` answer carries; unique within the question
        - `description` string, required
      - `levels` DeciderLevel[]: A `score` question's ordered levels; required for `score` only
        - `label` string, required
        - `description` string, required
  - `label` string, nullable
  - `created_by_principal_type` 'user' | 'api_key' | 'agent' | 'automation' | 'approval' | 'system': What kind of principal acted. `user` and `api_key` are authenticated callers, and the id is the user's (`user_…`) or the key's own (`key_…`), so a record names which key acted rather than its owner. `agent` is an agent writing under its own identity (`agent_…`). `automation` is the task engine acting on a dispatch outcome and `approval` an approval resolution; neither carries an id. `system` is the platform itself, with an id naming the mechanism (`retention_sweep`, `zero_retention`).
  - `created_by_principal_id` string, nullable: Public id of that principal: the user (`user_…`), or for API key auth the key itself (`key_…`), so the record names which key acted.
  - `created_at` string, date-time

## Other responses

- `400`: Bad request — version is not a positive integer
- `401`: Unauthorized
- `404`: Not found

---

[API](https://skmtc.dev/naturali/apis/naturali-ai-api.md) · [All operations](https://skmtc.dev/naturali/apis/naturali-ai-api/llms.txt) · [OpenAPI document](https://skmtc.dev/naturali/apis/naturali-ai-api/revisions/e4905b78f422?raw)
