---
title: "Stream AI job results"
method: GET
path: "/v1/ai/jobs/{jobId}/result"
tags: ["AI"]
---

# Stream AI job results

`GET /v1/ai/jobs/{jobId}/result`

Retrieve the full result of a completed AI job, including all actions taken by the AI (queries generated, data retrieved) and the final summarized answer. 

Results are only available for jobs in `COMPLETE` state and are retained for 14 days after completion. The response is streamed directly from storage.

## Path parameters

- `jobId` string, uuid, required

## Response `200`

Job results retrieved successfully

- object
  - `actions` object[] — Ordered list of actions the AI took during execution. Each action represents a step such as generating a query, executing it, or synthesizing a final answer.
    - `type` string, required — The type of action. Common types include `generate_query` (query generation and execution) and `summarize` (final answer synthesis).
    - `message` string, required — The AI's explanation of what it is doing in this step, written in natural language.
    - `timestamp` string, required — ISO 8601 timestamp when this action occurred.
    - `result` object — Query result data. Only present for `generate_query` action types.
      - `resultId` string — Stable, unique identifier for this query result within the job. Use it to reference a specific result — for example, to correlate or de-duplicate results across responses.
      - `queryName` string, required — Human-readable name describing what this query retrieves.
      - `status` 'success' | 'error', required — Whether the query executed successfully.
      - `query` object, required — The semantic query definition that was executed. This can be used with the [Run query endpoint](/api/queries/run-query) to re-run the query.
      - `csvResult` string, required — Query results formatted as CSV text.
      - `csvResultWasTruncated` boolean, required — Whether the CSV data was truncated due to size limits. If `true`, the full result set may contain additional rows not included in `csvResult`.
      - `hasResults` boolean, required — Whether the query returned any data rows.
      - `totalRowCount` integer, required — Total number of rows returned by the query.
  - `message` string — The AI's final response message in Markdown format. This is the complete answer to the original prompt, incorporating data from all executed queries.
  - `resultSummary` string — Summary of the job result. Typically matches the final message content.
  - `topic` string — The topic name used for query generation.
  - `omniChatUrl` string, uri — URL to view this conversation in the Omni chat interface. Opens the chat session where the job actions and results are visible.

## Other responses

- `400` — Bad Request Possible error messages: - `Invalid job ID`
- `401` — Unauthorized Possible error messages: - `Missing or invalid API key`
- `404` — Job not found or results not available Possible error messages: - `Job not found` - `Job results not yet available` - `Result is no longer available`. Results are retained for 14 days.
- `429` — Too Many Requests - Rate limit exceeded (60 requests/minute)
- `500` — Internal Server Error

---

[API](https://skmtc.net/omni/apis/omni-api.md) · [All operations](https://skmtc.net/omni/apis/omni-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/omni/omni-api/revisions/6b02f7349d0e/schema)
