Templates
Agent templates new agents are created from. Every route needs a ready owner identity (409 identity_not_ready).
On this page
List agent templates
/templatesResponses
| Status | Description | Body | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 200 | Templates | TemplateList | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
defaultIdrequiredstring | folderrequiredstring | defaultDirectoryrequiredstring | Where POST /agents/create puts agents without | |||||||||||||||||||||||||||||||||||||||||||||||||||||
Errors 401 · 403 · 409 · 500 · 503
| 401 | Missing or wrong bearer token (unauthorized) | ||||||||||||||||||||||||||||||||||
| 403 | The request guard refused it: Host header not allowed (host_not_allowed, DNS-rebinding protection) or a browser cross-site request (cross_origin)host_not_allowedcross_origin | ||||||||||||||||||||||||||||||||||
| 409 | No usable owner identity (identity_not_ready): set it up or unlock it first. identity carries its status. | AgentCreateErrorResponse | |||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||
| 500 | Unexpected runtime failure | ||||||||||||||||||||||||||||||||||
| 503 | The subsystem is not configured on this daemon | ||||||||||||||||||||||||||||||||||
Error bodies use the error format.
Example
curl "http://127.0.0.1:7385/templates" \
-H "Authorization: Bearer $ADF_DAEMON_TOKEN"Create a template (blank, or a duplicate of fromId)
/templatesA template is an ordinary .adf in <userData>/templates (Studio's Settings > Agent templates); its id is the file stem. New agents get everything in a template except its identity and history. A duplicate carries the notes, never the identity or history. Names: letters, digits, spaces, -, _, at most 64 characters.
Request bodyapplication/json · TemplateCreateBody · required
| Field | Type | Description |
|---|---|---|
namerequired | string | |
fromId | string | Duplicate this template (no identity or history carried) |
Responses
| Status | Description | Body | ||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 201 | Created | TemplateRef | ||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||
Errors 400 · 401 · 403 · 404 · 409 · 500 · 503
| 400 | Invalid body or the template was refused (bad_request, template_invalid) | AgentCreateErrorResponse |
| 401 | Missing or wrong bearer token (unauthorized) | |
| 403 | The request guard refused it: Host header not allowed (host_not_allowed, DNS-rebinding protection) or a browser cross-site request (cross_origin)host_not_allowedcross_origin | |
| 404 | Unknown template (template_missing) | AgentCreateErrorResponse |
| 409 | No usable owner identity (identity_not_ready): set it up or unlock it first. identity carries its status. | AgentCreateErrorResponse |
| 500 | Unexpected runtime failure | |
| 503 | The subsystem is not configured on this daemon |
Error bodies use the error format.
Example
curl -X POST "http://127.0.0.1:7385/templates" \
-H "Authorization: Bearer $ADF_DAEMON_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"Researcher","fromId":"standard"}'One template: summary, contents and whether it is the default
/templates/{id}Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | string | Template id (the file stem in the templates folder) |
Responses
| Status | Description | Body | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 200 | Template | TemplateDetail | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
isDefaultrequiredboolean | defaultIdrequiredstring | contentsrequiredobject | 3 fields of | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
configrequired | object | The agent's ADF v0.2 config (adf_config). Only the most used fields are listed; the full shape is the ADF spec's AgentConfig. Secret values never appear here. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
25 fields of | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
adf_versionrequired | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
idrequired | string | Agent id (stable, the daemon addresses the agent by it) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
namerequired | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
descriptionrequired | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
handle | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
icon | string | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
staterequired | string | Display (fleet-map) state of an agent | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
autonomousrequired | boolean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
autostart | boolean | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
modelrequired | object | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
9 fields of | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
providerrequired | string | Provider id (app provider or one of the agent's own providers) | |||||||||
model_idrequired | string | ||||||||||
temperature | number | null | ||||||||||
max_tokens | integer | null | ||||||||||
top_p | number | null | ||||||||||
reasoning | object | Provider-agnostic reasoning ("thinking") config | |||||||||
multimodal | object | ||||||||||
3 fields of | |||||||||||
image | boolean | |
audio | boolean | |
video | boolean |
params2 fields of params
keyrequired | string | |
valuerequired | string |
provider_paramsinstructionsrequiredcontextrequiredcompact_threshold, audit, dynamic_instructions
toolsrequiredTool declarations
5 fields of tools
namerequired | string | |
enabledrequired | boolean | |
visible | boolean | |
restricted | boolean | |
locked | boolean |
triggersrequiredon_startup, on_inbox, on_outbox, on_file_change, on_chat, on_timer, on_tool_call, on_task_create, on_task_complete, on_logs, on_llm_call
3 fields of triggers
enabledrequired | boolean | ||||||||||||||||||||||||||||||||||
targetsrequired | array<TriggerTarget> | ||||||||||||||||||||||||||||||||||
11 fields of | |||||||||||||||||||||||||||||||||||
scoperequired | string | |
lambda | string | System scope: |
command | string | System scope: shell command (alternative to lambda) |
warm | boolean | |
filter | object | |
debounce_ms | integer | |
interval_ms | integer | |
batch_ms | integer | |
batch_count | integer | |
locked | boolean | |
loop | string | Cognition loop this target wakes; absent = main |
lockedsecurityrequiredlimitsrequiredmessagingrequiredmode (proactive | respond_only | listen_only), receive, network, …
mcp2 fields of mcp
serversrequired | array<McpServerConfig> | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
20 fields of | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
namerequired | string | |
transportrequired | string | |
command | string | |
args | array<string> | |
url | string | |
oauth | boolean | |
headers | map<string, string> | |
header_env | array<object> | |
bearer_token_env_var | string | |
env | map<string, string> | |
env_keys | array<string> | |
env_schema | array<object> | |
npm_package | string | |
pypi_package | string | |
source | string | |
available_tools | array<object> | |
tool_call_timeout_ms | integer | |
restricted | boolean | |
run_location | string | |
credential_files | array<object> |
new_tools_restrictedadaptersChannel adapters by type
4 fields of adapters
enabledrequired | boolean | ||||
config | object | Adapter-specific settings (no secrets: tokens are credentials) | |||
policy | object | ||||
limits | object | ||||
1 field of | |||||
max_attachment_size | integer | Bytes |
providers8 fields of providers
idrequired | string |
| ||||||
typerequired | string | |||||||
namerequired | string | |||||||
baseUrlrequired | string | |||||||
preset | string | |||||||
defaultModel | string | |||||||
params | array<object> | |||||||
2 fields of | ||||||||
keyrequired | string | |
valuerequired | string |
requestDelayMsloopsInner (side) loops; main is implicit
8 fields of loops
namerequired | string | |
goalrequired | string | Becomes the loop's instructions |
enabledrequired | boolean | |
autostart | boolean | |
autonomous | boolean | |
model | object | |
compact_threshold | integer | null | |
tools | array<string> | Absolute allow-list, intersected with the host's enabled tools |
ws_connectionsservinglocked_fieldsmetadatarequiredcreated_at, updated_at, author, tags, version
filesrequired3 fields of files
readmerequired | string | |
mindrequired | string | |
soulrequired | string |
extrarequired3 fields of extra
pathrequired | string | |
sizerequired | integer | |
mimerequired | string |
Errors 400 · 401 · 403 · 404 · 409 · 500 · 503
| 400 | Invalid body or the template was refused (bad_request, template_invalid) | AgentCreateErrorResponse |
| 401 | Missing or wrong bearer token (unauthorized) | |
| 403 | The request guard refused it: Host header not allowed (host_not_allowed, DNS-rebinding protection) or a browser cross-site request (cross_origin)host_not_allowedcross_origin | |
| 404 | Unknown template (template_missing) | AgentCreateErrorResponse |
| 409 | No usable owner identity (identity_not_ready): set it up or unlock it first. identity carries its status. | AgentCreateErrorResponse |
| 500 | Unexpected runtime failure | |
| 503 | The subsystem is not configured on this daemon |
Error bodies use the error format.
Example
curl "http://127.0.0.1:7385/templates/standard" \
-H "Authorization: Bearer $ADF_DAEMON_TOKEN"Rename a template and/or set its notes
/templates/{id}Notes are shown wherever the template is offered and never copied into agents ("" clears one; at most 500 characters). A rename moves the file (defaultId follows): the response carries the new id.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | string | Template id (the file stem in the templates folder) |
Request bodyapplication/json · TemplatePatchBody · required
| Field | Type | Description |
|---|---|---|
name | string | Rename (moves the file; the response carries the new id) |
description | string | Empty string clears |
warning | string | Empty string clears |
Responses
| Status | Description | Body |
|---|---|---|
| 200 | Updated | TemplateRef |
Fields as in TemplateRef above. | ||
Errors 400 · 401 · 403 · 404 · 409 · 500 · 503
| 400 | Invalid body or the template was refused (bad_request, template_invalid) | AgentCreateErrorResponse |
| 401 | Missing or wrong bearer token (unauthorized) | |
| 403 | The request guard refused it: Host header not allowed (host_not_allowed, DNS-rebinding protection) or a browser cross-site request (cross_origin)host_not_allowedcross_origin | |
| 404 | Unknown template (template_missing) | AgentCreateErrorResponse |
| 409 | No usable owner identity (identity_not_ready): set it up or unlock it first. identity carries its status. | AgentCreateErrorResponse |
| 500 | Unexpected runtime failure | |
| 503 | The subsystem is not configured on this daemon |
Error bodies use the error format.
Example
curl -X PATCH "http://127.0.0.1:7385/templates/standard" \
-H "Authorization: Bearer $ADF_DAEMON_TOKEN" \
-H "Content-Type: application/json" \
-d '{"description":"For research agents"}'Delete a template (moved to templates-trash)
/templates/{id}Never a hard delete; the default falls back to standard.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | string | Template id (the file stem in the templates folder) |
Responses
| Status | Description | Body | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 200 | Deleted | TemplateDeleteResponse | ||||||||||||
| ||||||||||||||
Errors 400 · 401 · 403 · 404 · 409 · 500 · 503
| 400 | Invalid body or the template was refused (bad_request, template_invalid) | AgentCreateErrorResponse |
| 401 | Missing or wrong bearer token (unauthorized) | |
| 403 | The request guard refused it: Host header not allowed (host_not_allowed, DNS-rebinding protection) or a browser cross-site request (cross_origin)host_not_allowedcross_origin | |
| 404 | Unknown template (template_missing) | AgentCreateErrorResponse |
| 409 | No usable owner identity (identity_not_ready): set it up or unlock it first. identity carries its status. | AgentCreateErrorResponse |
| 500 | Unexpected runtime failure | |
| 503 | The subsystem is not configured on this daemon |
Error bodies use the error format.
Example
curl -X DELETE "http://127.0.0.1:7385/templates/standard" \
-H "Authorization: Bearer $ADF_DAEMON_TOKEN"Make this the default template
/templates/{id}/defaultNo body.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | string | Template id (the file stem in the templates folder) |
Responses
| Status | Description | Body | |||
|---|---|---|---|---|---|
| 200 | Default set | TemplateDefaultResponse | |||
| |||||
Errors 400 · 401 · 403 · 404 · 409 · 500 · 503
| 400 | Invalid body or the template was refused (bad_request, template_invalid) | AgentCreateErrorResponse |
| 401 | Missing or wrong bearer token (unauthorized) | |
| 403 | The request guard refused it: Host header not allowed (host_not_allowed, DNS-rebinding protection) or a browser cross-site request (cross_origin)host_not_allowedcross_origin | |
| 404 | Unknown template (template_missing) | AgentCreateErrorResponse |
| 409 | No usable owner identity (identity_not_ready): set it up or unlock it first. identity carries its status. | AgentCreateErrorResponse |
| 500 | Unexpected runtime failure | |
| 503 | The subsystem is not configured on this daemon |
Error bodies use the error format.
Example
curl -X POST "http://127.0.0.1:7385/templates/standard/default" \
-H "Authorization: Bearer $ADF_DAEMON_TOKEN"Reset a shipped template to the shipped version
/templates/{id}/resetFor a shipped template (standard, sandboxed, full-access, even renamed); 400 for a user template. No body.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | string | Template id (the file stem in the templates folder) |
Responses
| Status | Description | Body |
|---|---|---|
| 200 | Reset | TemplateRef |
Fields as in TemplateRef above. | ||
Errors 400 · 401 · 403 · 404 · 409 · 500 · 503
| 400 | Invalid body or the template was refused (bad_request, template_invalid) | AgentCreateErrorResponse |
| 401 | Missing or wrong bearer token (unauthorized) | |
| 403 | The request guard refused it: Host header not allowed (host_not_allowed, DNS-rebinding protection) or a browser cross-site request (cross_origin)host_not_allowedcross_origin | |
| 404 | Unknown template (template_missing) | AgentCreateErrorResponse |
| 409 | No usable owner identity (identity_not_ready): set it up or unlock it first. identity carries its status. | AgentCreateErrorResponse |
| 500 | Unexpected runtime failure | |
| 503 | The subsystem is not configured on this daemon |
Error bodies use the error format.
Example
curl -X POST "http://127.0.0.1:7385/templates/standard/reset" \
-H "Authorization: Bearer $ADF_DAEMON_TOKEN"The review summary of a template
/templates/{id}/reviewThe agent review summary (identity scenario, tools, MCP, triggers, network, …). Provider status is unchecked or missing: credentials are not probed. Someone else's template (foreign or identity-less) shows reviewed: false, and POST /agents/create refuses it (422 template_unreviewed) until accepted.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | string | Template id (the file stem in the templates folder) |
Responses
| Status | Description | Body | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 200 | Review | TemplateReview | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
mcpServersrequiredarray<object> | triggersrequiredarray<object> | 3 fields of | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
typerequired | string | |
enabledrequired | boolean | |
targetCountrequired | integer |
codeExecutionrequiredmessagingrequired1 field of messaging
moderequired | string |
networkrequiredsecurityrequiredErrors 400 · 401 · 403 · 404 · 409 · 500 · 503
| 400 | Invalid body or the template was refused (bad_request, template_invalid) | AgentCreateErrorResponse |
| 401 | Missing or wrong bearer token (unauthorized) | |
| 403 | The request guard refused it: Host header not allowed (host_not_allowed, DNS-rebinding protection) or a browser cross-site request (cross_origin)host_not_allowedcross_origin | |
| 404 | Unknown template (template_missing) | AgentCreateErrorResponse |
| 409 | No usable owner identity (identity_not_ready): set it up or unlock it first. identity carries its status. | AgentCreateErrorResponse |
| 500 | Unexpected runtime failure | |
| 503 | The subsystem is not configured on this daemon |
Error bodies use the error format.
Example
curl "http://127.0.0.1:7385/templates/standard/review" \
-H "Authorization: Bearer $ADF_DAEMON_TOKEN"Accept a template: claim it under this owner and mark it reviewed
/templates/{id}/review/acceptClaims the file with a fresh identity under this owner, auto-locks compute (and ws / adapters / table protections when set), marks it reviewed. password for a password-protected file (400 password_required, 403 wrong_password); 409 identity_not_ready when the owner keys are unavailable.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | string | Template id (the file stem in the templates folder) |
Request bodyapplication/json · TemplateReviewAcceptBody · optional
| Field | Type | Description |
|---|---|---|
password | string | For a password-protected template file |
Responses
| Status | Description | Body | |||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 200 | Accepted | TemplateReviewAcceptResponse | |||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||
Errors 400 · 401 · 403 · 404 · 409 · 500 · 503
| 400 | Invalid body or the template was refused (bad_request, template_invalid) | AgentCreateErrorResponse |
| 401 | Missing or wrong bearer token (unauthorized) | |
| 403 | Wrong password (wrong_password), or the request guard refused it: Host header not allowed (host_not_allowed, DNS-rebinding protection) or a browser cross-site request (cross_origin) | AgentCreateErrorResponse |
| 404 | Unknown template (template_missing) | AgentCreateErrorResponse |
| 409 | No usable owner identity (identity_not_ready): set it up or unlock it first. identity carries its status. | AgentCreateErrorResponse |
| 500 | Unexpected runtime failure | |
| 503 | The subsystem is not configured on this daemon |
Error bodies use the error format.
Example
curl -X POST "http://127.0.0.1:7385/templates/standard/review/accept" \
-H "Authorization: Bearer $ADF_DAEMON_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'Replace a template's agent config
/templates/{id}/configValidated with the config schema; the first issue is the 400 error.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | string | Template id (the file stem in the templates folder) |
Request bodyapplication/json · TemplateConfigBody · required
| Field | Type | Description |
|---|---|---|
configrequired | object | The agent's ADF v0.2 config (adf_config). Only the most used fields are listed; the full shape is the ADF spec's AgentConfig. Secret values never appear here. |
Responses
| Status | Description | Body | ||||||
|---|---|---|---|---|---|---|---|---|
| 200 | Saved | TemplateConfigResponse | ||||||
| ||||||||
Errors 400 · 401 · 403 · 404 · 409 · 500 · 503
| 400 | Invalid body or the template was refused (bad_request, template_invalid) | AgentCreateErrorResponse |
| 401 | Missing or wrong bearer token (unauthorized) | |
| 403 | The request guard refused it: Host header not allowed (host_not_allowed, DNS-rebinding protection) or a browser cross-site request (cross_origin)host_not_allowedcross_origin | |
| 404 | Unknown template (template_missing) | AgentCreateErrorResponse |
| 409 | No usable owner identity (identity_not_ready): set it up or unlock it first. identity carries its status. | AgentCreateErrorResponse |
| 500 | Unexpected runtime failure | |
| 503 | The subsystem is not configured on this daemon |
Error bodies use the error format.
Example
curl -X PUT "http://127.0.0.1:7385/templates/standard/config" \
-H "Authorization: Bearer $ADF_DAEMON_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"config": {
"adf_version": "0.2",
"id": "string",
"name": "string",
"description": "string",
"state": "active",
"autonomous": true,
"model": {
"provider": "anthropic",
"model_id": "claude-sonnet-4-5"
},
"instructions": "string",
"context": {},
"tools": [],
"triggers": {},
"security": {},
"limits": {},
"messaging": {},
"metadata": {}
}
}'Write a template file (seed or extra)
/templates/{id}/filesPath parameters
| Name | Type | Description |
|---|---|---|
idrequired | string | Template id (the file stem in the templates folder) |
Request bodyapplication/json · TemplateFileBody · required
| Field | Type | Description |
|---|---|---|
pathrequired | string | README.md, mind.md, soul.md or an extra file path |
contentrequired | string |
Responses
| Status | Description | Body | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 200 | Written | TemplateFileResponse | |||||||||
| |||||||||||
Errors 400 · 401 · 403 · 404 · 409 · 500 · 503
| 400 | Invalid body or the template was refused (bad_request, template_invalid) | AgentCreateErrorResponse |
| 401 | Missing or wrong bearer token (unauthorized) | |
| 403 | The request guard refused it: Host header not allowed (host_not_allowed, DNS-rebinding protection) or a browser cross-site request (cross_origin)host_not_allowedcross_origin | |
| 404 | Unknown template (template_missing) | AgentCreateErrorResponse |
| 409 | No usable owner identity (identity_not_ready): set it up or unlock it first. identity carries its status. | AgentCreateErrorResponse |
| 500 | Unexpected runtime failure | |
| 503 | The subsystem is not configured on this daemon |
Error bodies use the error format.
Example
curl -X PUT "http://127.0.0.1:7385/templates/standard/files" \
-H "Authorization: Bearer $ADF_DAEMON_TOKEN" \
-H "Content-Type: application/json" \
-d '{"path":"mind.md","content":"# Mind\n"}'Remove an extra file
/templates/{id}/filesSeed files cannot be removed; clear their text instead.
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | string | Template id (the file stem in the templates folder) |
Query parameters
| Name | Type | Description |
|---|---|---|
pathrequired | string | Extra file path |
Responses
| Status | Description | Body | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 200 | Removed | TemplateFileResponse | |||||||||
| |||||||||||
Errors 400 · 401 · 403 · 404 · 409 · 500 · 503
| 400 | Invalid body or the template was refused (bad_request, template_invalid) | AgentCreateErrorResponse |
| 401 | Missing or wrong bearer token (unauthorized) | |
| 403 | The request guard refused it: Host header not allowed (host_not_allowed, DNS-rebinding protection) or a browser cross-site request (cross_origin)host_not_allowedcross_origin | |
| 404 | Unknown template (template_missing) | AgentCreateErrorResponse |
| 409 | No usable owner identity (identity_not_ready): set it up or unlock it first. identity carries its status. | AgentCreateErrorResponse |
| 500 | Unexpected runtime failure | |
| 503 | The subsystem is not configured on this daemon |
Error bodies use the error format.
Example
curl -X DELETE "http://127.0.0.1:7385/templates/standard/files?path=PATH" \
-H "Authorization: Bearer $ADF_DAEMON_TOKEN"