---
title: "Add a new variant to an existing step"
method: POST
path: "/v1/sequences/{sequenceId}/steps/{stepId}/variants"
tags: ["sequences"]
---

# Add a new variant to an existing step

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

Append a variant to an existing step. Email steps support up to 26 variants (A/B…Z); other channels support a single active variant at a time.

The <code>payload</code> shape must match the step's channel — Email variants take <code>{ subject, content, preheader? }</code>; LinkedIn Connection Request takes <code>{ connectionNote }</code>; LinkedIn Message/InMail takes <code>{ message }</code> (+ <code>subject</code> for InMail); ViewProfile, PostInteraction, Call, Task and Whatsapp steps accept <code>{}</code>. See OpenAPI.md.

## Path parameters

- `sequenceId` string, required
- `stepId` string, required

## Request body

- CreateSequenceStepVariantDto
  - `type` 'Email' | 'LinkedInConnectionRequest' | 'LinkedInMessage' | 'LinkedInInMail' | 'LinkedInViewProfile' | 'LinkedInPostInteration' | 'Custom' | 'CallIntroduction' | 'CallDemo' | 'CallFollowUp' | 'CallReminder' | 'CallOther' | 'WhatsappMessage' | 'WhatsappVoiceMessage' | 'WhatsappVoiceCall', required — Channel type of the variant. Must match the parent step. 1=Email, 2=LinkedInConnectionRequest, 3=LinkedInMessage, 4=LinkedInInMail, 5=LinkedInViewProfile, 6=LinkedInPostInteraction, 9=Task, 11=CallIntroduction, 12=CallDemo, 13=CallFollowUp, 14=CallReminder, 15=CallOther, 16=WhatsappMessage, 17=WhatsappVoiceMessage, 18=WhatsappVoiceCall.
  - `payload` object, required — Payload for the variant. Shape depends on the channel: - Email (type=1): `{ subject, content, preheader? }` - LinkedInConnectionRequest (type=2): `{ connectionNote }` - LinkedInMessage (type=3): `{ message }` - LinkedInInMail (type=4): `{ subject, message }` - ViewProfile/PostInteraction/Task/Call/Whatsapp: `{}` (empty object) See OpenAPI.md.
  - `attachmentIds` string[] — Hashed IDs of attachments to include (Email variants only). Upload via POST /v1/attachments to obtain an ID.
  - `taskNote` string — Task note for the generated task. NOT allowed on Email variants (type=1) — edge rejects it because Email is automated, not task-based. Use for LinkedIn / Call / Task / WhatsApp channels.
  - `absoluteDays` number — Override day number for this variant. Defaults to the step's absoluteDays.
  - `assigneeId` string — Hashed user ID to assign generated tasks to (task-based channels). Defaults to the sequence owner.
  - `priority` 'Urgent' | 'High' | 'Normal' | 'Low' — Task priority (1=Urgent, 2=High, 3=Normal, 4=Low). Used when the channel generates a task.

## Response `201`

Sequence step variant created

## Other responses

- `400` — 1001: Invalid token<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)
