## List `accounts.contacts.list(straccount_id, ContactListParams**kwargs) -> SyncCursorSearch[User]` **get** `/v1/accounts/{accountID}/contacts/list` List merged contacts for a specific account with cursor-based pagination. ### Parameters - `account_id: str` Account ID this resource belongs to. - `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"` - `limit: Optional[int]` Maximum contacts to return per page. - `query: Optional[str]` Optional search query for blended contact lookup. ### Returns - `class User: …` User the account belongs to. - `id: str` Stable Beeper user ID. Use as the primary key when referencing a person. - `cannot_message: Optional[bool]` 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: Optional[str]` Email address if known. Not guaranteed verified. - `full_name: Optional[str]` Display name as shown in clients (e.g., 'Alice Example'). May include emojis. - `img_url: Optional[str]` Avatar image URL if available. May be temporary or local-only to this device; download promptly if durable access is needed. - `is_self: Optional[bool]` True if this user represents the authenticated account's own identity. - `phone_number: Optional[str]` User's phone number in E.164 format (e.g., '+14155552671'). Omit if unknown. - `username: Optional[str]` Human-readable handle if available (e.g., '@alice'). May be network-specific and not globally unique. ### Example ```python from beeper_desktop_api import BeeperDesktop client = BeeperDesktop() page = client.accounts.contacts.list( account_id="accountID", ) page = page.items[0] print(page.id) ```