---
title: "Create a new step for a sequence"
method: POST
path: "/v1/sequences/{sequenceId}/steps"
tags: ["sequences"]
---

# Create a new step for a sequence

`POST /v1/sequences/{sequenceId}/steps`

Add a step to the sequence. A step belongs to a <code>channel</code> (Email, LinkedIn, Task, Call, Whatsapp) and has at least one variant (up to 26 for A/B testing on Email).

<strong>Required</strong> — <code>channel</code>, <code>absoluteDays</code> (1–999; each day can hold at most one Email step), and <code>variants[]</code> with a <code>payload</code> shape that depends on the channel.

<strong>Optional</strong> — <code>priority</code> (1=Urgent … 4=Low) and <code>assigneeId</code> for task-generating steps; <code>attachmentIds</code> and <code>taskNote</code> per variant. See OpenAPI.md.

## Path parameters

- `sequenceId` string, required

## Request body

- CreateSequenceStepDto
  - `type` 'Email' | 'LinkedInConnectionRequest' | 'LinkedInMessage' | 'LinkedInInMail' | 'LinkedInViewProfile' | 'LinkedInPostInteration' | 'Custom' | 'CallIntroduction' | 'CallDemo' | 'CallFollowUp' | 'CallReminder' | 'CallOther' | 'WhatsappMessage' | 'WhatsappVoiceMessage' | 'WhatsappVoiceCall', required — The task 'type' of step that will be created
  - `priority` 'Urgent' | 'High' | 'Normal' | 'Low' — Priority of the tasks that will be generated by this step, default is NORMAL
  - `assigneeId` string — User ID of the assignee who will be assigned the tasks generated by this step, default = User ID of sequence owner
  - `variants` Variant[], required — An array of variants for the sequence step. Email steps support up to 26 variants (A/B testing); other channels use a single variant. The `payload` shape depends on the step channel — see examples in OpenAPI.md. **Email (type=1)**: `payload = { subject, content, preheader? }`. `taskNote` is NOT allowed (Email is automated, not task-based). **LinkedIn / Call / Task / WhatsApp (type=2,3,4,9,11-18)**: `taskNote` is allowed (these channels generate a task).
    - `payload` SequenceStepVariantPayload
      - `content` string — Email content (HTML)
      - `preheader` string — Email preheader text
      - `subject` string — Email subject line
      - `connectionNote` string — LinkedIn connection note
      - `message` string — LinkedIn InMail or WhatsApp message
      - `title` string — Custom task title
      - `action` object — Custom task action
    - `taskNote` string — Default task note for tasks generated by this variant. NOT allowed on Email variants (type=1) — edge rejects it because Email is automated, not task-based. Use for LinkedIn / Call / Task / WhatsApp channels.
    - `attachmentIds` string[] — Hashed IDs of attachments to include on this variant (Email steps only). Upload via POST /v1/attachments to obtain an ID. IDs are decoded to numbers by the gateway before forwarding to the edge service.
  - `absoluteDays` number, required — The absolute number of days for the sequence step.

## Response `201`

Sequence step created successfully

- SequenceStep
  - `id` string — Unique identifier for the step in the sequence
  - `name` string — Name of the step in the sequence
  - `number` number — Step number in the sequence
  - `type` number — Type of the step
  - `absoluteDays` number — Absolute days for the step

## Other responses

- `400` — 4000: Failed to create sequence step<br><br>
- `500` — 5001: Internal server error, please try again later<br><br>

---

[API](https://skmtc.dev/saleshandy/apis/develop-with-saleshandy.md) · [All operations](https://skmtc.dev/saleshandy/apis/develop-with-saleshandy/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/saleshandy/develop-with-saleshandy/revisions/fdaa0f2dcdfb/schema)
