curl --request PATCH \
--url https://devtune.ai/api/v2/projects/{projectId}/agents/{agentKey} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"displayName": "<string>",
"description": "<string>",
"instructions": "<string>",
"modelId": "<string>",
"quickActions": [
"<string>"
],
"toolAllowlist": [
"<string>"
]
}
'import requests
url = "https://devtune.ai/api/v2/projects/{projectId}/agents/{agentKey}"
payload = {
"displayName": "<string>",
"description": "<string>",
"instructions": "<string>",
"modelId": "<string>",
"quickActions": ["<string>"],
"toolAllowlist": ["<string>"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
displayName: '<string>',
description: '<string>',
instructions: '<string>',
modelId: '<string>',
quickActions: ['<string>'],
toolAllowlist: ['<string>']
})
};
fetch('https://devtune.ai/api/v2/projects/{projectId}/agents/{agentKey}', 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://devtune.ai/api/v2/projects/{projectId}/agents/{agentKey}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'displayName' => '<string>',
'description' => '<string>',
'instructions' => '<string>',
'modelId' => '<string>',
'quickActions' => [
'<string>'
],
'toolAllowlist' => [
'<string>'
]
]),
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://devtune.ai/api/v2/projects/{projectId}/agents/{agentKey}"
payload := strings.NewReader("{\n \"displayName\": \"<string>\",\n \"description\": \"<string>\",\n \"instructions\": \"<string>\",\n \"modelId\": \"<string>\",\n \"quickActions\": [\n \"<string>\"\n ],\n \"toolAllowlist\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://devtune.ai/api/v2/projects/{projectId}/agents/{agentKey}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"displayName\": \"<string>\",\n \"description\": \"<string>\",\n \"instructions\": \"<string>\",\n \"modelId\": \"<string>\",\n \"quickActions\": [\n \"<string>\"\n ],\n \"toolAllowlist\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://devtune.ai/api/v2/projects/{projectId}/agents/{agentKey}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"displayName\": \"<string>\",\n \"description\": \"<string>\",\n \"instructions\": \"<string>\",\n \"modelId\": \"<string>\",\n \"quickActions\": [\n \"<string>\"\n ],\n \"toolAllowlist\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"agent": {
"agentKey": "<string>",
"displayName": "<string>",
"description": "<string>",
"instructions": "<string>",
"modelId": "<string>",
"quickActions": [
"<string>"
],
"toolAllowlist": [
"<string>"
],
"outputArtifactType": "action",
"workflowKey": "<string>",
"isCustom": true,
"scheduling": {
"autonomyLevel": "manual",
"schedule": {
"cadence": "daily",
"time": "<string>",
"timezone": "<string>",
"modelId": "<string>"
},
"modelId": "<string>",
"scheduledAt": "2023-11-07T05:31:56Z"
}
}
},
"meta": {
"timestamp": "2023-11-07T05:31:56Z",
"projectId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
}{
"error": "<string>",
"message": "<string>",
"status": 123,
"reason": "<string>",
"details": {}
}{
"error": "<string>",
"message": "<string>",
"status": 123,
"reason": "<string>",
"details": {}
}{
"error": "<string>",
"message": "<string>",
"status": 123,
"reason": "<string>",
"details": {}
}{
"error": "<string>",
"message": "<string>",
"status": 123,
"reason": "<string>",
"details": {}
}{
"error": "<string>",
"message": "<string>",
"status": 123,
"reason": "<string>",
"details": {}
}{
"error": "<string>",
"message": "<string>",
"status": 123,
"reason": "<string>",
"details": {}
}Update a custom agent
Changes a custom agent’s name, description, instructions, model, quick actions or tools. Send only the fields to change; the result must still be a valid agent by the Agents page’s rules. If the agent’s model is no longer available, the request is refused with 400 and reason model_unavailable until you also send modelId with an available model. The schedule is kept, and runs already started keep the definition they started with. If the agent changes between DevTune reading it and saving your change, the request is refused with 409 and reason revision_changed, and nothing is saved; read the agent again and retry. Built-in agents cannot be edited (400); a custom agent outside this project returns 404. The OAuth member, or the member who created the API key, must belong to the project and hold the manage permission; otherwise 403. Requires the agents.write scope.
curl --request PATCH \
--url https://devtune.ai/api/v2/projects/{projectId}/agents/{agentKey} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"displayName": "<string>",
"description": "<string>",
"instructions": "<string>",
"modelId": "<string>",
"quickActions": [
"<string>"
],
"toolAllowlist": [
"<string>"
]
}
'import requests
url = "https://devtune.ai/api/v2/projects/{projectId}/agents/{agentKey}"
payload = {
"displayName": "<string>",
"description": "<string>",
"instructions": "<string>",
"modelId": "<string>",
"quickActions": ["<string>"],
"toolAllowlist": ["<string>"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
displayName: '<string>',
description: '<string>',
instructions: '<string>',
modelId: '<string>',
quickActions: ['<string>'],
toolAllowlist: ['<string>']
})
};
fetch('https://devtune.ai/api/v2/projects/{projectId}/agents/{agentKey}', 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://devtune.ai/api/v2/projects/{projectId}/agents/{agentKey}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'displayName' => '<string>',
'description' => '<string>',
'instructions' => '<string>',
'modelId' => '<string>',
'quickActions' => [
'<string>'
],
'toolAllowlist' => [
'<string>'
]
]),
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://devtune.ai/api/v2/projects/{projectId}/agents/{agentKey}"
payload := strings.NewReader("{\n \"displayName\": \"<string>\",\n \"description\": \"<string>\",\n \"instructions\": \"<string>\",\n \"modelId\": \"<string>\",\n \"quickActions\": [\n \"<string>\"\n ],\n \"toolAllowlist\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://devtune.ai/api/v2/projects/{projectId}/agents/{agentKey}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"displayName\": \"<string>\",\n \"description\": \"<string>\",\n \"instructions\": \"<string>\",\n \"modelId\": \"<string>\",\n \"quickActions\": [\n \"<string>\"\n ],\n \"toolAllowlist\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://devtune.ai/api/v2/projects/{projectId}/agents/{agentKey}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"displayName\": \"<string>\",\n \"description\": \"<string>\",\n \"instructions\": \"<string>\",\n \"modelId\": \"<string>\",\n \"quickActions\": [\n \"<string>\"\n ],\n \"toolAllowlist\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"agent": {
"agentKey": "<string>",
"displayName": "<string>",
"description": "<string>",
"instructions": "<string>",
"modelId": "<string>",
"quickActions": [
"<string>"
],
"toolAllowlist": [
"<string>"
],
"outputArtifactType": "action",
"workflowKey": "<string>",
"isCustom": true,
"scheduling": {
"autonomyLevel": "manual",
"schedule": {
"cadence": "daily",
"time": "<string>",
"timezone": "<string>",
"modelId": "<string>"
},
"modelId": "<string>",
"scheduledAt": "2023-11-07T05:31:56Z"
}
}
},
"meta": {
"timestamp": "2023-11-07T05:31:56Z",
"projectId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
}{
"error": "<string>",
"message": "<string>",
"status": 123,
"reason": "<string>",
"details": {}
}{
"error": "<string>",
"message": "<string>",
"status": 123,
"reason": "<string>",
"details": {}
}{
"error": "<string>",
"message": "<string>",
"status": 123,
"reason": "<string>",
"details": {}
}{
"error": "<string>",
"message": "<string>",
"status": 123,
"reason": "<string>",
"details": {}
}{
"error": "<string>",
"message": "<string>",
"status": 123,
"reason": "<string>",
"details": {}
}{
"error": "<string>",
"message": "<string>",
"status": 123,
"reason": "<string>",
"details": {}
}Authorizations
API key with dtk_live_ prefix. Obtain it from API Keys in the account sidebar. New keys start with all supported scopes selected for the chosen project, and you can narrow them to specific read/write scopes as needed.
Path Parameters
A custom agent key from listManagedAgents.
Body
1 - 801 - 2401 - 120001 - 1201 - 6 elements1 - 1601