Duplicate an agent
Duplicate an agent in the same organization, including its flows and knowledge.
Takes no request body. The copy is named '<name> (Copy)'; rename it with PATCH /v1/agents/{id}.
Files and knowledge chunks finish copying in the background. Each request makes a new copy: don't
automatically retry an uncertain outcome. The response waits up to ten seconds for the agent list's
mirror; a slow mirror can still take a few seconds longer to show the new agent. A 403
`agent_limit_reached` means the organization's plan has no room for another agent.
POST
/
v1
/
agents
/
{id}
/
duplicate
Duplicate an agent
curl --request POST \
--url https://api.us.phonely.ai/v1/agents/{id}/duplicate \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.us.phonely.ai/v1/agents/{id}/duplicate"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.us.phonely.ai/v1/agents/{id}/duplicate', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.us.phonely.ai/v1/agents/{id}/duplicate",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.us.phonely.ai/v1/agents/{id}/duplicate"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.us.phonely.ai/v1/agents/{id}/duplicate")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.us.phonely.ai/v1/agents/{id}/duplicate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"object": "agent",
"phone_number": "<string>"
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}Authorizations
An org API key: Authorization: Bearer phk_…
Headers
Optional. Must be the key's org.
Path Parameters
The agent to copy.
Response
Successful Response
An agent: a voice agent that answers and places the organization's calls.
The agent's ID.
The name shown in the web app. null when the agent has none.
The type of this object, always agent.
Allowed value:
"agent"The agent's primary phone number in E.164, such as +14155550100. null when it has none, or when its primary line is a SIP address.
⌘I
Duplicate an agent
curl --request POST \
--url https://api.us.phonely.ai/v1/agents/{id}/duplicate \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.us.phonely.ai/v1/agents/{id}/duplicate"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.us.phonely.ai/v1/agents/{id}/duplicate', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.us.phonely.ai/v1/agents/{id}/duplicate",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.us.phonely.ai/v1/agents/{id}/duplicate"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.us.phonely.ai/v1/agents/{id}/duplicate")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.us.phonely.ai/v1/agents/{id}/duplicate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"object": "agent",
"phone_number": "<string>"
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"details": [
{
"field": "<string>",
"issue": "<string>",
"message": "<string>"
}
],
"message": "<string>",
"request_id": "<string>"
}
}
