---
title: "Set contacts' status in this sequence"
method: POST
path: "/v3/sequences/{id}/contacts/set-status-in-sequence"
tags: ["Sequence Contacts"]
---

# Set contacts' status in this sequence

`POST /v3/sequences/{id}/contacts/set-status-in-sequence`

<small>_Requires the `sequences:operate` scope (or a broader one that includes it)._</small>

Sets the in-sequence status (`active` / `paused` / `finished` / `outOfOffice`) for the given contacts, scoped to **this sequence only**.

To apply across every sequence a contact is in, use `POST /v3/contacts/set-status-in-sequence` instead.

Replied and Bounced are **not** values of this enum — use `POST /v3/sequences/{id}/contacts/set-replied` or `POST /v3/sequences/{id}/contacts/set-bounced` for those.

`paused` requires the contact to currently be `active` in this sequence — pausing from any other state is reported per-item as `invalidStatusTransition`. The other targets (`active`, `finished`, `outOfOffice`) accept any current state.

## Path parameters

- `id` integer, required

## Request body

- object
  - `contactIds` integer[], required — Contact IDs to update. At least one, at most 100. Each ID must be positive.
  - `statusInSequence` 'active' | 'paused' | 'finished' | 'outOfOffice', required — In-sequence status values that can be set via `POST /v3/contacts/set-status-in-sequence` and `POST /v3/sequences/{id}/contacts/set-status-in-sequence`. Replied and Bounced are not values of this enum — they are flipped via the dedicated `set-replied` / `set-bounced` endpoints. OptedOut, Called/ToCall, and MeetingBooked are contact-level (not in-sequence) and are flipped via `PATCH /v3/contacts/{id}` (`isOptedOut`, `callStatus`, `meetingStatus`).

## Response `200`

Non-atomic result. The response body is a dictionary keyed by contact id listing per-item failures. Empty object `{}` means all contacts were updated successfully.

Per-item failures use the `SequenceContactError` enum. Common per-item slugs:

| Slug | Meaning |
| --- | --- |
| `invalidInput` | Generic validation failure for this contact |
| `contactNotFound` | Contact does not exist |
| `notInSequence` | Contact is not in this sequence |
| `invalidStatusTransition` | Disallowed transition from the current state |
| `sequenceArchived` | Sequence is archived |
| `forbidden` | Caller lacks permission for this contact |

- object — Dictionary of per-item failures keyed by contact id. Empty object `{}` means all succeeded.

## Other responses

- `400` — Validation failure on the route parameter or request body (missing/empty `contactIds`, non-positive ids, more than 100 ids, or unsupported `statusInSequence` value), or a business rule rejection.
- `401` — Unauthorized. The response body is empty; check the `WWW-Authenticate` header for the expected scheme.
- `403` — User lacks required feature scope to modify this sequence
- `404` — Sequence not found
- `429` — Too Many Requests

---

[API](https://skmtc.net/reply/apis/reply-api.md) · [All operations](https://skmtc.net/reply/apis/reply-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/reply/reply-api/revisions/1c3d32eaf95e/schema)
