---
title: "Get a version of a test"
method: GET
path: "/api/v1/eval-cases/{case_id}/versions/{version_id}"
tags: ["authed"]
---

# Get a version of a test

`GET /api/v1/eval-cases/{case_id}/versions/{version_id}`

## Request

- Base URL: `https://api.teaflask.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.teaflask.com/api/v1/eval-cases/{case_id}/versions/{version_id}`
- Auth: none declared

One test at one of its versions.

## Path parameters

- `case_id` string, uuid, required: The test's id, as list_tests returns it.
- `version_id` string, uuid, required: The version's id, as get_test lists it.

## Response `200`

Successful Response

- TestDetail: One test at one of its versions, with what it checks.
  - `id` string, uuid, required: The test's id.
  - `agent_id` string, uuid, required: The agent the test belongs to.
  - `conversation_id` string, uuid, required: The conversation the test came from.
  - `conversation_title` string, required: That conversation's title.
  - `title` string, required: The test's title; empty until it is written.
  - `note` string, nullable, required: A member's note on the test.
  - `status` 'authoring' | 'authored' | 'admitting' | 'repairing' | 'ready' | 'broken' | 'refused' | 'failed', required
  - `status_reason` string, nullable, required: A sentence saying why the test is where it is, when there's more to say.
  - `status_retryable` boolean, required: Whether writing the test can be tried again.
  - `created_by_user_id` string, uuid, nullable, required: The member who added it.
  - `created_at` string, date-time, required: When it was added.
  - `updated_at` string, date-time, required: When it last changed.
  - `revisions_seen` string[], required: Every agent revision that answered in the conversation.
  - `admission_revision_id` string, uuid, nullable, required: The agent revision that gave the conversation's last answer.
  - `original_identified` boolean, required: Whether the conversation's user was signed in.
  - `edits_start_check` boolean, required: Whether saving an edit starts a paid check of the test.
  - `versions` TestVersionItem[], required: Every version, newest first.
    - `id` string, uuid, required: The version's id.
    - `number` integer, required: The version's number, from 1.
    - `authored_by` 'case_author' | 'operator' | 'repair', required
    - `edited_by_user_id` string, uuid, nullable, required: The member who saved it, for a member's edit.
    - `created_at` string, date-time, required: When it was saved.
  - `version` TestVersionDetail, required: What one version of a test says the conversation was.
    - `id` string, uuid, required: The version's id.
    - `number` integer, required: The version's number, from 1.
    - `parent_id` string, uuid, nullable, required: The version it was made from.
    - `authored_by` 'case_author' | 'operator' | 'repair', required
    - `created_at` string, date-time, required: When it was saved.
    - `summary` string, required: The situation the conversation was about.
    - `user` TestUserBrief, required
      - `who` string, required: Who the user is.
      - `goal` string, required: What the user came to do.
      - `decisions` string[], required: Choices the user made along the way.
      - `manner` string, required: How the user writes and behaves.
    - `user_knowledge` string[], required: What the real user knew before the conversation.
    - `user_intents` TestUserIntent[], required: What the user wanted or asked, in order.
      - `text` string, required: What the user wanted or asked.
      - `turn` integer, nullable, required: The user message it came from, from 1.
    - `original_outcome` 'succeeded' | 'failed', required
    - `outcome_reason` string, required: Why it succeeded or failed.
    - `caused` TestCausedChange[], required: What the original conversation changed.
      - `text` string, required: What the original conversation changed.
      - `refs` string[], required: The recorded calls that changed it.
  - `facts` TestFact[], required: What a test run's world holds true.
    - `id` string, uuid, required: The fact's id.
    - `text` string, required: The fact.
    - `source` 'recorded' | 'generated' | 'edited', required
    - `basis` string[], required: The recorded calls it rests on.
    - `back_dated_because` string, nullable, required: Why the fact holds from before the conversation began.
    - `generated_by_trial` string, nullable, required: The test run try that added it, for a fact a test run added.
    - `created_at` string, date-time, required: When it was added.
  - `assertions` TestAssertion[], required: What a test run checks.
    - `id` string, uuid, required: The check's id.
    - `ordinal` integer, required: The check's place in the test, from 1.
    - `text` string, required: What the check expects.
    - `kind` 'write_call' | 'behaviour', required
    - `origin` 'operator' | 'inferred', required
    - `added_by` 'case_author' | 'operator', required
    - `held_in_original` boolean, nullable, required: Whether the original conversation met it; null for a member's check.
    - `evidence` string, nullable, required: What in the original conversation shows it.
    - `write_call_sentence` string, nullable, required: The call check in a sentence, for a write_call check.
    - `write_call` WriteCallCheck, required
      - `expect` 'called' | 'not_called', required
      - `tools` string[]
      - `endpoints` EndpointMatch[]
        - `method` string, required
        - `path_template` string, required
      - `arguments` ArgumentCheck[]
        - `path` string, required
        - `op` 'equals' | 'contains' | 'present' | 'absent' | 'one_of', required
        - `value` unknown
      - `must_succeed` boolean
  - `memory_notes` TestMemoryNote[], required: The memory notes the assistant had about the user.
    - `slug` string, required: The note's name.
    - `title` string, required: The note's title.
    - `body` string, required: The note.
    - `source` 'recorded' | 'edited', required
  - `evidence` TestEvidence[], required: The calls the agent made in the original conversation.
    - `id` string, uuid, required: The recorded call's id.
    - `ref` string, required: How the test's facts and checks name it.
    - `tool_name` string, required: The tool the agent called.
    - `family` 'http_action' | 'graphql_action' | 'browser' | 'mcp', required
    - `is_change` boolean, required: Whether the call changed something.
    - `after_change_refs` string[], required: The changes made before this call.
    - `ok` boolean, nullable, required: Whether the call worked.
    - `status` integer, nullable, required: The answer's code, for a web call.
    - `preview` string, required: The start of what the call answered.
  - `files` TestFile[], required: The files the user sent.
    - `id` string, uuid, required: The file's id.
    - `filename` string, required: The file's name.
    - `byte_size` integer, required: The file's size in bytes.
    - `content_type` string, required: The file's type.
    - `user_message_ordinal` integer, required: The user message it came with.
  - `user_messages` TestUserMessage[], required: What the user wrote in the original conversation.
    - `ordinal` integer, required: The message's place, from 1.
    - `text` string, required: What the user wrote.
    - `file_ids` string[], required: The files it came with.

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not found
- `405`: Method not allowed
- `422`: Validation error
- `500`: Internal server error

## Changes

- **2026-11-03** `c6ac9fd6657f`: 2 warning, 6 info
  - added the new `edited` enum value to the `memory_notes/items/source` response property for the response status `200`
  - added the new `recorded` enum value to the `memory_notes/items/source` response property for the response status `200`
  - removed the `STEEP_LEARNING_DISABLED` enum value from the `error/code` response property for the response status `401`
  - removed the `STEEP_LEARNING_DISABLED` enum value from the `error/code` response property for the response status `403`
  - …4 more

[Operation history](https://skmtc.dev/teaflask/apis/teaflask-api/changes/api/v1/eval-cases/:case_id/versions/:version_id/get.md)

---

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