---
title: "List subscribers"
method: GET
path: "/subscribers"
tags: ["Subscribers"]
---

# List subscribers

`GET /subscribers`

Lists subscribers with stable pagination and optional filtering by status, free-text query, tags, list, segment, attribute, or email. Non-attribute results are ordered by createdAt descending with subscriber ID as a deterministic tie-breaker. Attribute-filtered results use ClickHouse-first cursor pagination ordered by subscriber ID ascending and do not include a total count.

## Query parameters

- `page` integer
- `limit` integer
- `cursor` string
- `status` 'active' | 'unsubscribed' | 'bounced' | 'all'
- `query` string
- `email` string
- `tags` string
- `attribute` string
- `attributeOperator` 'is' | 'contains' | 'gt' | 'gte' | 'lt' | 'lte' | 'is_not_empty'
- `list` string
- `listId` string
- `listName` string
- `segmentId` string

## Response `200`

Successful response

- object
  - `success` boolean
  - `subscribers` Subscriber[]
    - `id` string
    - `email` string, email, nullable — Null for phone-only (SMS) contacts, which are identified by their phone number instead.
    - `externalId` string, nullable — Customer-owned app/customer/user ID for this subscriber
    - `firstName` string, nullable
    - `lastName` string, nullable
    - `phone` string, nullable — Phone number in E.164 format
    - `smsStatus` 'not_subscribed' | 'pending' | 'subscribed' | 'unsubscribed' — SMS marketing consent status, independent of the email status
    - `status` 'active' | 'unsubscribed' | 'bounced'
    - `emailProvider` string, nullable
    - `tags` string[]
    - `customAttributes` object
    - `createdAt` string, date-time
    - `updatedAt` string, date-time
  - `pagination` Pagination
    - `page` integer
    - `limit` integer
    - `total` integer
    - `totalPages` integer

## Other responses

- `400` — Invalid status filter
- `401` — Unauthorized
- `404` — Segment or list not found
- `500` — Internal server error

## Changes

- **2026-08-02** `36f92fc0caa2` — 4 breaking
  - the response property `success` became optional for the status `400`
  - the response property `success` became optional for the status `401`
  - the response property `success` became optional for the status `404`
  - the response property `success` became optional for the status `500`
- **2026-07-31** `6a6a58564a5e` — 1 breaking
  - the response property `subscribers/items/email` became nullable for the status `200`
- **2026-07-10** `1b0d5fa83cd8` — 2 info
  - added the optional property `subscribers/items/phone` to the response with the `200` status
  - added the optional property `subscribers/items/smsStatus` to the response with the `200` status
- **2026-07-06** `cdd2cd1ed733` — 3 info
  - added the new optional `query` request parameter `attribute`
  - added the new optional `query` request parameter `attributeOperator`
  - added the new optional `query` request parameter `cursor`
- **2026-06-03** `dd0b78881e49` — 5 info
  - added the new optional `query` request parameter `list`
  - added the new optional `query` request parameter `listId`
  - added the new optional `query` request parameter `listName`
  - added the new enum value `all` to the `query` request parameter `status`
  - …1 more

[Full history](https://skmtc.dev/sequenzy/apis/sequenzy-api/changes/subscribers/get.md)

---

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