---
title: "Apply a built-in sequence template to a campaign (e.g. template_name='voice-note-follow-up'). Copies follow_up steps as-"
method: POST
path: "/api/v1/campaigns/{campaign_id}/apply-template"
tags: ["campaigns"]
---

# Apply a built-in sequence template to a campaign (e.g. template_name='voice-note-follow-up'). Copies follow_up steps as-

`POST /api/v1/campaigns/{campaign_id}/apply-template`

## Request

- Base URL: `https://crispy.sh`
- URL: `https://crispy.sh/api/v1/campaigns/{campaign_id}/apply-template`
- Auth: HTTP bearer

## Path parameters

- `campaign_id` string, required

## Request body

- object
  - `template_name` string, required: Template name (e.g. 'voice-note-follow-up'). Use list_sequence_templates to see options.
  - `accepted_step_shapes` union: Reference: shapes of steps a template may contain (read-only for callers).
    - object
      - `type` string, required
      - `content` string
      - `delay_seconds` number, required
    - object
      - `type` string, required
      - `url` string
      - `delay_seconds` number, required
    - object
      - `type` string, required
      - `url` string
      - `delay_seconds` number, required
    - object
      - `type` string, required
      - `url` string
      - `delay_seconds` number, required
    - object
      - `type` string, required
      - `event_name` string, required
      - `payload_extras` object
      - `delay_seconds` number

## Response `200`

Success

## Other responses

- `401`: Missing or expired API key
- `403`: Insufficient key scope or permission denied
- `429`: Rate limit exceeded

---

[API](https://skmtc.dev/crispy/apis/crispy-rest-api.md) · [All operations](https://skmtc.dev/crispy/apis/crispy-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/crispy/apis/crispy-rest-api/revisions/6bed0974d9ce?raw)
