Agents API — Configurator
API reference for Configurator agent management endpoints
Updated 2026-11-03
Verified 2026-11-03
The Agents API manages agents: an LLM, a prompt, tools, skills, knowledge, guardrails, and optional sub-agents combined into a versioned, deployable configuration that ADK runs. For architecture and configuration, see Configurator.
Paths are relative to the Configurator service root (port 8100 locally). Authentication, required headers, errors, and the pagination envelope follow the API conventions; see Pagination for page and page_size (default 20, maximum 100).
When a request sends X-Project-Id, list and bulk-fetch results only include agents enabled in that project, and detail routes return 404 for agents that are not enabled. New agents are bound to the project; if binding fails, the creation is rolled back.
Endpoints
| Method | Path | Permission | Description |
|---|---|---|---|
| GET | /api/v1/agents/ | HasCanListAgentPermission | List agents |
| POST | /api/v1/agents/ | HasCanCreateAgentPermission | Create an agent (201) |
| GET | /api/v1/agents/{id}/ | HasCanViewAgentPermission | Get an agent with its latest draft and deployed configurations |
| PUT | /api/v1/agents/{id}/ | HasCanUpdateAgentPermission | Update an agent (creates or edits a draft) |
| DELETE | /api/v1/agents/{id}/ | HasCanDeleteAgentPermission | Delete an agent (204) |
| POST | /api/v1/agents/{id}/deploy/ | HasCanUpdateAgentPermission | Deploy the latest draft |
| GET | /api/v1/agents/{id}/versions/ | HasCanViewAgentPermission | List configuration versions |
| GET | /api/v1/agents/{id}/tree/ | HasCanViewAgentPermission | Resolved sub-agent tree for a version |
| GET | /api/v1/agents/bulk-fetch/ | HasCanListAgentPermission | Fetch several agents by reference |
| GET | /api/v1/agents/by-collection/{collection_id}/ | HasCanListAgentPermission | Agents that use a knowledge base collection |
| GET | /api/v1/agents/authorized-search/ | — | Agents the caller may execute in an app scope |
| GET | /api/v1/agents/{id}/runtime-resources/ | Service permission | Runtime resource manifest for consumer execution |
| POST | /api/v1/agents/{id}/candidate-apply/ | HasCanUpdateAgentPermission | Apply an experiment or suggestion candidate |
| POST | /api/v1/agents/{id}/share-with-organization/ | Organization administrator | Share a project agent with the organization |
There is no PATCH and no clone route.
Create or Update an Agent
POST /api/v1/agents/ and PUT /api/v1/agents/{id}/
| Field | Type | Required | Description |
|---|---|---|---|
name | string | yes | Agent name |
description | string | no | Description |
tags | string[] | no | Tags |
configuration | object | yes | Configuration fields below |
visibility | string | no | Create only; project or organization visibility when X-Project-Id is sent |
Configuration fields
| Field | Description |
|---|---|
type | llm or workflow. sequential, parallel, and loop are deprecated for writes; use workflow with workflow_kind. |
workflow_kind | sequential, parallel, loop, or graph |
workflow_graph | Graph definition for workflow_kind: graph |
model | {"provider": "...", "model": "..."} from the organization's BYOT models |
prompt | System instructions |
temperature | 0.1 to 1.9 |
max_output_tokens | Output limit |
thinking_mode, reasoning_effort | Reasoning controls, clamped to the model's capabilities |
dynamic_thinking_enabled | Lets ADK pick thinking settings per query |
prompt_caching, prompt_caching_history | Anthropic-family prompt caching; null means on |
headroom_compression_enabled | Opts in to the Headroom compression proxy |
sub_agents | [{"id": "...", "version": "1.0"}] |
tools | [{"id": "...", "type": "api", "version": "1.0"}] |
skills | [{"id": "...", "version": "1.0"}] |
knowledge_base_collections, knowledge_graph_ids | Knowledge sources |
web_browsing_enabled | Default false |
enable_context | Context injection toggle |
guardrails, use_org_default_guardrails | Content filter guardrails, or the organization defaults; the two are mutually exclusive |
is_root | Root agent flag |
output_key | State key for the agent's output |
max_iterations | Loop workflows |
context_window_tokens | Root-agent context window override, at least 8192 |
token_threshold | Compaction trigger in tokens |
num_invocations_to_keep, compaction_interval, overlap_size, event_retention_size | History and compaction settings ADK applies |
analyzer_id, analyzer_version | Attached analyzer |
trigger_policy | Analyzer trigger policy |
source_experiment_id, source_suggestion_id | Provenance for candidate-applied versions |
Read-only fields: version, status, content_hash, topology_hash, and business_events (deprecated; replaced by analyzers, with a business_events_deprecated flag in the output).
curl -s -X POST 'http://localhost:8100/api/v1/agents/' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'X-Org-Id: YOUR_ORG_ID' \
-H 'Content-Type: application/json' \
-d '{
"name": "customer_support_agent",
"description": "Handles customer support inquiries",
"configuration": {
"type": "llm",
"model": {"provider": "azure_openai", "model": "gpt-4o"},
"prompt": "You are a helpful customer support agent.",
"tools": [{"id": "TOOL_ID", "type": "api", "version": "1.0"}]
}
}'
The response is the agent (id, org_id, name, description, tags, timestamps) with latest_draft and latest_deployed configurations.
Versioning
Versions are major.minor strings. On update:
| Latest version | Change | Result |
|---|---|---|
| Deployed | Only sub-agent versions changed | Next minor version |
| Deployed | Anything else | Next major version |
| Draft (major) or only sub-agent versions changed | Any | The draft is updated in place |
| Draft (minor) | Anything else | Next major version |
Each new configuration emits agent.configuration.added or agent.configuration.updated on the configurator Kafka topic.
List Agents
GET /api/v1/agents/
| Parameter | Description |
|---|---|
name | Name filter |
tags | Tag filter |
is_root | Root agents only |
status | draft or deployed |
sort_by | created_at, updated_at (default), or name |
sort_order | asc or desc (default) |
page, page_size | Pagination |
List Versions
GET /api/v1/agents/{id}/versions/
| Parameter | Description |
|---|---|
status | draft or deployed |
version | One or more exact versions |
version_type | all, major, or minor |
sort_by | version, created_at, or updated_at |
sort_order | asc or desc |
page, page_size | Pagination |
Deploy
POST /api/v1/agents/{id}/deploy/
Takes no body. Deploys the agent's latest draft and also deploys any draft sub-agents it references. Returns 400 when there is no draft. ADK and the other consumers receive agent.configuration.deployed.
Delete
DELETE /api/v1/agents/{id}/ soft-deletes the agent and returns 204. Deletion is blocked while the agent is used as a sub-agent, a graph node, or an app's orchestrator. Consumers receive agent.deleted.
Bulk Fetch
GET /api/v1/agents/bulk-fetch/?agent=<uuid>&agent=<uuid>:2.1
Each agent value is either a UUID (latest deployed configuration; returned with configuration: null when nothing is deployed) or uuid:version (that exact version; omitted when it does not exist). Malformed UUIDs and empty versions (uuid:) return 400.
Authorized Search
GET /api/v1/agents/authorized-search/?app_id=...&scope_type=...&scope_id=...
Takes the list filters plus app_id, scope_type, scope_id (all required), and action (default agent.execute). Returns only the agents the caller may run in that scope.
Tree
GET /api/v1/agents/{id}/tree/?version=1.0 returns the agent and its resolved sub-agents for the given version.
Running Agents
Deployed agents run on ADK, not Configurator. Use the ADK host with /api/v1/adk/converse/ (sync), /api/v1/adk/converse/v2 (WebSocket), or /api/v1/adk/async/requests/ (async). See the ADK Converse API.
Related APIs
- Tools API: tools that agents use
- Apps API: apps that expose agents to end users
- ADK Converse API: agent execution