---
title: "Add contacts to a sequence"
method: POST
path: "/v1/sequences/{id}/contacts"
tags: ["Sequences"]
---

# Add contacts to a sequence

`POST /v1/sequences/{id}/contacts`

Adds contacts to an existing sequence. Each item may optionally specify an `assignedToWorkspaceMembershipId` (a workspace membership id obtained via `GET /v1/workspaces/:id/members`). Items without `assignedToWorkspaceMembershipId` are auto-assigned via round-robin among the sequence assignees (least loaded first). Idempotent: duplicates, contacts already in the sequence, and contacts outside the sequence scope are silently ignored. Soft-deleted sequence-contacts are resurrected (their original assignee is preserved; an `assignedToWorkspaceMembershipId` in the body is ignored for resurrected rows). Returns 404 if the sequence is outside the API key scope. On concurrent requests for the same contact, the winner among competing `assignedToWorkspaceMembershipId` values is undefined; verify with GET /v1/sequences/:id/contacts.

## Path parameters

- `id` string, required

## Request body

- ContactAssignmentBatchDto
  - `contacts` ContactAssignmentDto[], required — Array of 1–100 contact assignment entries. Per item: `contactId` is required; `assignedToWorkspaceMembershipId` optional. Duplicates, contacts already in the sequence, and out-of-scope contacts are silently ignored.
    - `contactId` string, uuid, required — The contact UUID (v4).
    - `assignedToWorkspaceMembershipId` string, uuid — Optional workspace-membership UUID identifying the assignee (the user within the workspace). Obtain via GET /v1/workspaces/:id/members. If omitted, the contact is auto-assigned via round-robin among the sequence assignees. If provided, must belong to the sequence workspace AND be one of the sequence assignees, otherwise 400.

## Response `201`

Contacts added

- unknown

## Other responses

- `400` — Validation error, or an explicit `assignedToWorkspaceMembershipId` is not in the sequence assignees / not in the sequence workspace.
- `401` — Invalid or missing API key
- `403` — Subscription required or plan not eligible
- `404` — Sequence not found or outside API key scope

---

[API](https://skmtc.net/skipcall/apis/skipcall-public-api.md) · [All operations](https://skmtc.net/skipcall/apis/skipcall-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/skipcall/skipcall-public-api/versions/f594352719bd/schema)
