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

# Explain single- vs multi-response threads

> Groups saved responses by thread and classifies why a conversation ended after one reply or continued.

Groups saved responses by thread and classifies why a conversation ended after one reply or continued.

### Query parameters

<ParamField query="orgId" type="string">
  Org id
</ParamField>

<ParamField query="agentId" type="string">
  Agent id
</ParamField>

<ParamField query="limit" type="integer">
  Rows (default 5000)
</ParamField>

<ParamField query="includeThreads" type="boolean">
  Per-thread classifications
</ParamField>

<ParamField query="sampleLimit" type="integer">
  Representative samples per class (default 10)
</ParamField>

### Response

`ThreadAnalyticsResponse`

<ResponseField name="ok" type="boolean" />

<ResponseField name="generatedAt" type="string (date-time)" />

<ResponseField name="analysis" type="object">
  <Expandable title="analysis">
    <ResponseField name="summary" type="object">
      <Expandable title="summary">
        <ResponseField name="totalThreads" type="number" />

        <ResponseField name="totalResponsePairs" type="number" />

        <ResponseField name="singleResponseThreads" type="number" />

        <ResponseField name="multiResponseThreads" type="number" />

        <ResponseField name="followupPairsBeyondFirst" type="number" />
      </Expandable>
    </ResponseField>

    <ResponseField name="singleResponseReasons" type="object[]">
      <Expandable title="singleResponseReasons">
        <ResponseField name="reason" type="string">
          `likely_resolved_one_shot`, `prompted_user_or_abandoned`, `needs_followup_or_escalation`, `test_internal`, `unclear_low_signal`
        </ResponseField>

        <ResponseField name="threads" type="number" />

        <ResponseField name="pctOfThreads" type="number" />
      </Expandable>
    </ResponseField>

    <ResponseField name="multiResponseReasons" type="object[]">
      <Expandable title="multiResponseReasons">
        <ResponseField name="reason" type="string">
          `support_followup_or_escalation`, `order_subscription_verification_flow`, `product_discovery_or_guided_shopping`, `customer_clarification_loop`, `general_multi_turn`, `test_internal`
        </ResponseField>

        <ResponseField name="threads" type="number" />

        <ResponseField name="responsePairs" type="number" />
      </Expandable>
    </ResponseField>

    <ResponseField name="pairCountDistribution" type="object[]">
      <Expandable title="pairCountDistribution">
        <ResponseField name="responsePairs" type="number" />

        <ResponseField name="threads" type="number" />
      </Expandable>
    </ResponseField>

    <ResponseField name="daily" type="object[]">
      <Expandable title="daily">
        <ResponseField name="date" type="string" />

        <ResponseField name="singleResponseThreads" type="number" />
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

### Status codes

| Code  | Meaning |
| ----- | ------- |
| `200` | OK      |
| `400` | Error   |
| `401` | Error   |

<RequestExample>
  ```bash cURL theme={null}
  curl --request GET \
    --url 'https://api.example.com/api/response/thread-analytics' \
    --header 'x-widget-token: YOUR_API_KEY'
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "ok": true,
    "generatedAt": "2026-08-31T14:22:05Z",
    "analysis": {
      "summary": {
        "totalThreads": 1.5,
        "totalResponsePairs": 1.5,
        "singleResponseThreads": 1.5,
        "multiResponseThreads": 1.5,
        "followupPairsBeyondFirst": 1.5
      },
      "singleResponseReasons": [
        {
          "reason": null,
          "threads": null,
          "pctOfThreads": null
        }
      ],
      "multiResponseReasons": [
        {
          "reason": null,
          "threads": null,
          "responsePairs": null
        }
      ],
      "pairCountDistribution": [
        {
          "responsePairs": null,
          "threads": null
        }
      ],
      "daily": [
        {
          "date": null,
          "singleResponseThreads": null
        }
      ]
    }
  }
  ```
</ResponseExample>
