# Count Subscribed

POST /api/v2/projects/{projectId}/crm/count-subscribed-contacts

Counts how many contacts match an audience *and* are still subscribed: the number that would actually receive a campaign, which is lower than a plain contact count once unsubscribes are excluded. Use it to size an audience before sending. Returns only the count, so it is much cheaper than paging List Contacts.

## Request

- projectId: string, path, required — ID of the project to count contacts in.
- contactListId: string — Restrict the count to members of this list. Combine with `contactsFilterGroup`, or omit to count across the whole project.
- contactsFilterGroup: object — Attribute and event conditions the contact must satisfy.
  - 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.

## Response

- 200: Successful response
  - count: number, required
- 400: Invalid input data
- 401: Authorization not provided
- 403: Insufficient access
- 500: Internal server error
