---
title: "Update the schedule, entry delay, or conditions of a subsequence"
method: PATCH
path: "/v1/sequences/{sequenceId}/subsequence/{subsequenceId}"
tags: ["subsequences"]
---

# Update the schedule, entry delay, or conditions of a subsequence

`PATCH /v1/sequences/{sequenceId}/subsequence/{subsequenceId}`

Update the <code>scheduleId</code>, <code>firstStepRelativeDays</code>, and/or <code>conditions</code> on a subsequence. All fields optional — omit to leave unchanged.

<strong>Conditions are full-replacement</strong> — supplying the field replaces the entire set, it does not append. Supplying <code>conditions: []</code> is silently ignored by the internal API and does NOT clear conditions.

Response is always <code>{"message": "Subsequence updated successfully"}</code> — call Get Subsequence Settings to read the updated state.

## Path parameters

- `sequenceId` string, required
- `subsequenceId` string, required

## Request body

- UpdateSubsequenceDto
  - `scheduleId` number — Replace the current sending schedule. Use <code>GET /v1/schedules</code> to list available IDs.
  - `firstStepRelativeDays` number — Replace the entry delay (days after the trigger before the first step runs). Minimum 1.
  - `conditions` ConditionDto[] — Replace all current conditions with this new set (full-replacement, not append). Must contain at least 1 item when supplied. Passing <code>conditions: []</code> is silently ignored by the internal API — does NOT clear conditions.
    - `conditionId` string — Client-assigned identifier for the condition. Any string; auto-generated (11-char hex) when omitted.
    - `name` 'Email Open Count' | 'Replied' | 'Reply Body Contains' | 'Link Click' | 'Prospect Outcome' | 'Last Step Completed' | 'Prospect Tag', required — Condition type. Must be one of the 7 valid values defined by <code>ConditionName</code>.
    - `operation` 'greater than' | 'less than' | 'greater than or equals' | 'less than or equals' | 'is' | 'is not' | 'is any' | 'is not any' | 'contains', required — Operator valid for the selected <code>name</code>. See the condition matrix in the API docs — invalid name/operation combinations are rejected with a 400.
    - `value` union — Threshold or filter value. Type depends on <code>name</code> × <code>operation</code>: integer, boolean, string[] (URLs or keywords), or integer[] (IDs). Omit entirely for <code>Link Click</code> with <code>is any</code> / <code>is not any</code>.
      - number
      - boolean
      - string[]
      - integer[]

## Response `200`

Subsequence updated successfully

## Other responses

- `400` — 4000: Failed to update subsequence<br><br>1001: Invalid sequence id<br><br>1001: Invalid subsequence id<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)
