---
title: "Cancel an audience enrollment run"
method: POST
path: "/sequences/{sequenceId}/audience-enrollments/{runId}/cancel"
tags: ["Sequences"]
---

# Cancel an audience enrollment run

`POST /sequences/{sequenceId}/audience-enrollments/{runId}/cancel`

## Request

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

Cancels a queued run immediately or asks a running run to stop after the batch it is currently enrolling. Contacts already enrolled stay in the sequence.

## Path parameters

- `sequenceId` string, required
- `runId` string, required

## Response `200`

Cancelled or stopping

- object
  - `success` boolean
  - `audienceEnrollment` SequenceAudienceEnrollment: One background audience enrollment run.
    - `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
  - `message` string

## Other responses

- `400`: The run already finished
- `401`: Unauthorized
- `404`: Sequence or run not found

## Changes

- **2026-10-22** `66405b8b1aca`: 2 info
  - added the optional property `audienceEnrollment/audience/includedSubscriberIds` to the response with the `200` status
  - added the optional property `audienceEnrollment/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/:runId/cancel/post.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/8156dc12d8b4?raw)
