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

# Read a conversation

> Status, answers, citations and documents; optionally waits for the run to end

Returns a conversation with every turn. While research runs, poll with `wait=45`: the request holds until the run ends or 45 seconds pass, so a run of a few minutes takes a handful of calls.

## Path parameters

<ParamField path="conversation_id" type="string" required>
  The conversation's id.
</ParamField>

## Query parameters

<ParamField query="wait" type="number" default={0}>
  Seconds to wait for a running conversation to finish, 0 to 45. The response
  comes as soon as the status leaves `running`, or when the time is up. `0`
  returns at once.
</ParamField>

## Response

<ResponseField name="conversation_id" type="string">
  The conversation's id.
</ResponseField>

<ResponseField name="status" type="string">
  `running`, `completed`, `needs_input`, `stopped` or `error`: the latest
  message's status. After a stopped follow-up it is `stopped` while the last
  turn is the previous answer. See
  [Statuses](/api-reference/v3/conversations/overview#statuses).
</ResponseField>

<ResponseField name="url" type="string">
  The conversation on rhizomeai.com, for the API key's owner.
</ResponseField>

<ResponseField name="turns" type="array">
  Every message and its answer, oldest first. A stopped message is removed, so
  a conversation whose first message was stopped has no turns.

  <Expandable title="Turn object">
    <ResponseField name="turn_index" type="integer">
      Position in the conversation, from 0.
    </ResponseField>

    <ResponseField name="message" type="string">
      The message you sent.
    </ResponseField>

    <ResponseField name="status" type="string">
      This turn's status.
    </ResponseField>

    <ResponseField name="answer" type="string | null">
      The answer in markdown, with citation markers like `[1]`. `null` until
      the turn is `completed` or `needs_input`.
    </ResponseField>

    <ResponseField name="citations" type="array">
      Sources cited in the answer. Empty until the turn finishes.

      <Expandable title="Citation object">
        <ResponseField name="index" type="integer">
          The number used in the answer, as in `[1]`.
        </ResponseField>

        <ResponseField name="name" type="string">
          The source document and page.
        </ResponseField>

        <ResponseField name="dataset" type="string">
          The dataset's name.
        </ResponseField>

        <ResponseField name="date" type="string | null">
          The document's date, when it has one.
        </ResponseField>

        <ResponseField name="page_num" type="integer | null">
          The cited page. The first page is 1.
        </ResponseField>

        <ResponseField name="url" type="string">
          Opens the source in the conversation on rhizomeai.com.
        </ResponseField>

        <ResponseField name="block_id" type="string">
          Only on a passage citation: the paragraph or table rows cited, such
          as `¶3` or `¶3-5`. `parent_index` is then the citation of the page
          they are on.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="question" type="object | null">
      Set when the agent asked a clarifying question instead of answering:
      `question` (text) and `options` (suggested replies, possibly empty).
    </ResponseField>

    <ResponseField name="submitted_at" type="string | null">
      When the message was sent, ISO 8601.
    </ResponseField>

    <ResponseField name="steps" type="array">
      Only on a running turn: progress so far, such as
      `{"message": "Researching sources…", "count": 14}`.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="documents" type="array">
  Reports, files and images the agent produced in this conversation, with `id`,
  `title`, `type` (`text`, `file` or `image`) and `created_at`. Fetch one with
  [Get a document](/api-reference/v3/conversations/document).
</ResponseField>

<ResponseField name="error" type="string | null">
  Why the run failed, when `status` is `error`.
</ResponseField>

## Errors

| Status | Code | Description |
| - | - | - |
| 400 | `invalid_request` | `wait` isn't a number from 0 to 45 |
| 404 | `not_found` | No conversation with this id in your account |

Plus `401` and `429`, see [Errors](/api-reference/v3/conversations/overview#errors).

<RequestExample>
  ```bash cURL theme={null}
  curl "https://rhizomeai.com/api/v3/conversations/3b1f8c6e-2a4d-4c1e-9f2a-7d5e6b8c9a01?wait=45" \
    -H "x-api-key: YOUR_API_KEY"
  ```

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

  conversation_id = "3b1f8c6e-2a4d-4c1e-9f2a-7d5e6b8c9a01"
  while True:
      response = requests.get(
          f"https://rhizomeai.com/api/v3/conversations/{conversation_id}",
          headers={"x-api-key": "YOUR_API_KEY"},
          params={"wait": 45},
      )
      response.raise_for_status()
      conversation = response.json()
      if conversation["status"] != "running":
          break

  print(conversation["turns"][-1]["answer"])
  ```
</RequestExample>

<ResponseExample>
  ```json Completed theme={null}
  {
    "conversation_id": "3b1f8c6e-2a4d-4c1e-9f2a-7d5e6b8c9a01",
    "status": "completed",
    "url": "https://rhizomeai.com/ask/v3/3b1f8c6e-2a4d-4c1e-9f2a-7d5e6b8c9a01",
    "turns": [
      {
        "turn_index": 0,
        "message": "What De Novo requests has the FDA granted this year?",
        "status": "completed",
        "answer": "The FDA granted 31 De Novo requests so far this year [1]. ...",
        "citations": [
          {
            "index": 1,
            "name": "DEN240012 Decision Summary, p.1",
            "dataset": "FDA 510(k) and De Novo",
            "date": "2026-03-14",
            "page_num": 1,
            "url": "https://rhizomeai.com/ask/v3/3b1f8c6e-2a4d-4c1e-9f2a-7d5e6b8c9a01?showSourceNumber=1"
          }
        ],
        "question": null,
        "submitted_at": "2026-10-09T14:02:11.000Z"
      }
    ],
    "documents": [],
    "error": null
  }
  ```

  ```json Running theme={null}
  {
    "conversation_id": "3b1f8c6e-2a4d-4c1e-9f2a-7d5e6b8c9a01",
    "status": "running",
    "url": "https://rhizomeai.com/ask/v3/3b1f8c6e-2a4d-4c1e-9f2a-7d5e6b8c9a01",
    "turns": [
      {
        "turn_index": 0,
        "message": "What De Novo requests has the FDA granted this year?",
        "status": "running",
        "answer": null,
        "citations": [],
        "question": null,
        "submitted_at": "2026-10-09T14:02:11.000Z",
        "steps": [
          { "message": "Planning the research approach…", "count": 1 },
          { "message": "Researching sources…", "count": 9 }
        ]
      }
    ],
    "documents": [],
    "error": null
  }
  ```
</ResponseExample>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.