---
title: "Clone a voice agent"
method: POST
path: "/v1/voice-agents/clone"
---

# Clone a voice agent

`POST /v1/voice-agents/clone`

Use this route to clone an existing agent. You can use it to clone one of the voice agents templates created by our experts!

## Query parameters

- `voiceAgentId` string, required

## Request body

- object
  - `agentName` string

## Response `200`

Successful cloning of voice agent

- CloneResponse
  - `success` boolean
  - `message` string
  - `data` VoiceAgentResponseData
    - `id` string
    - `agentName` string
    - `greetingMessage` string
    - `greetingMessageType` 'STATIC' | 'PROMPT', nullable
    - `description` string
    - `preamble` string
    - `lang` string
    - `pokeMessages` string[]
    - `realTime` boolean
    - `silenceThreshold` integer
    - `interrupt` boolean
    - `type` string
    - `outcome` string, nullable
    - `outcomeResponseShape` object, nullable
    - `projectId` string
    - `apiKeyId` string
    - `voiceId` string, nullable
    - `voiceRecordId` string, nullable
    - `voiceRecord` object, nullable — The voice record object which is connected to this agent.
    - `collectionId` string, nullable
    - `isTemplate` boolean
    - `icon` string, nullable
    - `webhookUrl` string, uri, nullable
    - `webhookAuth` ExternalWebhookAuthScheme — Authorization header to be sent in this format: `Authorization: [authKey] [authSecret]`
      - `authKey` string, nullable
      - `authSecret` string, nullable
    - `params` object — The parameters that are created for this agent.
    - `alignment` object
      - `greetingMessage` string
      - `preamble` string
    - `tools` object
      - `genderDetection` boolean
      - `smartCallEnd` boolean
    - `webToolsIds` string[]
    - `voiceDictionaryIds` string[]
    - `knowledgeBaseItemsIds` string[]
    - `webToolsOverrides` object
    - `userInactivityTimeout` number
    - `maxCallDuration` number
    - `responseDelay` number
    - `backgroundNoise` boolean
    - `waitForUserToSpeakFirst` integer
    - `thinkingVoice` boolean
    - `speakerIdentification` boolean
    - `llmConfig` VoiceAgentLlmConfig — Configuration for the LLM (Large Language Model) used by the voice agent
      - `provider` 'OpenAI' | 'Gemini' | 'deepmyst' | 'Custom' | 'Groq' — The LLM provider to use
      - `modelName` string — The model name to use. Valid models depend on the provider: OpenAI (GPT-5, GPT-5-Mini, GPT-5-Nano, GPT-4.1, GPT-4.1-Mini, GPT-4.1-Nano, GPT-4o, GPT-4o-mini), Gemini (Gemini 2.5-Pro, Gemini 2.5-Flash, gemini-3-flash-preview), deepmyst (gpt-4.1-optimize, gpt-4.1-mini-optimize), Groq (openai/gpt-oss-120b, openai/gpt-oss-20b)
      - `baseUrl` string — Custom base URL for the LLM API. Required when provider is 'Custom'
      - `apiKey` string — API key for authentication with the LLM provider. Required when provider is 'Custom'
      - `temperature` number — Controls randomness in the model's responses. Lower values make output more deterministic, higher values make it more creative. Note: GPT-5, GPT-5-Mini, and GPT-5-Nano models require temperature to be exactly 1.
    - `noiseCancellation` string
    - `cancelNoisePer` string, nullable
    - `agenticRag` boolean
    - `languageDialectSwitcher` boolean
    - `minInterruptionDuration` number
    - `vadActivationThreshold` number
    - `enableAutoGainControl` boolean
    - `sendDenoisedToStt` boolean
    - `createdAt` string, date-time
    - `updatedAt` string, date-time

## Other responses

- `400` — Bad Request
- `401` — Bad Request
- `403` — Bad Request
- `404` — Voice agent not found
- `500` — Internal Server Error

---

[API](https://skmtc.net/tryhamsa/apis/hamsa-api.md) · [All operations](https://skmtc.net/tryhamsa/apis/hamsa-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/tryhamsa/hamsa-api/versions/ecbeb5d8dc13/schema)
