Create Agent
Create a new agent.
curl --request POST \
--url https://api.example.com/v1/agents/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"a2ui_enabled": true,
"agent_type": "stateless",
"description": "",
"events_config": {
"events": [
{
"event_type": "<string>",
"config": {},
"enabled": true
}
]
},
"instruction": "",
"model_id": "<string>",
"planning": true,
"skill_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"tools": [
{
"name": "<string>",
"settings": {
"disabled_methods": [
"<string>"
],
"requires_user_confirmation": true
},
"type": "code"
}
]
}
'import requests
url = "https://api.example.com/v1/agents/"
payload = {
"name": "<string>",
"a2ui_enabled": True,
"agent_type": "stateless",
"description": "",
"events_config": { "events": [
{
"event_type": "<string>",
"config": {},
"enabled": True
}
] },
"instruction": "",
"model_id": "<string>",
"planning": True,
"skill_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"tools": [
{
"name": "<string>",
"settings": {
"disabled_methods": ["<string>"],
"requires_user_confirmation": True
},
"type": "code"
}
]
}
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({
name: '<string>',
a2ui_enabled: true,
agent_type: 'stateless',
description: '',
events_config: {events: [{event_type: '<string>', config: {}, enabled: true}]},
instruction: '',
model_id: '<string>',
planning: true,
skill_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
tools: [
{
name: '<string>',
settings: {disabled_methods: ['<string>'], requires_user_confirmation: true},
type: 'code'
}
]
})
};
fetch('https://api.example.com/v1/agents/', 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.example.com/v1/agents/",
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([
'name' => '<string>',
'a2ui_enabled' => true,
'agent_type' => 'stateless',
'description' => '',
'events_config' => [
'events' => [
[
'event_type' => '<string>',
'config' => [
],
'enabled' => true
]
]
],
'instruction' => '',
'model_id' => '<string>',
'planning' => true,
'skill_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'tools' => [
[
'name' => '<string>',
'settings' => [
'disabled_methods' => [
'<string>'
],
'requires_user_confirmation' => true
],
'type' => 'code'
]
]
]),
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.example.com/v1/agents/"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"a2ui_enabled\": true,\n \"agent_type\": \"stateless\",\n \"description\": \"\",\n \"events_config\": {\n \"events\": [\n {\n \"event_type\": \"<string>\",\n \"config\": {},\n \"enabled\": true\n }\n ]\n },\n \"instruction\": \"\",\n \"model_id\": \"<string>\",\n \"planning\": true,\n \"skill_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"tools\": [\n {\n \"name\": \"<string>\",\n \"settings\": {\n \"disabled_methods\": [\n \"<string>\"\n ],\n \"requires_user_confirmation\": true\n },\n \"type\": \"code\"\n }\n ]\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.example.com/v1/agents/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"a2ui_enabled\": true,\n \"agent_type\": \"stateless\",\n \"description\": \"\",\n \"events_config\": {\n \"events\": [\n {\n \"event_type\": \"<string>\",\n \"config\": {},\n \"enabled\": true\n }\n ]\n },\n \"instruction\": \"\",\n \"model_id\": \"<string>\",\n \"planning\": true,\n \"skill_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"tools\": [\n {\n \"name\": \"<string>\",\n \"settings\": {\n \"disabled_methods\": [\n \"<string>\"\n ],\n \"requires_user_confirmation\": true\n },\n \"type\": \"code\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/agents/")
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 \"name\": \"<string>\",\n \"a2ui_enabled\": true,\n \"agent_type\": \"stateless\",\n \"description\": \"\",\n \"events_config\": {\n \"events\": [\n {\n \"event_type\": \"<string>\",\n \"config\": {},\n \"enabled\": true\n }\n ]\n },\n \"instruction\": \"\",\n \"model_id\": \"<string>\",\n \"planning\": true,\n \"skill_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"tools\": [\n {\n \"name\": \"<string>\",\n \"settings\": {\n \"disabled_methods\": [\n \"<string>\"\n ],\n \"requires_user_confirmation\": true\n },\n \"type\": \"code\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"slug": "<string>",
"status": "<string>",
"a2ui_enabled": true,
"agent_type": "stateless",
"description": "<string>",
"events_config": {},
"instruction": "<string>",
"is_catalog": false,
"model_id": "<string>",
"planning": true,
"registry_item_id": "<string>",
"skills": [
{}
],
"tools": [
{
"name": "<string>",
"settings": {
"disabled_methods": [
"<string>"
],
"requires_user_confirmation": true
},
"type": "code"
}
],
"update_available": false
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"ctx": {},
"input": "<unknown>"
}
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Payload for creating an agent.
model_id is the UUID of a model instance configured in the workspace —
the runtime has no other interpretation of it. Omit it (or pass null) to
create an agent with no model bound yet; such an agent cannot be run until a
model is assigned.
Human-readable agent name (unique per workspace).
1 - 255Expose this agent over the A2UI protocol.
DEPRECATED — stored and echoed back, but the runtime never reads it, so every agent behaves as 'stateless' regardless of this value. Conversation history does not currently survive across runs. Do not branch on this field.
stateless, stateful Short summary of what the agent does.
1000Event subscriptions that auto-trigger this agent.
Show child attributes
Show child attributes
System prompt / behavioural instructions for the agent.
20000UUID of a model instance in this workspace (see GET /v1/model-instances). Null means no model is bound yet and the agent cannot be run.
Enable explicit planning step before execution.
UUIDs of skills to attach to the agent.
Tools attached to the agent (code/mcp/agent/openapi).
- CodeToolConfig
- McpToolConfig
- AgentToolConfig
- OpenApiToolConfig
Show child attributes
Show child attributes
Response
Successful Response
- CodeToolConfig
- McpToolConfig
- AgentToolConfig
- OpenApiToolConfig
Show child attributes
Show child attributes
curl --request POST \
--url https://api.example.com/v1/agents/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"a2ui_enabled": true,
"agent_type": "stateless",
"description": "",
"events_config": {
"events": [
{
"event_type": "<string>",
"config": {},
"enabled": true
}
]
},
"instruction": "",
"model_id": "<string>",
"planning": true,
"skill_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"tools": [
{
"name": "<string>",
"settings": {
"disabled_methods": [
"<string>"
],
"requires_user_confirmation": true
},
"type": "code"
}
]
}
'import requests
url = "https://api.example.com/v1/agents/"
payload = {
"name": "<string>",
"a2ui_enabled": True,
"agent_type": "stateless",
"description": "",
"events_config": { "events": [
{
"event_type": "<string>",
"config": {},
"enabled": True
}
] },
"instruction": "",
"model_id": "<string>",
"planning": True,
"skill_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"tools": [
{
"name": "<string>",
"settings": {
"disabled_methods": ["<string>"],
"requires_user_confirmation": True
},
"type": "code"
}
]
}
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({
name: '<string>',
a2ui_enabled: true,
agent_type: 'stateless',
description: '',
events_config: {events: [{event_type: '<string>', config: {}, enabled: true}]},
instruction: '',
model_id: '<string>',
planning: true,
skill_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
tools: [
{
name: '<string>',
settings: {disabled_methods: ['<string>'], requires_user_confirmation: true},
type: 'code'
}
]
})
};
fetch('https://api.example.com/v1/agents/', 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.example.com/v1/agents/",
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([
'name' => '<string>',
'a2ui_enabled' => true,
'agent_type' => 'stateless',
'description' => '',
'events_config' => [
'events' => [
[
'event_type' => '<string>',
'config' => [
],
'enabled' => true
]
]
],
'instruction' => '',
'model_id' => '<string>',
'planning' => true,
'skill_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'tools' => [
[
'name' => '<string>',
'settings' => [
'disabled_methods' => [
'<string>'
],
'requires_user_confirmation' => true
],
'type' => 'code'
]
]
]),
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.example.com/v1/agents/"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"a2ui_enabled\": true,\n \"agent_type\": \"stateless\",\n \"description\": \"\",\n \"events_config\": {\n \"events\": [\n {\n \"event_type\": \"<string>\",\n \"config\": {},\n \"enabled\": true\n }\n ]\n },\n \"instruction\": \"\",\n \"model_id\": \"<string>\",\n \"planning\": true,\n \"skill_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"tools\": [\n {\n \"name\": \"<string>\",\n \"settings\": {\n \"disabled_methods\": [\n \"<string>\"\n ],\n \"requires_user_confirmation\": true\n },\n \"type\": \"code\"\n }\n ]\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.example.com/v1/agents/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"a2ui_enabled\": true,\n \"agent_type\": \"stateless\",\n \"description\": \"\",\n \"events_config\": {\n \"events\": [\n {\n \"event_type\": \"<string>\",\n \"config\": {},\n \"enabled\": true\n }\n ]\n },\n \"instruction\": \"\",\n \"model_id\": \"<string>\",\n \"planning\": true,\n \"skill_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"tools\": [\n {\n \"name\": \"<string>\",\n \"settings\": {\n \"disabled_methods\": [\n \"<string>\"\n ],\n \"requires_user_confirmation\": true\n },\n \"type\": \"code\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/agents/")
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 \"name\": \"<string>\",\n \"a2ui_enabled\": true,\n \"agent_type\": \"stateless\",\n \"description\": \"\",\n \"events_config\": {\n \"events\": [\n {\n \"event_type\": \"<string>\",\n \"config\": {},\n \"enabled\": true\n }\n ]\n },\n \"instruction\": \"\",\n \"model_id\": \"<string>\",\n \"planning\": true,\n \"skill_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"tools\": [\n {\n \"name\": \"<string>\",\n \"settings\": {\n \"disabled_methods\": [\n \"<string>\"\n ],\n \"requires_user_confirmation\": true\n },\n \"type\": \"code\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"slug": "<string>",
"status": "<string>",
"a2ui_enabled": true,
"agent_type": "stateless",
"description": "<string>",
"events_config": {},
"instruction": "<string>",
"is_catalog": false,
"model_id": "<string>",
"planning": true,
"registry_item_id": "<string>",
"skills": [
{}
],
"tools": [
{
"name": "<string>",
"settings": {
"disabled_methods": [
"<string>"
],
"requires_user_confirmation": true
},
"type": "code"
}
],
"update_available": false
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"ctx": {},
"input": "<unknown>"
}
]
}