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

# Get run

> Read one run and each case execution or evaluation result.

Read one run and each case execution or evaluation result.

Item `status` is `queued`, `running`, `completed` or `failed`. Completed results include `verdict`, `criteriaResults`, `replayInteractionId`, `environment`, messages and Action diagnostics. A failed execution may include diagnostic `result` data plus `error`. Previous comparisons use `previousResult`, `previousCreatedAt` and `sameSetup`. Private execution-artifact snapshots are not returned.

## Headers

<ParamField header="Authorization" type="string" required>
  Bearer token containing your workspace API key. The key needs `read` scope.
</ParamField>

## Path parameters

<ParamField path="id" type="string" required>
  Run UUID.
</ParamField>

## Response

Returns the run and `items`. The completed example intentionally has an empty array of collection origins. Queued items return `result: null` until a result is available.

<RequestExample>
  ```bash cURL theme={null}
  curl --request GET \
    --url 'https://api-prod.usefini.com/v2/test-suite/runs/00000000-0000-4000-8000-000000000015/public' \
    --header 'Authorization: Bearer fini_your_api_key'
  ```

  ```javascript Node.js theme={null}
  const response = await fetch("https://api-prod.usefini.com/v2/test-suite/runs/00000000-0000-4000-8000-000000000015/public", {
    method: "GET",
    headers: {
      Authorization: "Bearer fini_your_api_key",
    },
  });
  if (!response.ok) throw new Error(await response.text());
  const result = await response.json();
  ```

  ```python Python theme={null}
  import requests

  response = requests.request(
      "GET",
      "https://api-prod.usefini.com/v2/test-suite/runs/00000000-0000-4000-8000-000000000015/public",
      headers={"Authorization": "Bearer fini_your_api_key"},
  )
  response.raise_for_status()
  result = response.json()
  ```
</RequestExample>

<ResponseExample>
  ```json 200 OK theme={null}
  {
    "id": "00000000-0000-4000-8000-000000000015",
    "companyId": "00000000-0000-4000-8000-000000000011",
    "botId": "00000000-0000-4000-8000-000000000001",
    "environment": {
      "promptVersionId": "00000000-0000-4000-8000-000000000007",
      "ruleVersionIds": ["00000000-0000-4000-8000-000000000008"],
      "knowledgeArticleDraftIds": ["00000000-0000-4000-8000-000000000009"],
      "configuration": {
        "behaviour": {"id": "00000000-0000-4000-8000-000000000007", "name": "Version 2", "versionNumber": 2, "status": "DRAFT"},
        "rules": [
          {
            "id": "00000000-0000-4000-8000-000000000008",
            "ruleId": "00000000-0000-4000-8000-000000000005",
            "name": "Refund workflow",
            "versionNumber": 2
          }
        ],
        "articles": [
          {
            "id": "00000000-0000-4000-8000-000000000009",
            "name": "Refund policy",
            "originalArticleId": "00000000-0000-4000-8000-000000000020"
          }
        ]
      }
    },
    "criteriaGroupId": null,
    "criteriaGroupName": null,
    "createdAt": "2026-10-12T10:00:00.000Z",
    "collections": [],
    "items": [
      {
        "id": "00000000-0000-4000-8000-000000000013",
        "caseId": "00000000-0000-4000-8000-000000000002",
        "status": "queued",
        "name": "Refund policy",
        "criteria": [
          {
            "id": "2995012b-d9bf-58e9-c6c7-672205196681",
            "companyId": "00000000-0000-4000-8000-000000000011",
            "defaultCriterionId": null,
            "name": "No handoff",
            "type": "deterministic",
            "condition": {
              "scope": "SCALAR",
              "predicate": {"left": {"path": "escalated", "dataType": "boolean"}, "operator": "==", "right": {"value": false}}
            },
            "blocking": true,
            "judgePrompt": null,
            "passPrompt": null,
            "failPrompt": null,
            "isActive": true,
            "createdAt": "2026-10-12T10:00:00.000Z",
            "updatedAt": "2026-10-12T10:00:00.000Z"
          },
          {
            "id": "00000000-0000-4000-8000-000000000012",
            "companyId": "00000000-0000-4000-8000-000000000011",
            "defaultCriterionId": null,
            "name": "No handoff",
            "type": "deterministic",
            "condition": {
              "scope": "SCALAR",
              "predicate": {"left": {"path": "escalated", "dataType": "boolean"}, "operator": "==", "right": {"value": false}}
            },
            "blocking": true,
            "judgePrompt": null,
            "passPrompt": null,
            "failPrompt": null,
            "isActive": true,
            "createdAt": "2026-10-12T10:00:00.000Z",
            "updatedAt": "2026-10-12T10:00:00.000Z"
          }
        ],
        "criteriaGroup": {
          "id": "00000000-0000-4000-8000-000000000003",
          "companyId": "00000000-0000-4000-8000-000000000011",
          "botId": "00000000-0000-4000-8000-000000000001",
          "name": "Refund checks",
          "criteria": [
            {
              "id": "00000000-0000-4000-8000-000000000012",
              "companyId": "00000000-0000-4000-8000-000000000011",
              "defaultCriterionId": null,
              "name": "No handoff",
              "type": "deterministic",
              "condition": {
                "scope": "SCALAR",
                "predicate": {"left": {"path": "escalated", "dataType": "boolean"}, "operator": "==", "right": {"value": false}}
              },
              "blocking": true,
              "judgePrompt": null,
              "passPrompt": null,
              "failPrompt": null,
              "isActive": true,
              "createdAt": "2026-10-12T10:00:00.000Z",
              "updatedAt": "2026-10-12T10:00:00.000Z"
            }
          ],
          "revision": 1,
          "createdAt": "2026-10-12T10:00:00.000Z",
          "updatedAt": "2026-10-12T10:00:00.000Z"
        },
        "criteriaGroups": [
          {
            "id": "00000000-0000-4000-8000-000000000003",
            "companyId": "00000000-0000-4000-8000-000000000011",
            "botId": "00000000-0000-4000-8000-000000000001",
            "name": "Refund checks",
            "criteria": [
              {
                "id": "00000000-0000-4000-8000-000000000012",
                "companyId": "00000000-0000-4000-8000-000000000011",
                "defaultCriterionId": null,
                "name": "No handoff",
                "type": "deterministic",
                "condition": {
                  "scope": "SCALAR",
                  "predicate": {"left": {"path": "escalated", "dataType": "boolean"}, "operator": "==", "right": {"value": false}}
                },
                "blocking": true,
                "judgePrompt": null,
                "passPrompt": null,
                "failPrompt": null,
                "isActive": true,
                "createdAt": "2026-10-12T10:00:00.000Z",
                "updatedAt": "2026-10-12T10:00:00.000Z"
              }
            ],
            "revision": 1,
            "createdAt": "2026-10-12T10:00:00.000Z",
            "updatedAt": "2026-10-12T10:00:00.000Z"
          }
        ],
        "criterionOrigins": {
          "2995012b-d9bf-58e9-c6c7-672205196681": {"groupId": "00000000-0000-4000-8000-000000000003", "groupName": "Refund checks"}
        },
        "result": null,
        "error": null,
        "createdAt": "2026-10-12T10:00:00.000Z",
        "previousResult": null,
        "previousCreatedAt": null,
        "sameSetup": null
      }
    ],
    "createdBy": null
  }
  ```
</ResponseExample>


## Related topics

- [Get run configuration](/en/api-reference/get-test-suite-run-configuration.md)
- [Overview](/en/api-reference/test-suite.md)
- [Get test case](/en/api-reference/get-test-suite-case.md)


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