---
title: "A thread with its messages, oldest first"
method: GET
path: "/assistant/threads/{threadId}"
tags: ["Assistant"]
---

# A thread with its messages, oldest first

`GET /assistant/threads/{threadId}`

404 when the thread is not the caller's (another user's thread is indistinguishable from a missing one). Requires org.view_dashboard.

## Response `200`

The thread and its messages

- AssistantThreadDetailResponse
  - `data` object, required
    - `messages` AssistantMessage[], required
      - `createdAt` string, date-time, required
      - `id` string, required
      - `jobId` string — The job a continuation reports on.
      - `parts` AssistantPart[], required
        - `type` string, required
      - `role` string, required — user or assistant
      - `status` string, required — complete, error or streaming
      - `trigger` string — user; job (a continuation after a background job); ui (a template note for an action on another page)
    - `thread` AssistantThread, required
      - `activeJobs` integer — Queued and running background jobs in the thread.
      - `createdAt` string, date-time, required
      - `id` string, required
      - `title` string, required
      - `unread` boolean — A continuation landed since the thread was last opened (GET thread clears it).
      - `updatedAt` string, date-time, required
      - `waitingForUser` boolean — A workflow in the thread waits for the user (a card to confirm, or a page to finish on).
    - `workflows` AssistantWorkflowSummary[], required
      - `id` string, required
      - `kind` string, required — document_emissions, bom_footprint or supplier_research
      - `status` string, required — active, waiting_job, waiting_user, completed, failed or cancelled
      - `step` string, required — document_emissions: UPLOADED, EXTRACTING, ROWS_READY, NEEDS_REVIEW, SUBMITTED, EXTRACTION_FAILED, CANCELLED. bom_footprint: SCANNED, IMPORTING, LINES_READY, FOOTPRINT_READY, NEEDS_REVIEW, SAVED, IMPORT_FAILED, CANCELLED. supplier_research: RESEARCHING, RESEARCHED, RESEARCH_FAILED. EXTRACTING and IMPORTING also cover a re-run started on the review page (waitingFor ui_action); CANCELLED is a record deleted on its page.
      - `stepCount` integer, required
      - `stepIndex` integer, required
      - `stepLabel` string, required
      - `title` string, required
      - `updatedAt` string, date-time, required
      - `waitingFor` object, nullable
        - `kind` string — job, user_confirm or ui_action
        - `ref` string

## Other responses

- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found

## Changes

- **2026-10-01** `b4751fd15397` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/greentally/apis/esgai-api/changes/assistant/threads/:threadId/get.md)

---

[API](https://skmtc.dev/greentally/apis/esgai-api.md) · [All operations](https://skmtc.dev/greentally/apis/esgai-api/llms.txt) · [OpenAPI document](https://skmtc.dev/greentally/apis/esgai-api/revisions/b4751fd15397?raw)
