---
title: "Duplicate an agent (created paused)"
method: POST
path: "/api/v1/agents/{id}/duplicate"
tags: ["agents"]
---

# Duplicate an agent (created paused)

`POST /api/v1/agents/{id}/duplicate`

## Request

- Base URL: `https://www.callagent.pro`
- URL: `https://www.callagent.pro/api/v1/agents/{id}/duplicate`
- Auth: HTTP bearer

## Path parameters

- `id` integer, required

## Response `200`

The new copy: a fresh agent with its own id and a suffixed name.

- object
  - `ok` boolean
  - `agent` Agent
    - `id` integer, required
    - `name` string, required
    - `agent_type` 'prompt' | 'flow', required
    - `detect_caller_bio` boolean, required: Let the agent look the caller up and greet them with what it finds
    - `owner_id` integer, required: Account member who owns this agent
    - `owner_name` string, required
    - `is_own` boolean, required: True when the key's user owns it; false for an agent shared by a colleague
    - `knowledge_base_label` string, nullable, required: Display name of knowledge_base_id
    - `shape` string, required: Avatar shape for the dashboard tile
    - `prompt` string, required
    - `greeting_message` string, required
    - `company_information` string, required
    - `primary_language_id` integer, required
    - `default_voice_id` integer, required
    - `llm_server_id` integer, required
    - `asr_model_id` integer, required
    - `knowledge_base_id` integer, nullable, required
    - `status` 'active' | 'paused', required
    - `max_call_duration` integer, required: SECONDS, not minutes; 60-7200
    - `forwarding_number` string, nullable, required
    - `flow` object, required: Visual flow graph; only meaningful when agent_type=flow. Both arrays are required when sending a flow.
      - `nodes` object[]
        - `id` string, required
        - `type` 'agent' | 'end' | 'condition' | 'tool', required
        - `label` string
        - `prompt` string
      - `edges` object[]
        - `source` string, required: id of the node this leaves
        - `target` string, required: id of the node this enters
        - `condition` string: Plain-language test the model evaluates to decide whether to follow this edge
    - `temperature` number, required
    - `speech_speed` number, required
    - `vad_activation_threshold` number, required
    - `vad_min_silence_duration` number, required
    - `phrase_pause_ms` integer, required
    - `max_waiting_time` integer, required: seconds
    - `answer_delay` integer, required: seconds
    - `enable_recording` boolean, required
    - `enable_call_forwarding` boolean, required
    - `enable_retry` boolean, required
    - `tts_tags` boolean, required: Let the model write [emotion] tags; engines that do not read them strip them
    - `email_notifications` boolean, required
    - `notification_email` string, email, nullable, required
    - `webhook_url` string, uri, nullable, required: Post-call webhook THIS account calls after every completed call — see the WebhookPayload schema for exactly what's POSTed to it. Not an endpoint served here.
    - `tools` string, nullable, required: NOT an OpenAI function-calling / JSON schema list — a comma-separated string of built-in capability names this agent may use, e.g. "cal,email,notes" or "secretary". Recognised names: `cal` (check_availability, book_appointment), `sms` (send_sms), `email` (send_email), `notes` (save_note, recall_notes, recall_conversation), `secretary` (a bundle: contacts, calendar, scheduled calls, do-not-call, notes, email, and general lookups — everything a phone secretary needs). Omit or leave empty for a plain conversational agent with no tool access.

## Other responses

- `401`: Missing or invalid Bearer key
- `429`: Too many requests — see the endpoint's rate limit tier (agent-api 120/min, agent-api-heavy 6/min, agent-api-secrets 10/min)

---

[API](https://skmtc.dev/callagent/apis/callagent-pro-agent-api.md) · [All operations](https://skmtc.dev/callagent/apis/callagent-pro-agent-api/llms.txt) · [OpenAPI document](https://skmtc.dev/callagent/apis/callagent-pro-agent-api/revisions/38072cf8a24b?raw)
