Move Agent
curl --request POST \
--url https://api.duvo.ai/v2/agents/{agent_id}/move \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"target_team_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"move_learnings": true,
"bypass_standalone_gate": false
}
'import requests
url = "https://api.duvo.ai/v2/agents/{agent_id}/move"
payload = {
"target_team_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"move_learnings": True,
"bypass_standalone_gate": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
target_team_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
move_learnings: true,
bypass_standalone_gate: false
})
};
fetch('https://api.duvo.ai/v2/agents/{agent_id}/move', 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.duvo.ai/v2/agents/{agent_id}/move",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'target_team_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'move_learnings' => true,
'bypass_standalone_gate' => false
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.duvo.ai/v2/agents/{agent_id}/move"
payload := strings.NewReader("{\n \"target_team_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"move_learnings\": true,\n \"bypass_standalone_gate\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
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.duvo.ai/v2/agents/{agent_id}/move")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"target_team_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"move_learnings\": true,\n \"bypass_standalone_gate\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.duvo.ai/v2/agents/{agent_id}/move")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"target_team_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"move_learnings\": true,\n \"bypass_standalone_gate\": false\n}"
response = http.request(request)
puts response.read_body{
"source_team_id": "<string>",
"target_team_id": "<string>",
"root_agent_id": "<string>",
"agents": [
{
"id": "<string>",
"name": "<string>"
}
],
"queues": [
{
"id": "<string>",
"name": "<string>",
"item_count": 123
}
],
"total_case_items": 123,
"total_runs": 123,
"skills_to_clone": [
{
"id": "<string>",
"name": "<string>"
}
],
"files_to_copy": [
{
"path": "<string>"
}
],
"warnings": {
"outcome": {
"instances_reconnected": [
{
"agent_id": "<string>",
"agent_name": "<string>",
"integration_type": "<string>",
"integration_name": "<string>",
"instance_name": "<string>"
}
],
"instances_disconnected": [
{
"agent_id": "<string>",
"agent_name": "<string>",
"integration_type": "<string>",
"integration_name": "<string>",
"instance_name": "<string>"
}
],
"custom_integrations_to_rebuild": [
{
"agent_id": "<string>",
"agent_name": "<string>",
"custom_integration_name": "<string>"
}
],
"catalog_rows_created_on_target": 123
},
"dropped_folders": [
{
"id": "<string>",
"name": "<string>"
}
],
"dropped_memory_count": 123,
"files_copied_count": 123,
"files_skipped_conflict": [
"<string>"
]
},
"options": {
"move_learnings": true
},
"applied": true
}{
"error": "<string>",
"code": "ASSIGNMENT_NOT_STANDALONE",
"blockers": {
"queues": [
{
"id": "<string>",
"name": "<string>"
}
],
"triggers": [
{
"id": "<string>",
"name": "<string>"
}
],
"handovers_outgoing": [
{
"id": "<string>",
"name": "<string>"
}
],
"handovers_incoming": [
{
"id": "<string>",
"name": "<string>"
}
]
}
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Agents
Move Agent
Move an agent (and its connected workspace) to a different team. Pass dry_run=true to preview the closure without applying changes.
POST
/
v2
/
agents
/
{agent_id}
/
move
Move Agent
curl --request POST \
--url https://api.duvo.ai/v2/agents/{agent_id}/move \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"target_team_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"move_learnings": true,
"bypass_standalone_gate": false
}
'import requests
url = "https://api.duvo.ai/v2/agents/{agent_id}/move"
payload = {
"target_team_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"move_learnings": True,
"bypass_standalone_gate": False
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
target_team_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
move_learnings: true,
bypass_standalone_gate: false
})
};
fetch('https://api.duvo.ai/v2/agents/{agent_id}/move', 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.duvo.ai/v2/agents/{agent_id}/move",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'target_team_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'move_learnings' => true,
'bypass_standalone_gate' => false
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.duvo.ai/v2/agents/{agent_id}/move"
payload := strings.NewReader("{\n \"target_team_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"move_learnings\": true,\n \"bypass_standalone_gate\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
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.duvo.ai/v2/agents/{agent_id}/move")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"target_team_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"move_learnings\": true,\n \"bypass_standalone_gate\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.duvo.ai/v2/agents/{agent_id}/move")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"target_team_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"move_learnings\": true,\n \"bypass_standalone_gate\": false\n}"
response = http.request(request)
puts response.read_body{
"source_team_id": "<string>",
"target_team_id": "<string>",
"root_agent_id": "<string>",
"agents": [
{
"id": "<string>",
"name": "<string>"
}
],
"queues": [
{
"id": "<string>",
"name": "<string>",
"item_count": 123
}
],
"total_case_items": 123,
"total_runs": 123,
"skills_to_clone": [
{
"id": "<string>",
"name": "<string>"
}
],
"files_to_copy": [
{
"path": "<string>"
}
],
"warnings": {
"outcome": {
"instances_reconnected": [
{
"agent_id": "<string>",
"agent_name": "<string>",
"integration_type": "<string>",
"integration_name": "<string>",
"instance_name": "<string>"
}
],
"instances_disconnected": [
{
"agent_id": "<string>",
"agent_name": "<string>",
"integration_type": "<string>",
"integration_name": "<string>",
"instance_name": "<string>"
}
],
"custom_integrations_to_rebuild": [
{
"agent_id": "<string>",
"agent_name": "<string>",
"custom_integration_name": "<string>"
}
],
"catalog_rows_created_on_target": 123
},
"dropped_folders": [
{
"id": "<string>",
"name": "<string>"
}
],
"dropped_memory_count": 123,
"files_copied_count": 123,
"files_skipped_conflict": [
"<string>"
]
},
"options": {
"move_learnings": true
},
"applied": true
}{
"error": "<string>",
"code": "ASSIGNMENT_NOT_STANDALONE",
"blockers": {
"queues": [
{
"id": "<string>",
"name": "<string>"
}
],
"triggers": [
{
"id": "<string>",
"name": "<string>"
}
],
"handovers_outgoing": [
{
"id": "<string>",
"name": "<string>"
}
],
"handovers_incoming": [
{
"id": "<string>",
"name": "<string>"
}
]
}
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Authorizations
API key authentication. Get your API key from the Duvo dashboard.
Path Parameters
The ID of the agent to move.
Query Parameters
When true, preview the closure and warnings without applying any changes.
Body
application/json
The ID of the team to move the agent into.
Whether to carry the agent's accumulated learnings across. Defaults to true.
When true, move the agent together with every connected queue, trigger, and handover peer instead of rejecting a non-standalone agent. Defaults to false.
Response
Default Response
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Was this page helpful?
⌘I