---
title: "List Contacts"
method: POST
path: "/v1/contacts/list"
tags: ["Contacts"]
---

# List Contacts

`POST /v1/contacts/list`

Returns a paginated list of contacts.

## Request body

- ContactListRequest
  - `filters` union — Filters to apply. Accepts either a flat list of filter rules, implicitly ANDed together, or a recursive filter expression with 'operator' and 'filters'. When an expression omits 'operator', it defaults to 'and'. Filter field names, their valid operators, and allowed values come from GET /v1/schemas/{entity} — each field lists 'allowed_operators' and 'enum_field_settings.allowed_values'. Custom fields are keyed 'custom_field_<uuid>'; related-entity custom fields use '<relation>.custom_field_<uuid>' and are filter-only.
    - FilterRule[]
      - `field` string, required
      - `condition` string, required
      - `value` unknown
    - FilterExpression — A filter expression with an explicit operator. Contains filters that can be either FilterRule objects (leaf nodes) or nested FilterExpression objects (branch nodes), allowing for arbitrarily nested filter structures.
      - `operator` 'and' | 'or' — Logical operators to combine filters or filter expressions.
      - `filters` union[]
        - union
          - FilterRule
            - `field` string, required
            - `condition` string, required
            - `value` unknown
          - FilterExpression — recursive
  - `page` integer — Page number (1-indexed)
  - `page_size` integer — Number of results per page
  - `sort` string — Field to sort by. Prefix with '-' for descending order.
  - `include_custom_fields` boolean — Whether to include custom fields (`custom_field_<uuid>` keys) on each returned contact. Defaults to true. Set false to omit them for leaner responses; GET /v1/contacts/{contact_id} always returns them.

## Response `200`

Successful Response

- PublicListResponseContactResponse
  - `data` ContactResponse[], required
    - `id` string, required — Unique identifier for the contact
    - `account_id` string, nullable — ID of the associated account
    - `first_name` string, nullable — First name of the contact
    - `last_name` string, nullable — Last name of the contact
    - `email` string, nullable — Email address of the contact
    - `title` string, nullable — Job title of the contact
    - `phone_number` string, nullable — Phone number of the contact
    - `linkedin_url` string, nullable — LinkedIn profile URL
    - `location` string, nullable — Location of the contact
    - `source` string, nullable — Source from which the contact was added
    - `do_not_contact` boolean — Whether the contact has opted out of outreach
    - `notes` string, nullable — Notes about the contact
    - `scoring` ApiPublicApiSchemasContactsScoringInfo
      - `heat_score` string, nullable — Heat score tier
    - `tags` string[] — List of tag names associated with the contact
    - `created_at` string, date-time, required — Date and time the contact was created
    - `updated_at` string, date-time, required — Date and time the contact was last updated
  - `pagination` PaginationInfo, required
    - `page` integer, required — Current page number
    - `page_size` integer, required — Number of results per page
    - `total_count` integer, required — Total number of matching records
    - `total_pages` integer, required — Total number of pages
  - `meta` ResponseMeta
    - `timestamp` string, date-time — Server timestamp of the response

## Other responses

- `4XX` — Client error

---

[API](https://skmtc.net/monaco/apis/monaco-public-api.md) · [All operations](https://skmtc.net/monaco/apis/monaco-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/monaco/monaco-public-api/versions/ec4d9b2b035b/schema)
