## List `chats.list(ChatListParams**kwargs) -> SyncCursorNoLimit[ChatListResponse]` **get** `/v1/chats` List all chats sorted by last activity (most recent first). Combines all accounts into a single paginated list. ### Parameters - `account_ids: Optional[SequenceNotStr[str]]` Limit to specific account IDs. If omitted, fetches from all accounts. - `cursor: Optional[str]` Opaque pagination cursor; do not inspect. Use together with 'direction'. - `direction: Optional[Literal["after", "before"]]` Pagination direction used with 'cursor': 'before' fetches older results, 'after' fetches newer results. Defaults to 'before' when only 'cursor' is provided. - `"after"` - `"before"` ### Returns - `class ChatListResponse: …` - `preview: Optional[Message]` Last message preview for this chat, if available. - `id: str` Message ID. - `account_id: str` Beeper account ID the message belongs to. - `chat_id: str` Unique identifier of the chat. - `sender_id: str` Sender user ID. - `sort_key: str` A unique, sortable key used to sort messages. - `timestamp: datetime` Message timestamp. - `attachments: Optional[List[Attachment]]` Attachments included with this message, if any. - `type: Literal["unknown", "img", "video", "audio"]` Attachment type. - `"unknown"` - `"img"` - `"video"` - `"audio"` - `id: Optional[str]` Attachment identifier (typically an mxc:// URL). Use with /v1/assets/download to get a local file path. - `duration: Optional[float]` Duration in seconds (audio/video). - `file_name: Optional[str]` Original filename if available. - `file_size: Optional[float]` File size in bytes if known. - `is_gif: Optional[bool]` True if the attachment is a GIF. - `is_sticker: Optional[bool]` True if the attachment is a sticker. - `is_voice_note: Optional[bool]` True if the attachment is a voice note. - `mime_type: Optional[str]` MIME type if known (e.g., 'image/png'). - `poster_img: Optional[str]` Preview image URL for video attachments (poster frame). May be temporary or local-only to this device; download promptly if durable access is needed. - `size: Optional[Size]` Pixel dimensions of the attachment: width/height in px. - `height: Optional[float]` - `width: Optional[float]` - `src_url: Optional[str]` Public URL or local file path to fetch the asset. May be temporary or local-only to this device; download promptly if durable access is needed. - `is_sender: Optional[bool]` True if the authenticated user sent the message. - `is_unread: Optional[bool]` True if the message is unread for the authenticated user. May be omitted. - `linked_message_id: Optional[str]` ID of the message this is a reply to, if any. - `reactions: Optional[List[Reaction]]` Reactions to the message, if any. - `id: str` Reaction ID, typically ${participantID}${reactionKey} if multiple reactions allowed, or just participantID otherwise. - `participant_id: str` User ID of the participant who reacted. - `reaction_key: str` The reaction key: an emoji (😄), a network-specific key, or a shortcode like "smiling-face". - `emoji: Optional[bool]` True if the reactionKey is an emoji. - `img_url: Optional[str]` URL to the reaction's image. May be temporary or local-only to this device; download promptly if durable access is needed. - `sender_name: Optional[str]` Resolved sender display name (impersonator/full name/username/participant name). - `text: Optional[str]` Plain-text body if present. May include a JSON fallback with text entities for rich messages. - `type: Optional[Literal["TEXT", "NOTICE", "IMAGE", 7 more]]` Message content type. Useful for distinguishing reactions, media messages, and state events from regular text messages. - `"TEXT"` - `"NOTICE"` - `"IMAGE"` - `"VIDEO"` - `"VOICE"` - `"AUDIO"` - `"FILE"` - `"STICKER"` - `"LOCATION"` - `"REACTION"` ### Example ```python from beeper_desktop_api import BeeperDesktop client = BeeperDesktop() page = client.chats.list() page = page.items[0] print(page) ```