> ## Documentation Index
> Fetch the complete documentation index at: https://docs.salesfinity.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Duplicate a sequence

> Copies the sequence and its steps. The copy starts disabled and carries no enrollments.

Copies the sequence and its steps. The copy starts disabled and carries no enrollments.


## OpenAPI

````yaml POST /v2/sequencer/sequences/{id}/duplicate
openapi: 3.0.1
info:
  title: Salesfinity API
  description: >-
    The Salesfinity API is a JSON-over-HTTPS REST API for the Salesfinity
    parallel dialer.

    Use it to manage contact lists, read call logs and AI call scores, pull team
    and SDR

    analytics, and enrich email addresses. Webhook subscriptions are managed in
    the

    Salesfinity application rather than through this API.


    ## Base URL


    All requests go to `https://client-api.salesfinity.co`. There is no separate
    sandbox host;

    see the developer portal for the recommended way to test safely.


    ## Authentication


    Every endpoint requires an API key sent in the `x-api-key` request header.
    Generate a key

    in the Salesfinity dashboard under **Settings -> Connections & API**. A key
    is scoped to a

    single team, and every response is filtered to that team.


    ```bash

    curl https://client-api.salesfinity.co/v1/team \
      --header 'x-api-key: YOUR_API_KEY'
    ```


    ## Errors


    Errors are always JSON and always use the same envelope, so a client can
    parse a failure

    the same way on every endpoint:


    ```json

    { "message": "Forbidden resource", "error": "Forbidden", "statusCode": 403 }

    ```


    `statusCode` matches the HTTP status. `error` is the stable reason phrase to
    branch on.

    `message` is human readable, and is an array of strings when request
    validation fails.

    Note that a missing or invalid API key returns **403**, not 401.


    ## Pagination


    List endpoints accept `page` (1-based) and `limit` query parameters and
    return the matching

    page alongside the total count. The `limit` default varies by endpoint (10,
    50, or 100) and

    is capped at 100 where a cap applies, so read the parameter schema on the
    operation itself.


    ## Rate limits


    Salesfinity does not currently publish a fixed request quota. Treat HTTP 429
    as retryable

    and back off with exponential jitter.
  version: 1.0.0
  termsOfService: https://salesfinity.ai/terms
  contact:
    name: Salesfinity Support
    email: hello@salesfinity.co
    url: https://support.salesfinity.ai
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
servers:
  - url: https://client-api.salesfinity.co
    description: Production. The only public Salesfinity API host.
security:
  - ApiKeyAuth: []
tags:
  - name: Contact Lists
    description: >-
      Create, read, merge, and delete CSV contact lists, and add or remove the
      contacts inside them.
  - name: Teams
    description: >-
      Read the team that owns the API key, including its members, licenses, and
      statuses.
  - name: Dispositions
    description: Read the default and custom call outcomes configured for the team.
  - name: Sequences
    description: Read the sequences referenced by the team's call logs.
  - name: Call Logs
    description: >-
      Read the raw call history for the team, with filtering, sorting, and
      pagination.
  - name: Analytics
    description: Aggregated call metrics for the team, by contact list, and by SDR.
  - name: Snoozed Contacts
    description: Read and manage contacts that have been snoozed out of the dialing queue.
  - name: Follow-up Tasks
    description: Read follow-up tasks created from call outcomes.
  - name: Custom Fields
    description: Read the custom field mappings configured for the team.
  - name: Scored Calls
    description: Read AI-scored calls with per-facet scoring and coaching recommendations.
  - name: Notes
    description: >-
      Attach freeform notes to a person or company, list them, and pin the ones
      that matter.
  - name: Enrichment
    description: >-
      Look up phone numbers and work or personal email addresses for a LinkedIn
      profile, and check the team's remaining enrichment credits.
  - name: Sequencer Sequences
    description: >-
      Create, configure, enable and duplicate Sequencer cadences, and read their
      analytics. Distinct from the Sequences group, which lists sequence names
      observed on call logs from an external CRM.
  - name: Sequencer Steps
    description: The ordered steps that make up a cadence.
  - name: Sequencer Templates
    description: Reusable email subjects and bodies that email steps send from.
  - name: Sequencer Enrollments
    description: >-
      Contacts inside a sequence: where they are in the cadence, and the verbs
      that move them.
  - name: Sequencer Enrolment Runs
    description: >-
      Background enrolment of large batches, and the preview that shows what a
      batch would do.
  - name: Sequencer Tasks
    description: The rep task queue a cadence produces, plus standalone one-off tasks.
  - name: Sequencer Suppression
    description: >-
      The team do-not-contact list, checked before every enrolment and every
      send.
  - name: Sequencer Policies
    description: 'Rules of engagement: what may be enrolled, and what happens at each step.'
  - name: Sequencer Settings
    description: Team-level sequencer settings and sending mailboxes. Read-only.
externalDocs:
  description: Salesfinity API documentation
  url: https://docs.salesfinity.ai
paths:
  /v2/sequencer/sequences/{id}/duplicate:
    post:
      tags:
        - Sequencer Sequences
      summary: Duplicate a sequence
      description: >-
        Copies the sequence and its steps. The copy starts disabled and carries
        no enrollments.
      operationId: duplicate-sequencer-sequence
      parameters:
        - name: id
          required: true
          in: path
          description: 24-character sequence id.
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DuplicateSequenceDTO'
      responses:
        '201':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SequencerSequence'
        '400':
          description: >-
            Validation failed. Check the request body and query parameters
            against the schema on this operation. `message` lists every field
            that failed validation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                message:
                  - limit must not be greater than 100
                error: Bad Request
                statusCode: 400
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: >-
            Not Found. The resource does not exist, or belongs to another team —
            the API does not confirm that records outside your team exist. Check
            the path and any id in it.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                message: Not found
                error: Not Found
                statusCode: 404
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  schemas:
    DuplicateSequenceDTO:
      type: object
      properties:
        user_id:
          type: string
          description: >-
            The team member this call acts as. Must be an active member of the
            team the API key belongs to.
          example: 507f1f77bcf86cd799439011
        name:
          type: string
          description: Name for the copy. Defaults to the original with a suffix.
      required:
        - user_id
    SequencerSequence:
      type: object
      description: A Sequencer cadence.
      properties:
        _id:
          type: string
          description: 24-character hexadecimal id.
          example: 507f1f77bcf86cd799439011
        name:
          type: string
        description:
          type: string
          nullable: true
        tags:
          type: array
          items:
            type: string
        enabled:
          type: boolean
          description: Whether the cadence is running.
        sequence_type:
          type: string
          enum:
            - interval
            - date
        user:
          type: string
          description: Author (team member id).
        policy:
          type: string
          nullable: true
          description: Rules-of-engagement policy, or null to use the team default.
        transactional:
          type: boolean
          description: Bypasses the suppression list at enrolment.
        throttle_capacity:
          type: integer
          nullable: true
        throttle_max_adds_per_day:
          type: integer
          nullable: true
        throttle_paused:
          type: boolean
        track_opens:
          type: boolean
        track_links:
          type: boolean
        sequence_step_count:
          type: integer
        duration_in_days:
          type: integer
        num_contacted_prospects:
          type: integer
        num_replied_prospects:
          type: integer
        open_count:
          type: integer
        click_count:
          type: integer
        reply_count:
          type: integer
        bounce_count:
          type: integer
        opt_out_count:
          type: integer
        deliver_count:
          type: integer
        can_manage:
          type: boolean
          description: Whether the acting member may change this sequence.
        created_at:
          type: string
          format: date-time
          description: When the sequence was created.
        updated_at:
          type: string
          format: date-time
          description: When it last changed.
    Error:
      type: object
      title: Error
      description: >-
        The error envelope returned by every Salesfinity API error response. The
        shape is identical across all status codes and all endpoints.
      required:
        - message
        - error
        - statusCode
      properties:
        message:
          description: >-
            Human-readable description of the failure. A string for most errors,
            and an array of strings when request validation fails, with one
            entry per field that did not validate.
          oneOf:
            - type: string
            - type: array
              items:
                type: string
          example: Forbidden resource
        error:
          type: string
          description: >-
            Stable HTTP reason phrase for the status code. Branch on this rather
            than on `message`.
          example: Forbidden
        statusCode:
          type: integer
          format: int32
          description: >-
            HTTP status code, repeated in the body so it survives transports
            that drop it.
          example: 403
      example:
        message: Forbidden resource
        error: Forbidden
        statusCode: 403
  responses:
    Forbidden:
      description: >-
        Forbidden. The `x-api-key` header is missing, malformed, revoked, or
        belongs to another team. Send a valid key in the `x-api-key` header.
        Salesfinity returns 403 (not 401) for a missing, malformed, revoked, or
        wrong-team key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            message: Forbidden resource
            error: Forbidden
            statusCode: 403
    TooManyRequests:
      description: >-
        Too Many Requests. The client is being throttled and should retry with
        backoff. Back off and retry with exponential jitter. Treat 429 as
        retryable.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            message: Too many requests
            error: Too Many Requests
            statusCode: 429
    InternalServerError:
      description: >-
        Internal Server Error. Something went wrong on the Salesfinity side.
        Retry with exponential backoff. If it persists, contact
        hello@salesfinity.co with the request path and timestamp.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            message: Internal server error
            error: Internal Server Error
            statusCode: 500
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Team-scoped API key generated in the Salesfinity dashboard under
        Settings -> Connections & API. A missing or invalid key returns HTTP
        403.

````