---
title: "One conversation, whole"
method: GET
path: "/api/v1/ask/conversations/{id}"
tags: ["Dardaris"]
---

# One conversation, whole

`GET /api/v1/ask/conversations/{id}`

## Request

- Base URL: `http://localhost:5180`
- URL: `http://localhost:5180/api/v1/ask/conversations/{id}`
- Auth: API key in cookie `better-auth.session_token`

Every turn of it, in the order they were asked, with the answer as it was given at the time. An answer here is a transcript and not a live figure: the records have moved on since, and asking the question again is what recomputes it.

## Path parameters

- `id` string, required

## Response `200`

The conversation and its turns.

- object
  - `ok` unknown, required
  - `data` object, required
    - `conversation` object, required
      - `id` string, required: Stable record id, e.g. `lse_012`.
      - `title` string, required: The opening question, cut to a line.
      - `turnCount` integer, required: How many questions were asked in it.
      - `startedAt` string, required: ISO 8601 timestamp.
      - `updatedAt` string, required: When the last question was asked. What the list is ordered by.
      - `turns` object[], required
        - `id` string: The id the client gave the turn when it asked, where it gave one.
        - `question` string, required
        - `askedAt` string, required: ISO 8601 timestamp.
        - `answer` object, nullable, required: What was answered at the time. It is the transcript, not a live figure: ask again to recompute it.
          - `key` string, required: Stable id of the builder that produced it, so a pinned view can recompute the answer from live records.
          - `title` string, required
          - `status` 'unsure' | 'failed' | 'expired' | 'chat' | 'generated': Why the answer reads the way it does. Absent is the ordinary case: the question matched squarely and the figure was computed from records. `unsure` matched only just, and the explanation leads with that doubt. `failed` means the builder threw, so nothing was computed and no figure is claimed. `expired` is a pinned view whose builder has left the library. `chat` is a greeting or a thank you, not a figure at all. A client must not render `failed` or `chat` as a measurement.
          - `headline` object
            - `value` string, required
            - `label` string, required
            - `tone` 'neutral' | 'brand' | 'good' | 'warning' | 'serious' | 'critical' | 'info'
          - `explanation` string, required: What was computed, and from which records. This is what makes the figure checkable.
          - `table` object
            - `columns` string[], required
            - `rows` array[], required
              - …
            - `align` string[]
          - `chart` object
            - `kind` 'bar' | 'line' | 'donut', required
            - `labels` string[], required
            - `series` object[], required
              - …
            - `format` 'money' | 'percent' | 'number'
          - `list` object[]
            - `label` string, required
            - `sublabel` string
            - `value` string
            - `tone` 'neutral' | 'brand' | 'good' | 'warning' | 'serious' | 'critical' | 'info'
            - `link` string
            - `quote` string: A document’s own words where it matched the question.
            - `documentId` string: The document this row is, for a filing answer.
          - `links` object[]: Where to go for the full detail.
            - `label` string, required
            - `to` string, required
          - `sourceCount` number, required: How many records the figure was derived from. This is what makes it trustworthy.
          - `sourceLabel` string, required
          - `action` object: The first of `actions`, kept for a reader built before an answer could propose more than one.
            - `action` string, required: The operationId to run, as the MCP catalogue names it.
            - `summary` string, required: What running it does, in one sentence.
            - `path` object
            - `query` object
            - `body` unknown
          - `actions` object[]: Every change the assistant worked out and did not make, in the order it means them to be made. Nothing happens until each is sent to `POST /ask/actions`.
            - `action` string, required: The operationId to run, as the MCP catalogue names it.
            - `summary` string, required: What running it does, in one sentence.
            - `path` object
            - `query` object
            - `body` unknown
          - `handoff` boolean: True when the person asked for a human, so the chat is for the helpdesk.
          - `cards` object[]: Answers worked out from the records that a written answer shows under itself, each with its own figure, table or chart.
            - `key` string, required: Stable id of the builder that produced it, so a pinned view can recompute the answer from live records.
            - `title` string, required
            - `status` 'unsure' | 'failed' | 'expired' | 'chat' | 'generated': Why the answer reads the way it does. Absent is the ordinary case: the question matched squarely and the figure was computed from records. `unsure` matched only just, and the explanation leads with that doubt. `failed` means the builder threw, so nothing was computed and no figure is claimed. `expired` is a pinned view whose builder has left the library. `chat` is a greeting or a thank you, not a figure at all. A client must not render `failed` or `chat` as a measurement.
            - `headline` object
              - …
            - `explanation` string, required: What was computed, and from which records. This is what makes the figure checkable.
            - `table` object
              - …
            - `chart` object
              - …
            - `list` object[]
              - …
            - `links` object[]: Where to go for the full detail.
              - …
            - `sourceCount` number, required: How many records the figure was derived from. This is what makes it trustworthy.
            - `sourceLabel` string, required
            - `action` object: The first of `actions`, kept for a reader built before an answer could propose more than one.
              - …
            - `actions` object[]: Every change the assistant worked out and did not make, in the order it means them to be made. Nothing happens until each is sent to `POST /ask/actions`.
              - …
            - `handoff` boolean: True when the person asked for a human, so the chat is for the helpdesk.
          - `context` string: What a written answer was worked out from. Send it back with the turn in `history`, so a follow-up builds on it.
        - `attachments` object[]: The files the question carried, by name. The file itself is held for a day unless it was filed.
          - `id` string, required
          - `name` string, required
          - `contentType` string, required
  - `meta` object, required
    - `requestId` string, required: Echoed in the x-request-id header. Quote it in a bug report.

## Other responses

- `404`: No conversation with that id is one of yours.

---

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