---
title: "List audience enrollment runs"
method: GET
path: "/sequences/{sequenceId}/audience-enrollments"
tags: ["Sequences"]
---

# List audience enrollment runs

`GET /sequences/{sequenceId}/audience-enrollments`

## Request

- Base URL: `https://api.sequenzy.com/api/v1`
- URL: `https://api.sequenzy.com/api/v1/sequences/{sequenceId}/audience-enrollments`
- Auth: HTTP bearer

Recent audience enrollment runs for a sequence, newest first, with their status and counters.

## Path parameters

- `sequenceId` string, required

## Query parameters

- `limit` integer

## Response `200`

Runs

- object
  - `success` boolean
  - `audienceEnrollments` SequenceAudienceEnrollment[]
    - `id` string
    - `sequenceId` string
    - `status` 'queued' | 'running' | 'completed' | 'cancelled' | 'failed'
    - `audience` SequenceAudience: Who to enroll. Same shape as campaign targetLists.
      - `type` 'all' | 'lists' | 'segment' | 'filtered' | 'rules', required
      - `listIds` string[]: For type lists.
      - `segmentId` string: For type segment.
      - `filters` object[]: For type filtered; subscriber filters.
      - `filterJoinOperator` 'and' | 'or'
      - `include` object[]: For type rules; include rules of type all, lists, segments, or filtered.
      - `exclude` object[]: For type rules; exclude rules.
      - `excludedSubscriberIds` string[]: Contacts removed from the include rules. Does not remove contacts listed in includedSubscriberIds.
      - `includedSubscriberIds` string[]: Specific contacts to enroll in addition to the include rules. Use type rules with an empty include array to enroll only these contacts, with no per-request cap. IDs that belong to another company, or to contacts who are unsubscribed, bounced or without an email, are skipped.
    - `includedSubscriberCount` integer: Number of hand-picked contacts in `audience.includedSubscriberIds`, 0 when none.
    - `data` object, nullable: Run-level data passed when the run was started, read by the run's emails as `{{enrollment.<field>}}`. Null when none was given.
    - `targetNodeId` string, nullable: Step contacts start at.
    - `estimatedCount` integer: Audience size estimated when the run started.
    - `processedCount` integer: Subscribers scanned so far.
    - `enrolledCount` integer
    - `skippedCount` integer: Matching contacts skipped because they were already in the sequence (or, for one_time sequences, finished it before).
    - `source` string
    - `error` string, nullable
    - `createdAt` string, date-time
    - `scheduledFor` string, date-time, nullable: Delayed start. While set and in the future the run stays queued; cancel it before then to prevent the enrollment.
    - `startedAt` string, date-time, nullable
    - `completedAt` string, date-time, nullable
    - `cancelRequestedAt` string, date-time, nullable

## Other responses

- `401`: Unauthorized
- `404`: Sequence not found

## Changes

- **2026-10-22** `66405b8b1aca`: 2 info
  - added the optional property `audienceEnrollments/items/audience/includedSubscriberIds` to the response with the `200` status
  - added the optional property `audienceEnrollments/items/includedSubscriberCount` to the response with the `200` status
- **2026-10-16** `db3873ca3d4d`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/sequenzy/apis/sequenzy-api/changes/sequences/:sequenceId/audience-enrollments/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.dev/sequenzy/apis/sequenzy-api/revisions/3d816357b738?raw)
