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

# Clone an existing agent

> Clone an existing agent with either the latest or deployed version



## OpenAPI

````yaml post /api/v1/agents/{id}/clone
openapi: 3.0.0
info:
  version: 1.0.0
  title: Feather AI API
servers:
  - url: https://prod.featherhq.com
    description: Production environment
security: []
paths:
  /api/v1/agents/{id}/clone:
    post:
      tags:
        - Agents
      summary: Clone an existing agent
      description: Clone an existing agent with either the latest or deployed version
      parameters:
        - schema:
            type: string
            description: The ID of the agent to clone
            example: '123'
          required: true
          name: id
          in: path
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                versionType:
                  type: string
                  enum:
                    - latest
                    - deployed
                name:
                  type: string
                description:
                  type: string
                  nullable: true
              required:
                - versionType
                - name
                - description
      responses:
        '201':
          description: Agent cloned successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  agent:
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      description:
                        type: string
                        nullable: true
                      agentType:
                        type: string
                        enum:
                          - CALL
                          - TEXT
                      createdAt:
                        type: string
                        format: date-time
                      updatedAt:
                        type: string
                        format: date-time
                      smsPhoneNumbers:
                        type: array
                        nullable: true
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                            phoneNumber:
                              type: string
                            ownership:
                              type: string
                              nullable: true
                              enum:
                                - FEATHER
                                - CLIENT
                            createdAt:
                              type: string
                            updatedAt:
                              type: string
                          required:
                            - id
                            - phoneNumber
                            - ownership
                            - createdAt
                            - updatedAt
                      inboundPhoneNumbers:
                        type: array
                        nullable: true
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                            phoneNumber:
                              type: string
                            ownership:
                              type: string
                              nullable: true
                              enum:
                                - FEATHER
                                - CLIENT
                            createdAt:
                              type: string
                            updatedAt:
                              type: string
                          required:
                            - id
                            - phoneNumber
                            - ownership
                            - createdAt
                            - updatedAt
                      outboundPhoneNumbers:
                        type: array
                        nullable: true
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                            phoneNumber:
                              type: string
                            ownership:
                              type: string
                              nullable: true
                              enum:
                                - FEATHER
                                - CLIENT
                            createdAt:
                              type: string
                            updatedAt:
                              type: string
                          required:
                            - id
                            - phoneNumber
                            - ownership
                            - createdAt
                            - updatedAt
                      callObservabilityEnabled:
                        type: boolean
                        default: false
                      version:
                        type: object
                        properties:
                          id:
                            type: string
                          version:
                            type: number
                          name:
                            type: string
                          createdAt:
                            type: string
                            format: date-time
                          updatedAt:
                            type: string
                            format: date-time
                          mode:
                            type: string
                            enum:
                              - FLOW
                              - PROMPT
                          prompt:
                            type: object
                            nullable: true
                            properties:
                              system:
                                type: string
                              systemUIFormatting:
                                nullable: true
                              variables:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    name:
                                      type: string
                                    required:
                                      type: boolean
                                      default: true
                                    defaultValue:
                                      type: string
                                  required:
                                    - name
                              tools:
                                type: array
                                items:
                                  type: string
                              preBuiltTools:
                                type: array
                                items:
                                  type: string
                            required:
                              - system
                          promptPersonalityId:
                            type: string
                            nullable: true
                          sttConfigId:
                            type: string
                            nullable: true
                          ttsConfigId:
                            type: string
                            nullable: true
                          llmConfigId:
                            type: string
                            nullable: true
                          overrideSTTConfig:
                            type: object
                            nullable: true
                            properties:
                              keywords:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    keyword:
                                      type: string
                                    intensifier:
                                      type: string
                                      enum:
                                        - HIGH_SUPPRESS
                                        - SUPPRESS
                                        - INTENSIFY
                                        - HIGH_INTENSIFY
                                      default: INTENSIFY
                                  required:
                                    - keyword
                            required:
                              - keywords
                          overrideTTSConfig:
                            $ref: '#/components/schemas/OverrideTTSConfig'
                          overrideLLMConfig:
                            type: object
                            nullable: true
                            additionalProperties:
                              nullable: true
                          voiceId:
                            type: string
                            nullable: true
                          postCallPrompt:
                            type: string
                            nullable: true
                          postCallVariables:
                            type: array
                            nullable: true
                            items:
                              $ref: '#/components/schemas/PostCallVariable'
                          knowledgeBaseCollectionIds:
                            type: array
                            nullable: true
                            items:
                              type: string
                          voicemailMessage:
                            type: string
                            nullable: true
                          voicemailDetectionMode:
                            type: string
                            enum:
                              - ASYNC
                              - SYNC
                            default: ASYNC
                          speakFirst:
                            type: boolean
                            default: false
                          firstMessage:
                            type: string
                            nullable: true
                          useKnowledgeBase:
                            type: boolean
                            default: true
                          enableBackgroundAudio:
                            type: boolean
                            default: false
                          backgroundAudio:
                            type: number
                            minimum: 0
                            exclusiveMinimum: true
                            maximum: 100
                            exclusiveMaximum: true
                            default: 50
                          voiceVolume:
                            type: integer
                            minimum: 10
                            maximum: 120
                            default: 100
                          forwardingPhoneNumber:
                            type: string
                            nullable: true
                            pattern: ^\+1(\d{10}|\d{3}-\d{3}-\d{4})|^\+[1-9]\d{1,14}$
                          warmTransferMessageMode:
                            type: string
                            nullable: true
                            enum:
                              - STATIC
                              - PROMPT
                          warmTransferBriefingTemplate:
                            type: string
                            nullable: true
                          warmTransferInteractive:
                            type: boolean
                            default: false
                          warmTransferInstructions:
                            type: string
                            nullable: true
                          voiceSpeed:
                            type: number
                            nullable: true
                            minimum: 0.8
                            maximum: 1.2
                            default: 1
                          agentDelayBeforeFirstMessage:
                            type: integer
                            minimum: 0
                            maximum: 2500
                            default: 500
                          initialSilenceTimeout:
                            type: integer
                            minimum: 0
                            maximum: 60000
                            default: 30000
                          finalSilenceTimeout:
                            type: integer
                            minimum: 0
                            maximum: 60000
                            default: 10000
                          maxCallDuration:
                            type: integer
                            minimum: 300
                            maximum: 6000
                            default: 900
                          minInterruptionWords:
                            type: integer
                            minimum: 0
                            default: 1
                          minInterruptionDuration:
                            type: number
                            minimum: 0
                            default: 1
                          minEndpointingDelay:
                            type: number
                            minimum: 0
                            default: 0.5
                          maxEndpointingDelay:
                            type: number
                            minimum: 0
                            default: 3
                          vadActivationThreshold:
                            type: number
                            minimum: 0.1
                            maximum: 0.9
                            default: 0.5
                          language:
                            type: object
                            properties:
                              languageId:
                                type: string
                              languageCode:
                                type: string
                                enum:
                                  - EN
                                  - EN_US
                                  - EN_AU
                                  - EN_GB
                                  - EN_IN
                                  - EN_NZ
                                  - HI
                                  - DE
                                  - FR
                                  - ES
                                  - JA
                                  - PT_BR
                              languageDisplayName:
                                type: string
                            required:
                              - languageId
                              - languageCode
                              - languageDisplayName
                          transferImmediatelyOnInbound:
                            type: boolean
                            default: false
                          inactivityTimeoutHours:
                            type: integer
                            nullable: true
                            minimum: 1
                          smsMaxTokens:
                            type: integer
                            nullable: true
                            minimum: 100
                            maximum: 2000
                          smsTemperature:
                            type: number
                            nullable: true
                            minimum: 0
                            maximum: 2
                          discardInboundSms:
                            type: boolean
                            default: false
                          webChatAggregationWindowSeconds:
                            type: integer
                            nullable: true
                            minimum: 1
                            maximum: 115
                          emailDomainId:
                            type: string
                            nullable: true
                          emailFromLocalPart:
                            type: string
                            nullable: true
                          emailFromName:
                            type: string
                            nullable: true
                          emailMaxTokens:
                            type: integer
                            nullable: true
                            minimum: 100
                            maximum: 10000
                          emailTemperature:
                            type: number
                            nullable: true
                            minimum: 0
                            maximum: 2
                          emailInactivityTimeoutHours:
                            type: integer
                            nullable: true
                            minimum: 1
                          emailFilteringEnabled:
                            type: boolean
                            default: false
                          emailResponseMode:
                            type: string
                            enum:
                              - AUTO_SEND
                              - SUGGEST_ONLY
                              - CONFIDENCE_BASED
                            default: AUTO_SEND
                          emailConfidenceThreshold:
                            type: number
                            minimum: 0
                            maximum: 1
                            default: 0.8
                          emailTags:
                            type: array
                            nullable: true
                            items:
                              type: object
                              properties:
                                name:
                                  type: string
                                prompt:
                                  type: string
                                autoClose:
                                  type: boolean
                                gmailLabelId:
                                  type: string
                                gmailLabelName:
                                  type: string
                              required:
                                - name
                                - prompt
                                - autoClose
                          sentimentAnalysis:
                            type: boolean
                            default: false
                          preCallWebhook:
                            $ref: '#/components/schemas/PreCallWebhook'
                        required:
                          - id
                          - version
                          - name
                          - createdAt
                          - updatedAt
                          - mode
                          - promptPersonalityId
                          - sttConfigId
                          - ttsConfigId
                          - llmConfigId
                          - overrideSTTConfig
                          - overrideTTSConfig
                          - overrideLLMConfig
                          - voiceId
                          - postCallPrompt
                          - postCallVariables
                          - knowledgeBaseCollectionIds
                          - voicemailMessage
                          - firstMessage
                          - forwardingPhoneNumber
                          - warmTransferMessageMode
                          - warmTransferBriefingTemplate
                          - warmTransferInstructions
                          - inactivityTimeoutHours
                          - smsMaxTokens
                          - smsTemperature
                          - webChatAggregationWindowSeconds
                    required:
                      - id
                      - name
                      - description
                      - agentType
                      - createdAt
                      - updatedAt
                      - smsPhoneNumbers
                      - inboundPhoneNumbers
                      - outboundPhoneNumbers
                      - version
                required:
                  - agent
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    default: 400
                  message:
                    type: string
                    default: Bad request
                  code:
                    type: string
                    enum:
                      - BAD_REQUEST
                    default: BAD_REQUEST
                  success:
                    type: boolean
                    enum:
                      - false
                    default: false
        '404':
          description: Agent not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    default: 400
                  message:
                    type: string
                    default: Bad request
                  code:
                    type: string
                    enum:
                      - BAD_REQUEST
                    default: BAD_REQUEST
                  success:
                    type: boolean
                    enum:
                      - false
                    default: false
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                    default: 500
                  message:
                    type: string
                    default: Internal server error
                  code:
                    type: string
                    enum:
                      - INTERNAL_SERVER_ERROR
                    default: INTERNAL_SERVER_ERROR
                  success:
                    type: boolean
                    enum:
                      - false
                    default: false
      security:
        - ApiKey: []
components:
  schemas:
    OverrideTTSConfig:
      type: object
      nullable: true
      properties:
        pronunciations:
          type: array
          items:
            $ref: '#/components/schemas/PronunciationRule'
          default: []
    PostCallVariable:
      type: object
      properties:
        variableName:
          type: string
        type:
          type: string
          enum:
            - STRING
            - NUMBER
            - BOOLEAN
            - ARRAY
        description:
          type: string
        required:
          type: boolean
          default: false
      required:
        - variableName
        - type
    PreCallWebhook:
      type: object
      nullable: true
      properties:
        mode:
          type: string
          enum:
            - tool
        toolId:
          type: string
          minLength: 1
        toolSlug:
          type: string
          minLength: 1
      required:
        - mode
        - toolId
    PronunciationRule:
      type: object
      properties:
        word:
          type: string
          minLength: 1
        pronunciation:
          type: string
          minLength: 1
        case_sensitive:
          type: boolean
          default: false
      required:
        - word
        - pronunciation
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: X-API-Key

````