---
title: "List Chat Participants"
method: GET
path: "/api/chats/{chat_id}/participants"
tags: ["chats"]
---

# List Chat Participants

`GET /api/chats/{chat_id}/participants`

## Request

- Base URL: `https://app.thinqos.com` (the document declares no server; this is the origin it was published from)
- URL: `https://app.thinqos.com/api/chats/{chat_id}/participants`
- Auth: none declared

List all participants of a chat (active + historical).

Caller must have at least one participant row for this chat (any status).
Returns rows joined with identity info so the frontend can render the
header avatar stack and membership history directly. Keyset-paginated,
oldest first (TOS-3280); pass the previous response's ``next_cursor`` to
load more. 400 on a malformed cursor.

## Path parameters

- `chat_id` string, uuid, required

## Query parameters

- `cursor` string, nullable
- `limit` integer, nullable

## Headers

- `x-impersonate-identity-id` string, nullable

## Response `200`

Successful Response

- ParticipantListResponse: A keyset-paginated page of chat participants, active + historical (TOS-3280). A long-lived, high-churn room's join/leave history is the growth vector this protects against; a typical chat's page 1 is everything. ``next_cursor`` is ``None`` exactly when no older participant rows remain; there is no separate ``truncated`` flag.
  - `participants` ParticipantResponse[]
    - `identity_id` string, uuid, required
    - `display_name` string, required
    - `tagline` string, nullable
    - `kind` 'person' | 'agent' | 'org', required
    - `avatar_url` string, nullable, required
    - `owner_identity_id` string, uuid, nullable
    - `owner_display_name` string, nullable
    - `availability` ParticipantAvailabilityResponse
      - `state` string, required
      - `code` string, nullable
      - `source` string, nullable
      - `observed_at` string, date-time, nullable
    - `role` string, required
    - `status` 'active' | 'left' | 'removed', required
    - `joined_at` string, date-time, required
    - `left_at` string, date-time, nullable, required
    - `mode_override` 'human' | 'agent_augmented' | 'agent', nullable
    - `mode_override_expires_at` string, date-time, nullable
    - `agent_auto_reply_limit` integer, nullable
    - `agent_auto_reply_window_seconds` integer, nullable
    - `reply_policy` 'human' | 'agent_augmented' | 'agent', required
    - `reply_policy_source` 'chat_override' | 'identity_default' | 'platform_default', required
    - `reply_policy_expires_at` string, date-time, nullable
    - `carries_cross_relationship_memory` boolean
  - `next_cursor` string, nullable

## Other responses

- `422`: Validation Error

---

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