Request headers
| Header | Required | Description |
|---|---|---|
| Authorization | Yes | Bearer <PAT> |
| Content-Type | Yes | application/json |
| Idempotency-Key | No | Optional idempotency key for unsafe requests. |
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
template_id | string | Yes | Forward Template ID. |
Request body
Parameter | Type | Required | Description |
| string | No | New Template name. |
| string | No | New Template description. |
| string | No | New model identifier. |
| string | No | New System Prompt. |
| array | No | Replaces the tool configuration list. |
| array | No | Replaces the MCP Server list. |
| array | No | Replaces the Skill binding list. |
| object | No | Replaces the Managed Agents configuration. |
| string|null | No | Replaces the default Environment ID. |
| array|null | No | Replaces the default Vault list. |
| object|null | No | Replaces default file resources. |
| object|string|null | No | Replaces default environment variables. |
| object | No | Merges updates into custom metadata. |
Nested configuration objects
tools, mcp_servers, and skills are array fields; when provided in an update request, they entirely replace the original array.
File resources
files is a map keyed by File ID. Do not write file_id, id, or resource_id inside the configuration item. Forward automatically injects mount_path when creating a Session.
| Field | Type | Required | Description |
|---|---|---|---|
enabled | boolean | No | Omitted is treated as true. In an Identity Config, set to false to disable an inherited file. |
tools[] items
Each tools[] item selects its structure through type.
| Field | Type | Applies to | Description |
|---|---|---|---|
type | string | All | Required. One of agent_toolset_20260401, mcp_toolset, or custom. |
enabled_tools | array | agent_toolset_20260401 | Convenience allowlist; a non-empty array enables only the listed built-in tools. |
disallowed_tools | array | agent_toolset_20260401 | Convenience denylist; compiled into disabled tool configs. |
configs | array | agent_toolset_20260401, mcp_toolset | Per-tool enablement and permission policy. |
mcp_server_name | string | mcp_toolset | Required. Must match a mcp_servers[].name. |
name | string | custom | Required. Custom tool name; must not collide with a built-in tool. |
description | string | custom | Required. Description of the custom tool. |
input_schema | object | custom | Required JSON Schema. input_schema.type must be object. |
Bash, Read, Write, Edit, Glob, Grep, WebFetch, WebSearch, and DeliverArtifacts.
Tool config
Each entry in tools[].configs[] uses the following shape.
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Tool name; use the built-in tool name for built-ins and the MCP tool name for MCP toolsets. |
enabled | boolean | No | false hides and rejects the tool; true enables it explicitly. |
permission_policy | object | No | Runtime permission behavior. |
Permission policy
| Field | Type | Required | Description |
|---|---|---|---|
type | string | Yes | One of always_allow, always_ask, or always_deny. |
MCP servers
| Field | Type | Required | Description |
|---|---|---|---|
type | string | No | Only http is currently supported. When omitted, the Effective Config treats the entry as an HTTP MCP server. |
name | string | Yes | MCP server name that is unique within the Template and referenced by tools[].mcp_server_name. |
url | string | Yes | Streamable HTTP MCP endpoint URL. |
skills[] items
| Field | Type | Required | Description |
|---|---|---|---|
type | string | Yes | Either custom or qoder. |
skill_id | string | Yes | Skill ID. |
version | string | No | Skill version. Omit to use the latest version. |
enabled | boolean | No | Omitted is treated as true. false excludes the skill from the compiled Agent config. |
Example request
Example response
HTTP 200 OK
Response fields
| Field | Type | Description |
|---|---|---|
| Return value | object | Full Template object after update. |
Errors
| HTTP | Type | Code | Trigger |
|---|---|---|---|
| 400 | invalid_request_error | - | Invalid request body or unsupported field value. |
| 404 | not_found_error | - | Template or referenced resource does not exist. |
| 409 | conflict_error | - | Template name already exists or the status conflicts. |
| 401 | authentication_error | TOKEN_INVALID | PAT invalid or expired. |
Notes
- Archived Templates cannot be updated.
- Updating Session default configuration does not change existing Sessions.