---
title: "List or search the address book"
method: GET
path: "/v1/accounts/{account_id}/contacts"
tags: ["Contacts"]
---

# List or search the address book

`GET /v1/accounts/{account_id}/contacts`

## Request

- Base URL: `https://api.whatsmcp.com`
- URL: `https://api.whatsmcp.com/v1/accounts/{account_id}/contacts`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

## Path parameters

- `account_id` string, required

## Query parameters

- `query` string
- `after_cursor` string
- `limit` integer
- `include_pictures` boolean

## Response `200`

OK

- ListContactsOutput
  - `contacts` ContactView[], nullable, required
    - `jid` string: WhatsApp's own identifier for this contact
    - `name` string: the best available display name
    - `name_source` string: saved, business, or push — push names are chosen by the contact themselves
    - `phone` string: the contact's number in international form — pass this to wa_send_message
    - `picture_url` string: only with include_pictures: a WhatsApp-hosted URL that expires, so fetch it promptly. Empty means not visible to this account or not retrieved this time — see note. A contact without a phone number never has one
  - `has_more` boolean: true when more contacts remain after this page
  - `next_cursor` string: pass this as after_cursor to continue; page until has_more is false to read the whole address book
  - `note` string
  - `refusal` Refusal
    - `account_status` string: when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked
    - `account_status_reason` string: the detail of account_status, e.g. no_egress, stopped, no_plan
    - `message` string, required: a human-readable explanation
    - `reason` string, required: why the call was declined
    - `refused` boolean, required: true when the call was declined rather than performed
    - `retry_after_seconds` integer: seconds to wait before retrying; absent or 0 means retrying will not help
    - `since` string: when the number stopped working, RFC3339, when known
  - `total` integer, required: how many contacts matched in total, before the limit was applied
  - `truncated` boolean: true when more contacts exist than were returned

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `409`: Conflict
- `422`: Unprocessable Entity
- `429`: Too Many Requests
- `500`: Internal Server Error

---

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