---
title: "Retrieve Contact List Memberships"
method: POST
path: "/v1/lists/contacts"
tags: ["Lists", "v1"]
---

# Retrieve Contact List Memberships

`POST /v1/lists/contacts`

Find out which lists each of your contacts belongs to. Pass up to 100 contact IDs in `ids` and get one entry per contact, in the same order.

Each entry names the lists by ID. Pass `include=lists` to get each list's full details instead, so you do not need a second call to resolve names.

Credit Note: This endpoint does not consume credits.

:::info
Requires the `lists:read` OAuth2 scope.
:::

## Query parameters

- `account_id` string, required
- `include` 'lists'

## Request body

- object
  - `ids` string[], required — Contact IDs to look up. A maximum of 100 IDs can be passed.

## Response `200`

Contact list memberships retrieved

- object
  - `data` object[], required — One entry per requested contact, in the order the IDs were supplied.
    - `type` 'contact', required
    - `id` string, required — The Leadfeeder contact ID.
    - `relationships` object, required
      - `lists` union[], required — The lists this contact belongs to, empty when it belongs to none. Bare references by default — resolve names via **Retrieve Lists** — or full list records when the request passes `include=lists`.
        - union
          - object — A bare reference to a list by ID.
            - `type` 'list', required
            - `id` string, required — The list ID, as returned by the **Retrieve Lists** and **Get List Details** endpoints.
          - ListV1
            - `type` 'list', required — The type of the object
            - `id` string, required — The unique identifier for the list
            - `attributes` object, required
              - …
            - `relationships` object, required
              - …
  - `meta` object, required
    - `request_id` string, required — A unique identifier assigned to each API request for end-to-end traceability.

## Other responses

- `400` — The supplied contact IDs are missing or invalid
- `401` — Unauthorized. The request was rejected because the credentials are missing, invalid, expired, or have been revoked. The client must re-authenticate before retrying. Clients can differentiate via the `code` value of the first item in `errors`.
- `403` — Forbidden. The credentials are valid but the caller is not authorized to perform the request — typically because the user lacks the required permission, the OAuth scope is insufficient, the subscription plan does not include the required entitlement, the `account_id` does not belong to the authenticated user, or the target list is read-only and its members cannot be modified. Clients can differentiate via the `code` value of the first item in `errors`.
- `429` — Too many requests. Either the per-second rate limit or the monthly quota configured for the API key / OAuth application has been exceeded. Clients can differentiate via the `code` value of the first item in `errors`.
- `500` — Internal server error
- `504` — Server timeout

---

[API](https://skmtc.dev/leadfeeder/apis/leadfeeder-public-api.md) · [All operations](https://skmtc.dev/leadfeeder/apis/leadfeeder-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/leadfeeder/leadfeeder-public-api/revisions/3b95d5a53148/schema)
