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

# Get one widget conversation thread

> Read one thread from the visitor's browser, using the widget key and the visitor token the thread was started with. Both are needed; a key alone reaches none.

Call this from the visitor's browser. It takes the embed's **public widget key** in `X-ARUKZ-Widget-Key`, and the browser's `Origin` must be allowed by both the deployment's `allowed_origins` and the platform-wide widget allowlist. See [Website widget](/channels/widget).

You must also send the thread's `X-ARUKZ-Visitor-Token`. A missing token, another thread's token, an unknown conversation ID and a malformed ID all return the same `404`, so a visitor cannot probe for other visitors' threads.

When a request is refused, the response carries no `Access-Control-Allow-Origin` header, so in a cross-origin browser request `fetch` rejects with a network error instead of exposing the error body.

<ParamField path="conversation_id" type="string" required>
  The conversation's ID (UUID), from [Start a widget
  conversation](/api-reference/widget/start-thread).
</ParamField>

<ParamField header="X-ARUKZ-Widget-Key" type="string" required>
  The deployment's public widget key, `arukz_wk_…`.
</ParamField>

<ParamField header="X-ARUKZ-Visitor-Token" type="string" required>
  The visitor token returned when this thread was started.
</ParamField>

<ParamField header="Origin" type="string" required>
  Set by the browser. It must exactly match an origin allowed for this deployment. When you call
  from outside a browser, set it yourself.
</ParamField>

## Response

<ResponseField name="id" type="string" required>The conversation's ID (UUID).</ResponseField>
<ResponseField name="assistant_id" type="string" required>The assistant the deployment embeds.</ResponseField>
<ResponseField name="title" type="string" required>The thread's title.</ResponseField>
<ResponseField name="status" type="string" required>`active` or `archived`.</ResponseField>
<ResponseField name="turn_state" type="string" required>`idle` when ready for a question, or `awaiting_answer` while an answer is being generated.</ResponseField>
<ResponseField name="message_count" type="integer" required>Number of messages, questions and answers together.</ResponseField>
<ResponseField name="created_at" type="string" required>ISO 8601 in UTC.</ResponseField>
<ResponseField name="updated_at" type="string" required>ISO 8601 in UTC.</ResponseField>
<ResponseField name="owner" type="object" required>`{"type": "widget", "id": <deployment ID>}`.</ResponseField>
<ResponseField name="metadata" type="object" required>The metadata sent when the thread was started.</ResponseField>

<RequestExample>
  ```javascript JavaScript theme={"theme":{"light":"github-light","dark":"github-dark"}}
  // Runs on your website.
  const MITHUNAI_API = `${MITHUNAI_URL}/arukz/api/v1`
  const WIDGET_KEY = 'arukz_wk_8d0f5a2e-3c41-4b7a-9e6d-1f2a3b4c5d6e'
  const conversationId = sessionStorage.getItem('mithunai.conversation')

  const response = await fetch(`${MITHUNAI_API}/widget/conversations/${conversationId}`, {
    headers: {
      'X-ARUKZ-Widget-Key': WIDGET_KEY,
      'X-ARUKZ-Visitor-Token': sessionStorage.getItem('mithunai.visitorToken'),
    },
  })
  console.log(await response.json())
  ```

  ```bash cURL theme={"theme":{"light":"github-light","dark":"github-dark"}}
  curl --request GET "$MITHUNAI_URL/arukz/api/v1/widget/conversations/0e6a9b52-7d3f-4c18-a2e5-9b8c7d6e5f4a" \
    --header "X-ARUKZ-Widget-Key: arukz_wk_8d0f5a2e-3c41-4b7a-9e6d-1f2a3b4c5d6e" \
    --header "X-ARUKZ-Visitor-Token: $VISITOR_TOKEN" \
    --header "Origin: https://docs.example.com"
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={"theme":{"light":"github-light","dark":"github-dark"}}
  {
    "id": "0e6a9b52-7d3f-4c18-a2e5-9b8c7d6e5f4a",
    "assistant_id": "5b1e9c2a-7d4f-4e3b-9a61-0c8f2d7e4a13",
    "title": "How do I raise my rate limit?",
    "status": "active",
    "turn_state": "idle",
    "message_count": 2,
    "created_at": "2026-09-24T10:02:17.559310+00:00",
    "updated_at": "2026-09-24T10:02:24.910447+00:00",
    "owner": { "type": "widget", "id": "8d0f5a2e-3c41-4b7a-9e6d-1f2a3b4c5d6e" },
    "metadata": { "page": "/guides/rate-limits" }
  }
  ```

  ```json 401 theme={"theme":{"light":"github-light","dark":"github-dark"}}
  { "code": "authentication_error", "message": "Authentication is required." }
  ```

  ```json 403 theme={"theme":{"light":"github-light","dark":"github-dark"}}
  { "code": "authorization_error", "message": "This widget may not be embedded from that origin." }
  ```

  ```json 404 theme={"theme":{"light":"github-light","dark":"github-dark"}}
  { "code": "not_found", "message": "The requested resource was not found." }
  ```
</ResponseExample>
