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

# Get Case Results

> Retrieve the output variables of a finished case

Fetch the output of a case once it has finished. Each entry in `results` is an output variable from the workflow's output schema with its resolved value.

<Note>
  If you provided a `callbackUrl` in [Execute Case](/api-reference/v1-case/execute-case), the same results are also POSTed to it when the case finishes — polling this endpoint is not required in that setup.
</Note>

## Path Parameters

<ParamField path="caseId" type="string" required>
  The case ID returned by [Initiate Case](/api-reference/v1-case/initiate-case)
</ParamField>

## Headers

<ParamField header="x-service-key" type="string" required>
  Your API authentication key
</ParamField>

## Response

<ResponseField name="results" type="object" required>
  The case's output variables keyed by variable name.

  <Expandable title="Output Variable Properties">
    <ResponseField name="value" type="any">
      The resolved value of the output variable
    </ResponseField>

    <ResponseField name="type" type="string">
      The data type of the variable (e.g. `str`, `float`, `file`)
    </ResponseField>

    <ResponseField name="displayName" type="string">
      Human-readable name of the variable
    </ResponseField>
  </Expandable>
</ResponseField>

<Note>
  If the case has not finished yet, the endpoint responds with HTTP `202 Accepted` and no results. Poll [Get Case Status](/api-reference/v1-case/get-case-status) until the case reaches a terminal status before fetching results.
</Note>

## Errors

<ResponseField name="202" type="Accepted">
  The case has not finished yet — results are not available. Retry later.
</ResponseField>

<ResponseField name="401" type="Unauthorized">
  Missing, invalid, or expired API key.
</ResponseField>

<ResponseField name="404" type="Not Found">
  The case does not exist.
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl --request GET \
    --url https://operator.opus.com/api/v1/case/{YOUR_CASE_ID}/results \
    --header 'x-service-key: {YOUR_SERVICE_KEY}'
  ```

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

  url = "https://operator.opus.com/api/v1/case/{YOUR_CASE_ID}/results"
  headers = {"x-service-key": "{YOUR_SERVICE_KEY}"}

  response = requests.get(url, headers=headers)
  print(response.json())
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch(
    "https://operator.opus.com/api/v1/case/{YOUR_CASE_ID}/results",
    {
      method: "GET",
      headers: {
        "x-service-key": "{YOUR_SERVICE_KEY}",
      },
    }
  );

  const data = await response.json();
  console.log(data);
  ```
</RequestExample>

<ResponseExample>
  ```json 200 Response theme={null}
  {
    "results": {
      "{OUTPUT_VARIABLE_1}": {
        "value": "The generated summary text",
        "type": "str",
        "displayName": "Summary"
      },
      "{OUTPUT_VARIABLE_2}": {
        "value": "https://files.opus.com/...",
        "type": "file",
        "displayName": "Generated Report"
      }
    }
  }
  ```

  ```json 202 Response (still running) theme={null}
  {
    "statusCode": 202,
    "message": "V2 job results not yet available for job with ID {CASE_ID}",
    "timestamp": "2026-08-05T10:15:00.000Z",
    "path": "/api/v1/case/{CASE_ID}/results",
    "errorCode": ""
  }
  ```
</ResponseExample>
