---
title: "Update a Sequence Template"
method: PATCH
path: "/v1/sequence-templates/{sequence_template_id}"
tags: ["Sequence Templates"]
---

# Update a Sequence Template

`PATCH /v1/sequence-templates/{sequence_template_id}`

Updates an existing sequence template. All fields are optional, but at least one must be provided. `steps`, `transitions`, and `blocks` replace the current value when supplied; each supplied step must include its `id`.

Supply `steps` (ordered by `index`), `transitions`, and `blocks` together; see each field's schema for its shape and allowed values. A step references a block via a `[[block:<id>]]` marker in its `message`/`subject`, and a `transition` links steps by `index` sequentially or on a branch. Example:

{"steps": [{"index": 1, "day": 0, "hour": 9, "type": "auto_email", "subject": "Quick question", "message": "<p>Hi {{recipient.first_name}} [[block:intro]]</p>"}, {"index": 2, "day": 2, "hour": 9, "type": "auto_linkedin_connection", "message": "Let's connect"}], "transitions": [{"from_step_index": 1, "to_step_index": 2, "transition_type": "PREVIOUS_STEP_COMPLETES"}], "blocks": {"intro": {"name": "Intro", "block_type": "MANUAL", "content": "..."}}}

Template variables must be namespaced. Supported tokens are `{{recipient.first_name}}`, `{{recipient.last_name}}`, `{{recipient.company}}`, `{{recipient.email}}`, `{{sender.first_name}}`, `{{sender.last_name}}`, and `{{sender.company}}`.

## Path parameters

- `sequence_template_id` string, uuid, required

## Request body

- UpdateSequenceTemplateRequest — Request body for updating a sequence template. All fields optional.
  - `name` string, nullable — New name for the sequence template
  - `description` string, nullable — New description for the sequence template
  - `status` 'ACTIVE' | 'INACTIVE' | 'ARCHIVED' — User-settable sequence-template statuses. Intentionally a subset of `campaigns.types.sequence_template.CampaignStatusEnum`: excludes DRAFT, an internal-only authoring state.
  - `steps` SequenceTemplateStepRequest[], nullable — Replacement list of steps (full replacement, not partial). Must be supplied together with `transitions`
    - `index` integer, nullable — Position of the step within the template (1-based)
    - `title` string, nullable — Display title of the step
    - `day` integer, nullable — Day offset from the start of the sequence
    - `hour` integer, nullable — Hour of day the step is scheduled for
    - `type` 'generic' | 'auto_email' | 'manual_email' | 'auto_linkedin_connection' | 'manual_linkedin_connection' | 'auto_linkedin_message' | 'manual_linkedin_message' | 'auto_linkedin_inmail' | 'manual_linkedin_inmail' | 'auto_phone' | 'manual_phone' | 'internal_email' | 'gifting_via_email' | 'gifting_via_address' | 'complete_sequence', required
    - `subject` string, nullable — Subject line (email and gifting steps)
    - `message` string, nullable — Message body for the step
    - `gift_id` string, nullable — ID of the gift attached to a gifting step
  - `transitions` SequenceTemplateTransitionRequest[], nullable — Replacement list of transitions. Must be supplied together with `steps`; pass `[]` if the new step list has no transitions. A transition that omits its lead-time delay defaults to 3 business days: on `post_check_delay` for accepted-branch transitions (LINKEDIN_REQUEST_ACCEPTED, GIFT_ACCEPTED), on `pre_check_delay` for all others. Pass an explicit 0 to evaluate immediately.
    - `from_step_index` integer, required — Index of the source step within the template
    - `to_step_index` integer, required — Index of the destination step within the template
    - `transition_type` 'PREVIOUS_STEP_COMPLETES' | 'PREVIOUS_STEP_RUNS' | 'GIFT_DELIVERED' | 'PREVIOUS_STEP_SCHEDULED' | 'LINKEDIN_REQUEST_ACCEPTED' | 'LINKEDIN_REQUEST_NOT_ACCEPTED' | 'GIFT_ACCEPTED' | 'GIFT_NOT_ACCEPTED', required
    - `pre_check_time_unit` string — Time unit for `pre_check_delay`. One of `seconds`, `minutes`, `hours`, `days`, or `business_days`.
    - `pre_check_delay` integer, nullable — A grace window before this transition's condition starts being evaluated, measured from when the source step completed (in `pre_check_time_unit`). Use it when the condition could be satisfied immediately but you want to wait first — e.g. after an email is sent, hold off 2 business days before checking for a reply, giving the prospect time to respond. If omitted or null, defaults to 3 business days — except on accepted-branch transitions (LINKEDIN_REQUEST_ACCEPTED, GIFT_ACCEPTED), where the default lands on `post_check_delay` and this stays null. Pass an explicit 0 to evaluate immediately as soon as the source step completes.
    - `post_check_time_unit` string — Time unit for `post_check_delay`. One of `seconds`, `minutes`, `hours`, `days`, or `business_days`.
    - `post_check_delay` integer, nullable — A pacing delay after this transition's condition has passed, before the destination step is scheduled (in `post_check_time_unit`). Use it to avoid an instantaneous, robotic-feeling response to a prospect-driven event — e.g. wait a business day after a LinkedIn connection is accepted before pitching, or after a gift is delivered before the thank-you. For accepted-branch transitions (LINKEDIN_REQUEST_ACCEPTED, GIFT_ACCEPTED), if omitted or null this defaults to 3 business days; pass an explicit 0 to schedule the next step immediately. `null` or `0` schedules immediately for all other transition types.
    - `require_all` boolean — Whether all conditions must be met (vs. any of them)
  - `blocks` object, nullable — Replacement content blocks referenced by this template

## Response `200`

Successful Response

- PublicItemResponseSequenceTemplateDetailResponse
  - `data` SequenceTemplateDetailResponse, required — Sequence template with its ordered list of steps and transitions.
    - `id` string, required — Unique identifier for the sequence template
    - `name` string, required — Name of the sequence template
    - `description` string, nullable — Description of the sequence template
    - `status` 'ACTIVE' | 'INACTIVE' | 'DRAFT' | 'ARCHIVED', required
    - `owner_id` string, nullable — ID of the user who owns the sequence template
    - `is_default` boolean — Whether this template is the default for the organization
    - `archived_at` string, date-time, nullable — Date and time the sequence template was archived
    - `created_at` string, date-time, nullable — Date and time the sequence template was created
    - `updated_at` string, date-time, nullable — Date and time the sequence template was last updated
    - `steps` SequenceTemplateStepResponse[] — Ordered list of steps in the template
      - `id` string, required — Unique identifier for the step
      - `index` integer, nullable — Position of the step within the template (1-based)
      - `title` string, nullable — Display title of the step
      - `day` integer, nullable — Day offset from the start of the sequence
      - `hour` integer, nullable — Hour of day the step is scheduled for
      - `type` 'generic' | 'auto_email' | 'manual_email' | 'auto_linkedin_connection' | 'manual_linkedin_connection' | 'auto_linkedin_message' | 'manual_linkedin_message' | 'auto_linkedin_inmail' | 'manual_linkedin_inmail' | 'auto_phone' | 'manual_phone' | 'internal_email' | 'gifting_via_email' | 'gifting_via_address' | 'complete_sequence', required
      - `subject` string, nullable — Subject line (email and gifting steps)
      - `message` string, nullable — Message body for the step
      - `gift_id` string, nullable — ID of the gift attached to a gifting step
    - `transitions` SequenceTemplateTransitionResponse[] — Transitions between steps (ordering and branching rules)
      - `from_step_index` integer, required — Index of the source step within the template
      - `to_step_index` integer, required — Index of the destination step within the template
      - `transition_type` 'PREVIOUS_STEP_COMPLETES' | 'PREVIOUS_STEP_RUNS' | 'GIFT_DELIVERED' | 'PREVIOUS_STEP_SCHEDULED' | 'LINKEDIN_REQUEST_ACCEPTED' | 'LINKEDIN_REQUEST_NOT_ACCEPTED' | 'GIFT_ACCEPTED' | 'GIFT_NOT_ACCEPTED', required
      - `pre_check_time_unit` string — Time unit for `pre_check_delay`. One of `seconds`, `minutes`, `hours`, `days`, or `business_days`.
      - `pre_check_delay` integer, nullable — A grace window before this transition's condition starts being evaluated, measured from when the source step completed (in `pre_check_time_unit`). Use it when the condition could be satisfied immediately but you want to wait first — e.g. after an email is sent, hold off 2 business days before checking for a reply, giving the prospect time to respond. `null` or `0` evaluates as soon as the source step completes.
      - `post_check_time_unit` string — Time unit for `post_check_delay`. One of `seconds`, `minutes`, `hours`, `days`, or `business_days`.
      - `post_check_delay` integer, nullable — A pacing delay after this transition's condition has passed, before the destination step is scheduled (in `post_check_time_unit`). Use it to avoid an instantaneous, robotic-feeling response to a prospect-driven event — e.g. wait a business day after a LinkedIn connection is accepted before pitching, or after a gift is delivered before the thank-you. `null` or `0` schedules the next step immediately.
      - `require_all` boolean — Whether all conditions must be met (vs. any of them)
    - `blocks` object — Content blocks referenced anywhere in this template, keyed by block id. A step's subject/message may contain [[block:<uuid>]] markers; each <uuid> appears as a key in this dict.
  - `meta` ResponseMeta
    - `timestamp` string, date-time — Server timestamp of the response

## Other responses

- `4XX` — Client error

---

[API](https://skmtc.dev/monaco/apis/monaco-public-api.md) · [All operations](https://skmtc.dev/monaco/apis/monaco-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/monaco/monaco-public-api/revisions/ec4d9b2b035b/schema)
