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

# List Test Run Correction Revisions

> List correction revisions for one call and value.

### Overview

<Note>
  Dispositions are enabled per organization. If your organization does not have access, these endpoints return `404`.
</Note>

Returns the correction history for one value on one call of a test run, newest revision first, up to 50 entries. Corrections are written with [Correct Test Run Value](/api-v2/put/agents-id-dispositions-disposition-id-runs-run-id-cases-call-id-annotations-value-id); only the newest revision counts as the current correction on [Get Test Run Rows](/api-v2/get/agents-id-dispositions-disposition-id-runs-run-id-rows) and in the CSV export.

### Headers

<ParamField header="authorization" type="string" required>
  Your API key for authentication.
</ParamField>

### Path Parameters

<ParamField path="agent_id" type="string" required>
  The agent's unique identifier. Must be a UUID; otherwise returns `400` with the message `agentId must be a valid UUID`. Returns `404 Agent not found` if the agent is not in your organization.
</ParamField>

<ParamField path="disposition_id" type="string" required>
  The disposition's unique identifier. Must be a UUID; otherwise returns `400` with the message `dispositionId must be a valid UUID`. Returns `404 Disposition not found` if it does not belong to this agent.
</ParamField>

<ParamField path="run_id" type="string" required>
  The test run's unique identifier. Must be a UUID; otherwise returns `400` with the message `runId must be a valid UUID`. Returns `404 Test run not found` if it does not belong to this disposition.
</ParamField>

<ParamField path="call_id" type="string" required>
  The call. Must be a UUID; otherwise returns `400` with the message `callId must be a valid UUID`. Returns `404` with the message `Test run case not found` if the call is not part of this run.
</ParamField>

<ParamField path="value_id" type="string" required>
  The definition value. Must be a UUID; otherwise returns `400` with the message `valueId must be a valid UUID`. Returns `404` with the message `Disposition value not found in this run` if the run's definition snapshot has no such value.
</ParamField>

### Response

<ResponseField name="data.annotations" type="array">
  Correction revisions ordered by `revision` descending, at most 50. Empty if the cell was never corrected.

  <Expandable title="correction object">
    <ResponseField name="id" type="string">
      Unique identifier for this revision.
    </ResponseField>

    <ResponseField name="testRunId" type="string">
      The test run.
    </ResponseField>

    <ResponseField name="testRunCaseId" type="string">
      Identifier of this call's execution within the run. Matches the `run_id` column of the CSV export.
    </ResponseField>

    <ResponseField name="callId" type="string">
      The call.
    </ResponseField>

    <ResponseField name="valueId" type="string">
      The definition value.
    </ResponseField>

    <ResponseField name="revision" type="number">
      `1` for the first correction, incrementing with each later one.
    </ResponseField>

    <ResponseField name="originalResult" type="object">
      The engine's result as it stood when the correction was saved: `valueId`, `state`, and, when present, `value`, `error`, `rationale`, `evidence`, and `executedVia`.
    </ResponseField>

    <ResponseField name="correctedResult" type="object">
      `{ "valueId", "state" }` plus `value` when `state` is `produced`.
    </ResponseField>

    <ResponseField name="explanation" type="string">
      The explanation supplied with the correction.
    </ResponseField>

    <ResponseField name="createdBy" type="string | null">
      ID of the user who saved the correction, or `null` when saved with an org-level key.
    </ResponseField>

    <ResponseField name="createdAt" type="string">
      ISO 8601 timestamp of the correction.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="data.truncated" type="boolean">
  `true` when more than 50 revisions exist and older ones were cut from the list.
</ResponseField>

<ResponseField name="errors" type="null | array">
  `null` on success, or a list of error objects if the request failed.
</ResponseField>

<ResponseExample>
  ```json Response theme={null}
  {
    "data": {
      "annotations": [
        {
          "id": "71401be8-f0db-412c-9621-6fcc3a50195c",
          "testRunId": "77216b1c-2a91-496f-84df-76be610c8510",
          "testRunCaseId": "b3caa112-96c4-4bfc-b62f-20406b1f961f",
          "callId": "66a9ec46-33ea-4b56-bd4a-970706c652e8",
          "valueId": "d7e20249-0c03-49dd-9b28-70797904c6b4",
          "revision": 2,
          "originalResult": {
            "valueId": "d7e20249-0c03-49dd-9b28-70797904c6b4",
            "state": "produced",
            "value": false,
            "rationale": "No appointment time was agreed before the caller hung up."
          },
          "correctedResult": {
            "valueId": "d7e20249-0c03-49dd-9b28-70797904c6b4",
            "state": "no_value"
          },
          "explanation": "On a second listen the caller only asked about availability and never committed to a time, so there is no booking outcome to record.",
          "createdBy": "8367c610-f081-47f5-ba7d-2f9c89d26e47",
          "createdAt": "2026-09-10T21:02:15.114Z"
        },
        {
          "id": "2b34fbbf-d3cb-45fc-ad3f-cbfa95f2afbd",
          "testRunId": "77216b1c-2a91-496f-84df-76be610c8510",
          "testRunCaseId": "b3caa112-96c4-4bfc-b62f-20406b1f961f",
          "callId": "66a9ec46-33ea-4b56-bd4a-970706c652e8",
          "valueId": "d7e20249-0c03-49dd-9b28-70797904c6b4",
          "revision": 1,
          "originalResult": {
            "valueId": "d7e20249-0c03-49dd-9b28-70797904c6b4",
            "state": "produced",
            "value": false,
            "rationale": "No appointment time was agreed before the caller hung up."
          },
          "correctedResult": {
            "valueId": "d7e20249-0c03-49dd-9b28-70797904c6b4",
            "state": "produced",
            "value": true
          },
          "explanation": "The caller agreed to the slot at the very end of the call, after the agent's recap.",
          "createdBy": "8367c610-f081-47f5-ba7d-2f9c89d26e47",
          "createdAt": "2026-09-10T20:14:33.870Z"
        }
      ],
      "truncated": false
    },
    "errors": null
  }
  ```

  ```json Not Found theme={null}
  {
    "data": null,
    "errors": [
      {
        "error": "NOT_FOUND",
        "message": "Test run case not found"
      }
    ]
  }
  ```
</ResponseExample>

***

Docs for agents: [llms.txt](/llms.txt)
