---
title: "Set contacts' in-sequence status"
method: POST
path: "/v3/contacts/set-status-in-sequence"
tags: ["Contacts"]
---

# Set contacts' in-sequence status

`POST /v3/contacts/set-status-in-sequence`

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

Sets the in-sequence status (`active` / `paused` / `finished` / `outOfOffice`) for the given contacts across **every sequence** they are currently enrolled in.

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

To restrict the change to a single sequence, use `POST /v3/sequences/{id}/contacts/set-status-in-sequence` instead.

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

## 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 `ContactError` enum. Common per-item slugs:

| Slug | Meaning |
| --- | --- |
| `notFound` | Contact does not exist |
| `forbidden` | Caller lacks permission for this contact |
| `sequenceNotFound` | Derived sequence not accessible |
| `invalidInput` | Value rejected 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 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 the required feature scope to change contact status.
- `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)
