## Search `client.chats.search(ChatSearchParamsquery?, RequestOptionsoptions?): CursorSearch` **get** `/v1/chats/search` Search chats by title/network or participants using Beeper Desktop's renderer algorithm. ### Parameters - `query: ChatSearchParams` - `accountIDs?: Array` Provide an array of account IDs to filter chats from specific messaging accounts only - `cursor?: string` Opaque pagination cursor; do not inspect. Use together with 'direction'. - `direction?: "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"` - `inbox?: "primary" | "low-priority" | "archive"` Filter by inbox type: "primary" (non-archived, non-low-priority), "low-priority", or "archive". If not specified, shows all chats. - `"primary"` - `"low-priority"` - `"archive"` - `includeMuted?: boolean | null` Include chats marked as Muted by the user, which are usually less important. Default: true. Set to false if the user wants a more refined search. - `lastActivityAfter?: string` Provide an ISO datetime string to only retrieve chats with last activity after this time - `lastActivityBefore?: string` Provide an ISO datetime string to only retrieve chats with last activity before this time - `limit?: number` Set the maximum number of chats to retrieve. Valid range: 1-200, default is 50 - `query?: string` Literal token search (non-semantic). Use single words users type (e.g., "dinner"). When multiple words provided, ALL must match. Case-insensitive. - `scope?: "titles" | "participants"` Search scope: 'titles' matches title + network; 'participants' matches participant names. - `"titles"` - `"participants"` - `type?: "single" | "group" | "any"` Specify the type of chats to retrieve: use "single" for direct messages, "group" for group chats, or "any" to get all types - `"single"` - `"group"` - `"any"` - `unreadOnly?: boolean | null` Set to true to only retrieve chats that have unread messages ### Returns - `Chat` - `id: string` Unique identifier of the chat across Beeper. - `accountID: string` Account ID this chat belongs to. - `participants: Participants` Chat participants information. - `hasMore: boolean` True if there are more participants than included in items. - `items: Array` Participants returned for this chat (limited by the request; may be a subset). - `id: string` Stable Beeper user ID. Use as the primary key when referencing a person. - `cannotMessage?: boolean` True if Beeper cannot initiate messages to this user (e.g., blocked, network restriction, or no DM path). The user may still message you. - `email?: string` Email address if known. Not guaranteed verified. - `fullName?: string` Display name as shown in clients (e.g., 'Alice Example'). May include emojis. - `imgURL?: string` Avatar image URL if available. May be temporary or local-only to this device; download promptly if durable access is needed. - `isSelf?: boolean` True if this user represents the authenticated account's own identity. - `phoneNumber?: string` User's phone number in E.164 format (e.g., '+14155552671'). Omit if unknown. - `username?: string` Human-readable handle if available (e.g., '@alice'). May be network-specific and not globally unique. - `total: number` Total number of participants in the chat. - `title: string` Display title of the chat as computed by the client/server. - `type: "single" | "group"` Chat type: 'single' for direct messages, 'group' for group chats. - `"single"` - `"group"` - `unreadCount: number` Number of unread messages. - `isArchived?: boolean` True if chat is archived. - `isMuted?: boolean` True if chat notifications are muted. - `isPinned?: boolean` True if chat is pinned. - `lastActivity?: string` Timestamp of last activity. - `lastReadMessageSortKey?: string` Last read message sortKey. - `localChatID?: string | null` Local chat ID specific to this Beeper Desktop installation. ### Example ```typescript import BeeperDesktop from '@beeper/desktop-api'; const client = new BeeperDesktop(); // Automatically fetches more pages as needed. for await (const chat of client.chats.search()) { console.log(chat.id); } ```