# Public Contacts List

Cursor-paginated list of contacts.

Endpoint: GET /contacts
Version: 1.79.2

## Query parameters:

  - `parent_type` (string)
    Filter to contacts on a specific parent kind (customer or supplier).

  - `parent_id` (string | null)
    Filter to contacts under one specific parent's partner-supplied id. Requires `parent_type` so the same id under both kinds cannot collide.

  - `is_active` (boolean | null)
    Filter by active flag. Omit to return both active and soft-deleted contacts.

  - `cursor` (string | null)
    Opaque cursor from prior page

  - `modified_since` (string | null)
    ISO-8601 lower bound on `updated_at`. Applied only on the first page; the cursor is a strict super-set thereafter.

  - `limit` (integer | null)

## Header parameters:

  - `authorization` (string | null)
    Bearer <mrc_live_…> API key

## Response 200:

  - `200` (unknown)
    Successful Response

## Response 200 fields (application/json):

  - `data` (array, required)

  - `data.id` (integer, required)

  - `data.parent_type` (string, required)
    Which kind of business partner a contact is attached to.
    Enum: "customer", "supplier"

  - `data.parent_id` (string | null)
    Parent's partner-supplied id (customer_id for customers, supplier_id for suppliers)

  - `data.external_id` (string | null)

  - `data.name` (string | null)

  - `data.email` (string | null)

  - `data.phone` (string | null)

  - `data.is_active` (boolean, required)

  - `data.is_default` (boolean, required)

  - `data.custom_fields` (object | null)
    Contact custom fields keyed by the organisation's custom-column label; multi-select values are resolved to option labels. Null when the contact carries none.

  - `data.created_at` (string, required)

  - `data.updated_at` (string, required)

  - `next_cursor` (string | null)

## Response 422:

  - `422` (unknown)
    Validation Error

## Response 422 fields (application/json):

  - `detail` (array)

  - `detail.loc` (array, required)

  - `detail.msg` (string, required)

  - `detail.type` (string, required)

  - `detail.input` (any)

  - `detail.ctx` (object)

