---
title: "Duplicate a journey"
method: POST
path: "/v2/journeys/{journey_id}/duplicate"
tags: ["journeys-v2"]
---

# Duplicate a journey

`POST /v2/journeys/{journey_id}/duplicate`

## Request

- Base URL: `https://api.tracklysms.com/api`
- URL: `https://api.tracklysms.com/api/v2/journeys/{journey_id}/duplicate`
- Auth: API key in header `X-Api-Key`

## Response `201`

Journey duplicated

- JourneyWriteResponse
  - `journey` WelcomeJourney
    - `accountId` integer, nullable: Account ID
    - `createdAt` string, nullable: Creation timestamp
    - `id` string: Journey ID
    - `name` string: Journey name
    - `pauseReason` string, nullable: Reason for an automatic pause, when present
    - `priority` integer: Higher priority wins when journeys match
    - `startStepId` string, nullable: First step ID
    - `status` string: Journey status
    - `steps` JourneyStep[]
      - `config` object: Configuration for the step type; see the welcome journeys guide
      - `name` string: Display name
      - `nextStepId` string, nullable: Next step ID, when applicable
      - `stepId` string, required: Unique step ID within this journey
      - `stepType` 'send_message' | 'send_contact_card' | 'wait' | 'wait_until' | 'condition' | 'percentage_split' | 'set_custom_field' | 'unsubscribe' | 'exit' | 'double_optin', required
    - `trigger` object, nullable: Enrollment trigger, or null
      - `conditions` JourneyTriggerCondition[]
        - `audienceId` string: Saved SMS audience ID
        - `conditionType` 'list' | 'custom_field' | 'audience' | 'any', required
        - `field` string: Custom field name
        - `listIds` integer[]: Sending list IDs for a list condition
        - `operator` string: Custom field comparison operator
        - `value` unknown
      - `groups` object[]: Nested trigger groups with the same structure
      - `operator` 'AND' | 'OR': How to combine conditions and groups
    - `updatedAt` string, nullable: Last update timestamp
  - `message` string
  - `success` boolean

## Other responses

- `400`: Invalid request
- `401`: Authentication error
- `403`: Insufficient authority
- `404`: Journey not found
- `409`: Journey write conflict or unknown outcome
- `500`: Unexpected error
- `503`: API key send policy unavailable

---

[API](https://skmtc.dev/tracklysms/apis/trackly-sms-api.md) · [All operations](https://skmtc.dev/tracklysms/apis/trackly-sms-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tracklysms/apis/trackly-sms-api/revisions/ac1ad22cb2a9?raw)
