# Query List Members

POST /api/v2/projects/{projectId}/crm/contact-lists/{contactListId}/members/query

The same result as List Members, but as a POST so it can carry a filter group in the body, for narrowing a list to a sub-segment, or naming exactly which contact properties to return. Use this when the query is too rich for a query string.

## Request

- projectId: string, path, required — ID of the project that owns the list.
- contactListId: string, path, required — ID of the contact list to read.
- attributes: string[] — Property names to include on each member. Omit for the default set.
- contactDistinctId: string — Only return the membership for this contact.
- contactsFilterGroup: object — Extra attribute and event conditions applied on top of list membership.
  - filters: object[], required — Attribute filters combined with groupType.
    - attributeDistinctId: string, required — Contact attribute distinct id to filter on.
    - operator: equals | contains | notEquals | notContains | gt | gte | lt | lte | on | since | before | between | last, required — Comparison operator for the attribute value.
    - value: string, required — Value to compare the attribute against.
    - attributeType: string | number | boolean | date | url | email, default string — Attribute type. Defaults to string when omitted.
  - groupType: AND | OR | NOT, required — How filters in this group are combined.
  - oneDayEventFilters: object[] — Event filters evaluated over the last 24 hours only.
    - eventName: string, required — Analytics event name.
    - operator: performed | notPerformed, required — Whether the contact performed the event in the last 24 hours.
  - requireSubscribed: boolean — When true, the group is ANDed with `$subscribed == true`. Set by email sending, not the filter UI.
- orderBy: name | createdAt | updatedAt — Field to sort by.
- orderDirection: asc | desc — Sort direction. Ignored unless `orderBy` is set.
- skip: num
…

## Response

- 200: Successful response
  - count: number, required
  - data: object[], required
    - createdAt: string, required
    - distinctId: string, required
    - id: string, required
    - projectId: string, required
    - properties: object, required
    - toDelete: boolean, required
    - updatedAt: string, required
    - contactListMemberId: string
    - email: string
- 400: Invalid input data
- 401: Authorization not provided
- 403: Insufficient access
- 500: Internal server error
