---
title: "Get Agent Run Result"
method: GET
path: "/v2/agents/{agent_id}/runs/{run_id}/result"
tags: ["Public API"]
---

# Get Agent Run Result

`GET /v2/agents/{agent_id}/runs/{run_id}/result`

## Request

- Base URL: `https://sdk.nimbleway.com`
- URL: `https://sdk.nimbleway.com/v2/agents/{agent_id}/runs/{run_id}/result`
- Auth: HTTP bearer

Fetch the output of a completed run. The `output` is `type: "text"` (a prose answer) or `type: "json"` (structured data matching the output schema), plus `trust` metadata with per-claim citations for the answer.

While the run is still `queued` or `running` this endpoint returns `409`; if the run `failed` or was `cancelled` it returns `422` with the run and error details.

## Path parameters

- `agent_id` string, uuid, required
- `run_id` string, required

## Response `200`

Run completed; the output is returned.

- TaskRunResultPublicV2
  - `output` union, required: Output from the completed task.
    - TaskRunTextOutputPublicV2
      - `content` string, required: The final prose answer.
      - `trust` TextRunTrust, required: Trust metadata for a prose answer: run-level confidence plus per-claim citations.
        - `claims` TextClaimTrust[], required: Per-claim trust, keyed by callout markers in the answer text.
          - `callout` integer, required: Callout marker number referencing this claim in the answer text.
          - `citations` TrustCitation[], required: Citations backing this claim.
            - `excerpts` string[], nullable: Verbatim excerpts supporting the claim.
            - `extract_template_name` string, nullable: Extract template used to read the source, when one was used.
            - `source_category` 'official' | 'news' | 'social' | 'academic' | 'aggregator' | 'other': What *kind* of source this is (classified by the compress LLM), independent of TrustSourceType (how authoritative it is for a specific claim). Deliberately uses "official" rather than "primary" so the two axes can never collide. Also doubles as the sub-question's ``source_intent`` (what kind of source a question *needs*) — the two concepts overlap enough that a single enum lets ``classify_source_importance`` compare "what we got" against "what we asked for" directly.
            - `source_intent` 'official' | 'news' | 'social' | 'academic' | 'aggregator' | 'other': What *kind* of source this is (classified by the compress LLM), independent of TrustSourceType (how authoritative it is for a specific claim). Deliberately uses "official" rather than "primary" so the two axes can never collide. Also doubles as the sub-question's ``source_intent`` (what kind of source a question *needs*) — the two concepts overlap enough that a single enum lets ``classify_source_importance`` compare "what we got" against "what we asked for" directly.
            - `source_type` 'primary' | 'secondary'
            - `title` string, nullable: Title of the cited page.
            - `url` string, required: URL of the cited page.
          - `confidence` 'high' | 'medium' | 'low' | 'pre_existing', required
          - `reasoning` string, required: Why this confidence level was assigned.
        - `confidence` 'high' | 'medium' | 'low' | 'pre_existing', required
        - `reasoning` string, required: Why this confidence level was assigned.
        - `sources` TrustSource[], required: Sources consulted while producing the answer.
          - `extract_template_name` string, nullable: Extract template used to read the source, when one was used.
          - `source_category` 'official' | 'news' | 'social' | 'academic' | 'aggregator' | 'other': What *kind* of source this is (classified by the compress LLM), independent of TrustSourceType (how authoritative it is for a specific claim). Deliberately uses "official" rather than "primary" so the two axes can never collide. Also doubles as the sub-question's ``source_intent`` (what kind of source a question *needs*) — the two concepts overlap enough that a single enum lets ``classify_source_importance`` compare "what we got" against "what we asked for" directly.
          - `source_intent` 'official' | 'news' | 'social' | 'academic' | 'aggregator' | 'other': What *kind* of source this is (classified by the compress LLM), independent of TrustSourceType (how authoritative it is for a specific claim). Deliberately uses "official" rather than "primary" so the two axes can never collide. Also doubles as the sub-question's ``source_intent`` (what kind of source a question *needs*) — the two concepts overlap enough that a single enum lets ``classify_source_importance`` compare "what we got" against "what we asked for" directly.
          - `title` string, nullable: Title of the source page.
          - `type` 'primary' | 'secondary', required
          - `url` string, required: URL of the source page.
      - `type` 'text': Output content type.
    - TaskRunJsonOutputPublicV2
      - `content` union, required: The final structured output.
        - object
        - unknown[]
          - unknown
      - `trust` JsonRunTrust, required: Trust metadata for a structured answer: run-level confidence plus per-value citations.
        - `claims` JsonClaimTrust[], required: Per-value trust, keyed by JSON path in the structured output.
          - `citations` TrustCitation[], required: Citations backing this value.
            - `excerpts` string[], nullable: Verbatim excerpts supporting the claim.
            - `extract_template_name` string, nullable: Extract template used to read the source, when one was used.
            - `source_category` 'official' | 'news' | 'social' | 'academic' | 'aggregator' | 'other': What *kind* of source this is (classified by the compress LLM), independent of TrustSourceType (how authoritative it is for a specific claim). Deliberately uses "official" rather than "primary" so the two axes can never collide. Also doubles as the sub-question's ``source_intent`` (what kind of source a question *needs*) — the two concepts overlap enough that a single enum lets ``classify_source_importance`` compare "what we got" against "what we asked for" directly.
            - `source_intent` 'official' | 'news' | 'social' | 'academic' | 'aggregator' | 'other': What *kind* of source this is (classified by the compress LLM), independent of TrustSourceType (how authoritative it is for a specific claim). Deliberately uses "official" rather than "primary" so the two axes can never collide. Also doubles as the sub-question's ``source_intent`` (what kind of source a question *needs*) — the two concepts overlap enough that a single enum lets ``classify_source_importance`` compare "what we got" against "what we asked for" directly.
            - `source_type` 'primary' | 'secondary'
            - `title` string, nullable: Title of the cited page.
            - `url` string, required: URL of the cited page.
          - `confidence` 'high' | 'medium' | 'low' | 'pre_existing', required
          - `path` string, required: JSON path of the value in the structured output this claim refers to.
          - `reasoning` string, required: Why this confidence level was assigned.
        - `confidence` 'high' | 'medium' | 'low' | 'pre_existing', required
        - `reasoning` string, required: Why this confidence level was assigned.
        - `sources` TrustSource[], required: Sources consulted while producing the answer.
          - `extract_template_name` string, nullable: Extract template used to read the source, when one was used.
          - `source_category` 'official' | 'news' | 'social' | 'academic' | 'aggregator' | 'other': What *kind* of source this is (classified by the compress LLM), independent of TrustSourceType (how authoritative it is for a specific claim). Deliberately uses "official" rather than "primary" so the two axes can never collide. Also doubles as the sub-question's ``source_intent`` (what kind of source a question *needs*) — the two concepts overlap enough that a single enum lets ``classify_source_importance`` compare "what we got" against "what we asked for" directly.
          - `source_intent` 'official' | 'news' | 'social' | 'academic' | 'aggregator' | 'other': What *kind* of source this is (classified by the compress LLM), independent of TrustSourceType (how authoritative it is for a specific claim). Deliberately uses "official" rather than "primary" so the two axes can never collide. Also doubles as the sub-question's ``source_intent`` (what kind of source a question *needs*) — the two concepts overlap enough that a single enum lets ``classify_source_importance`` compare "what we got" against "what we asked for" directly.
          - `title` string, nullable: Title of the source page.
          - `type` 'primary' | 'secondary', required
          - `url` string, required: URL of the source page.
      - `type` 'json': Output content type.
  - `run` TaskRunResponsePublicV2, required
    - `completed_at` string, date-time, nullable: When the run completed.
    - `created_at` string, date-time, required: When the run was created.
    - `effort` 'low' | 'medium' | 'high' | 'x-high' | 'max', required: Canonical effort tier names for the research graph.
    - `error` TaskRunErrorPublicV2
      - `message` string, required: Human-readable error description.
      - `ref_id` string, required: Reference ID (equals the run id).
    - `id` string, required: Run identifier, format "task_run_{uuid}".
    - `interaction_id` string, required: Interaction ID.
    - `is_active` boolean, required: True while status is 'queued' or 'running'.
    - `prompt` string, nullable: Prompt submitted for the run.
    - `started_at` string, date-time, nullable: When the run started executing.
    - `status` 'queued' | 'running' | 'completed' | 'failed' | 'cancelled', required: Lowercase status values used in API responses (distinct from the DB-level TaskRunStatus enum).
    - `web_search_agent_id` string, required: Agent this run belongs to.

## Other responses

- `404`: Run not found for this agent.
- `409`: Run is still queued or running. Poll `GET .../runs/{run_id}` until `status` is `completed`, then retry.
- `422`: The run failed or was cancelled. `detail` carries the run and its error.

---

[API](https://skmtc.dev/nimbleway/apis/nimble-sdk.md) - [All operations](https://skmtc.dev/nimbleway/apis/nimble-sdk/llms.txt) - [OpenAPI document](https://skmtc.dev/nimbleway/apis/nimble-sdk/revisions/75720b84c9d7?raw)
