The chat-agent routes manage the definitions (system prompts, frontmatter, tool allow-lists, model, max-turns) that ship and run inside the agent container. Use these endpoints to list available agents, create or clone custom agents, edit their raw markdown source, and adjust per-agent configuration such as model, tools, and turn limits. Responses are realm-scoped to the gateway’s own realm; a client-supplied X-Hoody-Realm or ?realm= is rejected with realm_scope_unsupported on these routes.
List the chat-agent definitions resolved for the requesting cwd / config_dir. Results include both built-in and custom definitions.
curl -X GET " https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com/api/v1/agent/agents?page=1&limit=20 " \
-H " Authorization: Bearer <token> " \
-H " X-Hoody-Cwd: /home/user/project " \
-H " X-Hoody-Config-Dir: /home/user/.hoody "
import { HoodyClient } from ' hoody-sdk ' ;
const client = new HoodyClient ({ baseURL : ' https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com ' , token : process . env . HOODY_TOKEN });
await client . agent . agents . listAgentsIterator ({ page : 1 , limit : 20 });
" description " : " The default chat agent. " ,
" tools " : [ " read_file " , " write_file " , " run_command " ],
" model " : " anthropic/claude-opus-4-8 " ,
" description " : " Reviews pull requests and flags risky changes. " ,
" tools " : [ " read_file " , " git_diff " ],
" model " : " anthropic/claude-sonnet-4-6 " ,
" message " : " invalid request "
Error Code Title Description Resolution bad_requestBad request The request was malformed or carried invalid parameters. Correct the request body or query parameters. realm_scope_unsupportedRealm scope unsupported A per-request realm header was supplied to an active-only / global-no-realm RPC, which has no realm dimension to scope. Omit the realm header on this route, or open a session to scope by realm.
" message " : " request must arrive through the Hoody proxy "
Error Code Title Description Resolution forbiddenForbidden (not via the Hoody proxy) Forbidden — the request did not reach the service through the public endpoint. Reach the agent through hoody-proxy (e.g. hoody agent … → platform → proxy), not by connecting to the container directly.
" message " : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded; the gateway throttled the request before dispatch. Honor the Retry-After header and retry; reduce the request rate.
" code " : " internal_error " ,
" message " : " internal server error "
Error Code Title Description Resolution internal_errorInternal error An unexpected error occurred while handling the request. Retry; if persistent, inspect the daemon logs.
Name In Type Required Description pagequery integer No 1-based page number for pagination. limitquery integer No Maximum items per page (0 = no pagination). X-Hoody-Cwdheader string No Per-request working-directory scope: the.hoody project layer / record cwd / tool+workflow cwd. Required by routes that resolve a cwd. X-Hoody-Config-Dirheader string No Per-request --config-dir override selecting which on-disk .hoody install a stateless read/write resolves. X-Hoody-Containerheader string No Per-request bound remote container (omitted = local). Rejected (400) on routes with no container dimension. X-Hoody-Realmheader string No Per-request realm selector: global or a 24-hex id (also accepted as ?realm=). Rejected (400 realm_scope_unsupported) on active-only / no-realm routes. realmquery string No Per-request realm selector — the in:query alias of the X-Hoody-Realm header (read only when the header is absent).
Read the raw markdown source (frontmatter + system prompt) of a single chat-agent definition.
curl -X GET " https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com/api/v1/agent/agents/code-reviewer/source " \
-H " Authorization: Bearer <token> " \
-H " X-Hoody-Cwd: /home/user/project "
import { HoodyClient } from ' hoody-sdk ' ;
const client = new HoodyClient ({ baseURL : ' https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com ' , token : process . env . HOODY_TOKEN });
await client . agent . agents . getAgentSource ( ' code-reviewer ' );
" content " : " --- \n description: Reviews pull requests and flags risky changes. \n model: anthropic/claude-sonnet-4-6 \n tools: [read_file, git_diff] \n turns: 10 \n --- \n\n You are a careful code reviewer. Focus on correctness, security, and clarity. " ,
" message " : " invalid request "
Error Code Title Description Resolution bad_requestBad request The request was malformed or carried invalid parameters. Correct the request body or query parameters. realm_scope_unsupportedRealm scope unsupported A per-request realm header was supplied to an active-only / global-no-realm RPC, which has no realm dimension to scope. Omit the realm header on this route, or open a session to scope by realm.
" message " : " request must arrive through the Hoody proxy "
Error Code Title Description Resolution forbiddenForbidden (not via the Hoody proxy) Forbidden — the request did not reach the service through the public endpoint. Reach the agent through hoody-proxy (e.g. hoody agent … → platform → proxy), not by connecting to the container directly.
" message " : " resource not found "
Error Code Title Description Resolution not_foundNot found The requested resource does not exist. Verify the path and identifier.
" message " : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded; the gateway throttled the request before dispatch. Honor the Retry-After header and retry; reduce the request rate.
" code " : " internal_error " ,
" message " : " internal server error "
Error Code Title Description Resolution internal_errorInternal error An unexpected error occurred while handling the request. Retry; if persistent, inspect the daemon logs.
" code " : " service_unavailable " ,
" message " : " service unavailable "
Error Code Title Description Resolution service_unavailableService unavailable The daemon could not service the request (too busy, or a per-client stream concurrency cap was hit). Honor Retry-After and retry.
Name In Type Required Description namepath string Yes Path identifier. X-Hoody-Cwdheader string No Per-request working-directory scope. X-Hoody-Config-Dirheader string No Per-request --config-dir override. X-Hoody-Containerheader string No Per-request bound remote container. Rejected (400) on routes with no container dimension. X-Hoody-Realmheader string No Per-request realm selector: global or a 24-hex id. Rejected (400 realm_scope_unsupported). realmquery string No Per-request realm selector — the in:query alias of X-Hoody-Realm.
Create (or overwrite) a custom chat-agent definition file from a name, optional frontmatter, and a system prompt.
curl -X POST " https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com/api/v1/agent/agents " \
-H " Authorization: Bearer <token> " \
-H " Content-Type: application/json " \
-H " X-Hoody-Cwd: /home/user/project " \
"description": "Reviews pull requests and flags risky changes.",
"model": "anthropic/claude-sonnet-4-6",
"tools": ["read_file", "git_diff"],
"system_prompt": "You are a careful code reviewer. Focus on correctness, security, and clarity."
import { HoodyClient } from ' hoody-sdk ' ;
const client = new HoodyClient ({ baseURL : ' https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com ' , token : process . env . HOODY_TOKEN });
await client . agent . agents . createAgent ({
description : ' Reviews pull requests and flags risky changes. ' ,
model : ' anthropic/claude-sonnet-4-6 ' ,
tools : [ ' read_file ' , ' git_diff ' ],
system_prompt : ' You are a careful code reviewer. Focus on correctness, security, and clarity. '
" message " : " invalid request "
Error Code Title Description Resolution bad_requestBad request The request was malformed or carried invalid parameters. Correct the request body or query parameters. realm_scope_unsupportedRealm scope unsupported A per-request realm header was supplied to an active-only / global-no-realm RPC, which has no realm dimension to scope. Omit the realm header on this route, or open a session to scope by realm.
" message " : " request must arrive through the Hoody proxy "
Error Code Title Description Resolution forbiddenForbidden (not via the Hoody proxy) Forbidden — the request did not reach the service through the public endpoint. Reach the agent through hoody-proxy (e.g. hoody agent … → platform → proxy), not by connecting to the container directly.
" message " : " resource not found "
Error Code Title Description Resolution not_foundNot found The requested resource does not exist. Verify the path and identifier.
" code " : " payload_too_large " ,
" message " : " request body exceeds the configured size limit "
Error Code Title Description Resolution payload_too_largePayload too large The request body exceeds the configured size cap (MaxBodyBytes). The gateway rejects an oversized body at the edge before the handler reads it. Reduce the request body below the configured limit (default 8 MiB); split a large payload into smaller requests.
" message " : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded; the gateway throttled the request before dispatch. Honor the Retry-After header and retry; reduce the request rate.
" code " : " internal_error " ,
" message " : " internal server error "
Error Code Title Description Resolution internal_errorInternal error An unexpected error occurred while handling the request. Retry; if persistent, inspect the daemon logs.
" code " : " service_unavailable " ,
" message " : " service unavailable "
Error Code Title Description Resolution service_unavailableService unavailable The daemon could not service the request (too busy, or a per-client stream concurrency cap was hit). Honor Retry-After and retry.
Name In Type Required Description X-Hoody-Cwdheader string No Per-request working-directory scope. X-Hoody-Config-Dirheader string No Per-request --config-dir override. X-Hoody-Containerheader string No Per-request bound remote container. Rejected (400) on routes with no container dimension. X-Hoody-Realmheader string No Per-request realm selector: global or a 24-hex id. Rejected (400 realm_scope_unsupported). realmquery string No Per-request realm selector — the in:query alias of X-Hoody-Realm.
Name Type Required Description namestring Yes Agent name (the definition file stem). frontmatterobject No Optional frontmatter keys (model / tools / turns / description). system_promptstring No The agent’s system prompt body.
Copy a chat-agent definition to a new name.
curl -X POST " https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com/api/v1/agent/agents/code-reviewer/copy " \
-H " Authorization: Bearer <token> " \
-H " Content-Type: application/json " \
-H " X-Hoody-Cwd: /home/user/project " \
-d ' { "new_name": "code-reviewer-strict" } '
import { HoodyClient } from ' hoody-sdk ' ;
const client = new HoodyClient ({ baseURL : ' https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com ' , token : process . env . HOODY_TOKEN });
await client . agent . agents . copyAgent ( ' code-reviewer ' , { new_name : ' code-reviewer-strict ' });
" name " : " code-reviewer-strict " ,
" copied_from " : " code-reviewer "
" message " : " invalid request "
Error Code Title Description Resolution bad_requestBad request The request was malformed or carried invalid parameters. Correct the request body or query parameters. realm_scope_unsupportedRealm scope unsupported A per-request realm header was supplied to an active-only / global-no-realm RPC, which has no realm dimension to scope. Omit the realm header on this route, or open a session to scope by realm.
" message " : " request must arrive through the Hoody proxy "
Error Code Title Description Resolution forbiddenForbidden (not via the Hoody proxy) Forbidden — the request did not reach the service through the public endpoint. Reach the agent through hoody-proxy (e.g. hoody agent … → platform → proxy), not by connecting to the container directly.
" message " : " resource not found "
Error Code Title Description Resolution not_foundNot found The requested resource does not exist. Verify the path and identifier.
" code " : " payload_too_large " ,
" message " : " request body exceeds the configured size limit "
Error Code Title Description Resolution payload_too_largePayload too large The request body exceeds the configured size cap (MaxBodyBytes). The gateway rejects an oversized body at the edge before the handler reads it. Reduce the request body below the configured limit (default 8 MiB); split a large payload into smaller requests.
" message " : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded; the gateway throttled the request before dispatch. Honor the Retry-After header and retry; reduce the request rate.
" code " : " internal_error " ,
" message " : " internal server error "
Error Code Title Description Resolution internal_errorInternal error An unexpected error occurred while handling the request. Retry; if persistent, inspect the daemon logs.
" code " : " service_unavailable " ,
" message " : " service unavailable "
Error Code Title Description Resolution service_unavailableService unavailable The daemon could not service the request (too busy, or a per-client stream concurrency cap was hit). Honor Retry-After and retry.
Name In Type Required Description namepath string Yes Path identifier. X-Hoody-Cwdheader string No Per-request working-directory scope. X-Hoody-Config-Dirheader string No Per-request --config-dir override. X-Hoody-Containerheader string No Per-request bound remote container. Rejected (400) on routes with no container dimension. X-Hoody-Realmheader string No Per-request realm selector: global or a 24-hex id. Rejected (400 realm_scope_unsupported). realmquery string No Per-request realm selector — the in:query alias of X-Hoody-Realm.
Name Type Required Description new_namestring Yes Name for the copied agent.
Overwrite the raw markdown source of a chat-agent definition. Pass base_gen from a prior read to enable conflict detection.
curl -X PUT " https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com/api/v1/agent/agents/code-reviewer/source " \
-H " Authorization: Bearer <token> " \
-H " Content-Type: application/json " \
-H " X-Hoody-Cwd: /home/user/project " \
"content": "---\ndescription: Reviews pull requests and flags risky changes.\nmodel: anthropic/claude-sonnet-4-6\ntools: [read_file, git_diff]\nturns: 12\n---\n\nYou are a careful code reviewer. Always read the diff first.",
import { HoodyClient } from ' hoody-sdk ' ;
const client = new HoodyClient ({ baseURL : ' https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com ' , token : process . env . HOODY_TOKEN });
await client . agent . agents . putAgentSource ( ' code-reviewer ' , {
content : ' --- \n description: Reviews pull requests and flags risky changes. \n model: anthropic/claude-sonnet-4-6 \n tools: [read_file, git_diff] \n turns: 12 \n --- \n\n You are a careful code reviewer. Always read the diff first. ' ,
" message " : " invalid request "
Error Code Title Description Resolution bad_requestBad request The request was malformed or carried invalid parameters. Correct the request body or query parameters. realm_scope_unsupportedRealm scope unsupported A per-request realm header was supplied to an active-only / global-no-realm RPC, which has no realm dimension to scope. Omit the realm header on this route, or open a session to scope by realm.
" message " : " request must arrive through the Hoody proxy "
Error Code Title Description Resolution forbiddenForbidden (not via the Hoody proxy) Forbidden — the request did not reach the service through the public endpoint. Reach the agent through hoody-proxy (e.g. hoody agent … → platform → proxy), not by connecting to the container directly.
" message " : " resource not found "
Error Code Title Description Resolution not_foundNot found The requested resource does not exist. Verify the path and identifier.
" code " : " payload_too_large " ,
" message " : " request body exceeds the configured size limit "
Error Code Title Description Resolution payload_too_largePayload too large The request body exceeds the configured size cap (MaxBodyBytes). The gateway rejects an oversized body at the edge before the handler reads it. Reduce the request body below the configured limit (default 8 MiB); split a large payload into smaller requests.
" message " : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded; the gateway throttled the request before dispatch. Honor the Retry-After header and retry; reduce the request rate.
" code " : " internal_error " ,
" message " : " internal server error "
Error Code Title Description Resolution internal_errorInternal error An unexpected error occurred while handling the request. Retry; if persistent, inspect the daemon logs.
" code " : " service_unavailable " ,
" message " : " service unavailable "
Error Code Title Description Resolution service_unavailableService unavailable The daemon could not service the request (too busy, or a per-client stream concurrency cap was hit). Honor Retry-After and retry.
Name In Type Required Description namepath string Yes Path identifier. X-Hoody-Cwdheader string No Per-request working-directory scope. X-Hoody-Config-Dirheader string No Per-request --config-dir override. X-Hoody-Containerheader string No Per-request bound remote container. Rejected (400) on routes with no container dimension. X-Hoody-Realmheader string No Per-request realm selector: global or a 24-hex id. Rejected (400 realm_scope_unsupported). realmquery string No Per-request realm selector — the in:query alias of X-Hoody-Realm.
Name Type Required Description contentstring Yes The full markdown source (frontmatter + system prompt). base_geninteger No The gen returned by agents.read_source, for conflict detection.
Set (or remove) an agent’s frontmatter model line. Pass model: "" to remove the line entirely.
curl -X PATCH " https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com/api/v1/agent/agents/code-reviewer/model " \
-H " Authorization: Bearer <token> " \
-H " Content-Type: application/json " \
-H " X-Hoody-Cwd: /home/user/project " \
-d ' { "model": "anthropic/claude-opus-4-8" } '
import { HoodyClient } from ' hoody-sdk ' ;
const client = new HoodyClient ({ baseURL : ' https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com ' , token : process . env . HOODY_TOKEN });
await client . agent . agents . setAgentModel ( ' code-reviewer ' , { model : ' anthropic/claude-opus-4-8 ' });
" model " : " anthropic/claude-opus-4-8 "
" message " : " invalid request "
Error Code Title Description Resolution bad_requestBad request The request was malformed or carried invalid parameters. Correct the request body or query parameters. realm_scope_unsupportedRealm scope unsupported A per-request realm header was supplied to an active-only / global-no-realm RPC, which has no realm dimension to scope. Omit the realm header on this route, or open a session to scope by realm.
" message " : " request must arrive through the Hoody proxy "
Error Code Title Description Resolution forbiddenForbidden (not via the Hoody proxy) Forbidden — the request did not reach the service through the public endpoint. Reach the agent through hoody-proxy (e.g. hoody agent … → platform → proxy), not by connecting to the container directly.
" message " : " resource not found "
Error Code Title Description Resolution not_foundNot found The requested resource does not exist. Verify the path and identifier.
" code " : " payload_too_large " ,
" message " : " request body exceeds the configured size limit "
Error Code Title Description Resolution payload_too_largePayload too large The request body exceeds the configured size cap (MaxBodyBytes). The gateway rejects an oversized body at the edge before the handler reads it. Reduce the request body below the configured limit (default 8 MiB); split a large payload into smaller requests.
" message " : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded; the gateway throttled the request before dispatch. Honor the Retry-After header and retry; reduce the request rate.
" code " : " internal_error " ,
" message " : " internal server error "
Error Code Title Description Resolution internal_errorInternal error An unexpected error occurred while handling the request. Retry; if persistent, inspect the daemon logs.
" code " : " service_unavailable " ,
" message " : " service unavailable "
Error Code Title Description Resolution service_unavailableService unavailable The daemon could not service the request (too busy, or a per-client stream concurrency cap was hit). Honor Retry-After and retry.
Name In Type Required Description namepath string Yes Path identifier. X-Hoody-Cwdheader string No Per-request working-directory scope. X-Hoody-Config-Dirheader string No Per-request --config-dir override. X-Hoody-Containerheader string No Per-request bound remote container. Rejected (400) on routes with no container dimension. X-Hoody-Realmheader string No Per-request realm selector: global or a 24-hex id. Rejected (400 realm_scope_unsupported). realmquery string No Per-request realm selector — the in:query alias of X-Hoody-Realm.
Name Type Required Description modelstring No Model spec (e.g. anthropic/claude-opus-4-8); "" removes the frontmatter model line.
Set (or remove) an agent’s frontmatter tools line. An empty list removes the line, which means “all tools”.
curl -X PATCH " https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com/api/v1/agent/agents/code-reviewer/tools " \
-H " Authorization: Bearer <token> " \
-H " Content-Type: application/json " \
-H " X-Hoody-Cwd: /home/user/project " \
-d ' { "tools": ["read_file", "git_diff", "search_code"] } '
import { HoodyClient } from ' hoody-sdk ' ;
const client = new HoodyClient ({ baseURL : ' https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com ' , token : process . env . HOODY_TOKEN });
await client . agent . agents . setAgentTools ( ' code-reviewer ' , { tools : [ ' read_file ' , ' git_diff ' , ' search_code ' ] });
" tools " : [ " read_file " , " git_diff " , " search_code " ]
" message " : " invalid request "
Error Code Title Description Resolution bad_requestBad request The request was malformed or carried invalid parameters. Correct the request body or query parameters. realm_scope_unsupportedRealm scope unsupported A per-request realm header was supplied to an active-only / global-no-realm RPC, which has no realm dimension to scope. Omit the realm header on this route, or open a session to scope by realm.
" message " : " request must arrive through the Hoody proxy "
Error Code Title Description Resolution forbiddenForbidden (not via the Hoody proxy) Forbidden — the request did not reach the service through the public endpoint. Reach the agent through hoody-proxy (e.g. hoody agent … → platform → proxy), not by connecting to the container directly.
" message " : " resource not found "
Error Code Title Description Resolution not_foundNot found The requested resource does not exist. Verify the path and identifier.
" code " : " payload_too_large " ,
" message " : " request body exceeds the configured size limit "
Error Code Title Description Resolution payload_too_largePayload too large The request body exceeds the configured size cap (MaxBodyBytes). The gateway rejects an oversized body at the edge before the handler reads it. Reduce the request body below the configured limit (default 8 MiB); split a large payload into smaller requests.
" message " : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded; the gateway throttled the request before dispatch. Honor the Retry-After header and retry; reduce the request rate.
" code " : " internal_error " ,
" message " : " internal server error "
Error Code Title Description Resolution internal_errorInternal error An unexpected error occurred while handling the request. Retry; if persistent, inspect the daemon logs.
" code " : " service_unavailable " ,
" message " : " service unavailable "
Error Code Title Description Resolution service_unavailableService unavailable The daemon could not service the request (too busy, or a per-client stream concurrency cap was hit). Honor Retry-After and retry.
Name In Type Required Description namepath string Yes Path identifier. X-Hoody-Cwdheader string No Per-request working-directory scope. X-Hoody-Config-Dirheader string No Per-request --config-dir override. X-Hoody-Containerheader string No Per-request bound remote container. Rejected (400) on routes with no container dimension. X-Hoody-Realmheader string No Per-request realm selector: global or a 24-hex id. Rejected (400 realm_scope_unsupported). realmquery string No Per-request realm selector — the in:query alias of X-Hoody-Realm.
Name Type Required Description toolsarray of string No Tool names allowed for the agent; an empty list removes the line (= all tools).
Set an agent’s max-turns frontmatter value.
curl -X PATCH " https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com/api/v1/agent/agents/code-reviewer/turns " \
-H " Authorization: Bearer <token> " \
-H " Content-Type: application/json " \
-H " X-Hoody-Cwd: /home/user/project " \
import { HoodyClient } from ' hoody-sdk ' ;
const client = new HoodyClient ({ baseURL : ' https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com ' , token : process . env . HOODY_TOKEN });
await client . agent . agents . setAgentTurns ( ' code-reviewer ' , { turns : 15 });
" message " : " invalid request "
Error Code Title Description Resolution bad_requestBad request The request was malformed or carried invalid parameters. Correct the request body or query parameters. realm_scope_unsupportedRealm scope unsupported A per-request realm header was supplied to an active-only / global-no-realm RPC, which has no realm dimension to scope. Omit the realm header on this route, or open a session to scope by realm.
" message " : " request must arrive through the Hoody proxy "
Error Code Title Description Resolution forbiddenForbidden (not via the Hoody proxy) Forbidden — the request did not reach the service through the public endpoint. Reach the agent through hoody-proxy (e.g. hoody agent … → platform → proxy), not by connecting to the container directly.
" message " : " resource not found "
Error Code Title Description Resolution not_foundNot found The requested resource does not exist. Verify the path and identifier.
" code " : " payload_too_large " ,
" message " : " request body exceeds the configured size limit "
Error Code Title Description Resolution payload_too_largePayload too large The request body exceeds the configured size cap (MaxBodyBytes). The gateway rejects an oversized body at the edge before the handler reads it. Reduce the request body below the configured limit (default 8 MiB); split a large payload into smaller requests.
" message " : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded; the gateway throttled the request before dispatch. Honor the Retry-After header and retry; reduce the request rate.
" code " : " internal_error " ,
" message " : " internal server error "
Error Code Title Description Resolution internal_errorInternal error An unexpected error occurred while handling the request. Retry; if persistent, inspect the daemon logs.
" code " : " service_unavailable " ,
" message " : " service unavailable "
Error Code Title Description Resolution service_unavailableService unavailable The daemon could not service the request (too busy, or a per-client stream concurrency cap was hit). Honor Retry-After and retry.
Name In Type Required Description namepath string Yes Path identifier. X-Hoody-Cwdheader string No Per-request working-directory scope. X-Hoody-Config-Dirheader string No Per-request --config-dir override. X-Hoody-Containerheader string No Per-request bound remote container. Rejected (400) on routes with no container dimension. X-Hoody-Realmheader string No Per-request realm selector: global or a 24-hex id. Rejected (400 realm_scope_unsupported). realmquery string No Per-request realm selector — the in:query alias of X-Hoody-Realm.
Name Type Required Description turnsinteger No Max agent turns per dispatch.
Toggle a single tool on or off in an agent’s frontmatter tools line. Omit the optional body to flip the current state, or pass enabled: true / enabled: false to set it explicitly.
curl -X POST " https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com/api/v1/agent/agents/code-reviewer/tools/search_code/toggle " \
-H " Authorization: Bearer <token> " \
-H " Content-Type: application/json " \
-H " X-Hoody-Cwd: /home/user/project " \
import { HoodyClient } from ' hoody-sdk ' ;
const client = new HoodyClient ({ baseURL : ' https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com ' , token : process . env . HOODY_TOKEN });
await client . agent . agents . toggleAgentTool ( ' code-reviewer ' , ' search_code ' , { enabled : true });
" message " : " invalid request "
Error Code Title Description Resolution bad_requestBad request The request was malformed or carried invalid parameters. Correct the request body or query parameters. realm_scope_unsupportedRealm scope unsupported A per-request realm header was supplied to an active-only / global-no-realm RPC, which has no realm dimension to scope. Omit the realm header on this route, or open a session to scope by realm.
" message " : " request must arrive through the Hoody proxy "
Error Code Title Description Resolution forbiddenForbidden (not via the Hoody proxy) Forbidden — the request did not reach the service through the public endpoint. Reach the agent through hoody-proxy (e.g. hoody agent … → platform → proxy), not by connecting to the container directly.
" message " : " resource not found "
Error Code Title Description Resolution not_foundNot found The requested resource does not exist. Verify the path and identifier.
" code " : " payload_too_large " ,
" message " : " request body exceeds the configured size limit "
Error Code Title Description Resolution payload_too_largePayload too large The request body exceeds the configured size cap (MaxBodyBytes). The gateway rejects an oversized body at the edge before the handler reads it. Reduce the request body below the configured limit (default 8 MiB); split a large payload into smaller requests.
" message " : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded; the gateway throttled the request before dispatch. Honor the Retry-After header and retry; reduce the request rate.
" code " : " internal_error " ,
" message " : " internal server error "
Error Code Title Description Resolution internal_errorInternal error An unexpected error occurred while handling the request. Retry; if persistent, inspect the daemon logs.
" code " : " service_unavailable " ,
" message " : " service unavailable "
Error Code Title Description Resolution service_unavailableService unavailable The daemon could not service the request (too busy, or a per-client stream concurrency cap was hit). Honor Retry-After and retry.
Name In Type Required Description namepath string Yes Path identifier. toolpath string Yes Path identifier. X-Hoody-Cwdheader string No Per-request working-directory scope. X-Hoody-Config-Dirheader string No Per-request --config-dir override. X-Hoody-Containerheader string No Per-request bound remote container. Rejected (400) on routes with no container dimension. X-Hoody-Realmheader string No Per-request realm selector: global or a 24-hex id. Rejected (400 realm_scope_unsupported). realmquery string No Per-request realm selector — the in:query alias of X-Hoody-Realm.
This endpoint accepts no body. Any keys other than _-prefixed reserved keys are forwarded to the daemon; the agent name and tool come from the path. An optional enabled value (omitted = flip) may be supplied.
Rename a custom chat-agent definition.
curl -X POST " https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com/api/v1/agent/agents/code-reviewer/rename " \
-H " Authorization: Bearer <token> " \
-H " Content-Type: application/json " \
-H " X-Hoody-Cwd: /home/user/project " \
-d ' { "new_name": "reviewer" } '
import { HoodyClient } from ' hoody-sdk ' ;
const client = new HoodyClient ({ baseURL : ' https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com ' , token : process . env . HOODY_TOKEN });
await client . agent . agents . renameAgent ( ' code-reviewer ' , { new_name : ' reviewer ' });
" previous_name " : " code-reviewer " ,
" message " : " invalid request "
Error Code Title Description Resolution bad_requestBad request The request was malformed or carried invalid parameters. Correct the request body or query parameters. realm_scope_unsupportedRealm scope unsupported A per-request realm header was supplied to an active-only / global-no-realm RPC, which has no realm dimension to scope. Omit the realm header on this route, or open a session to scope by realm.
" message " : " request must arrive through the Hoody proxy "
Error Code Title Description Resolution forbiddenForbidden (not via the Hoody proxy) Forbidden — the request did not reach the service through the public endpoint. Reach the agent through hoody-proxy (e.g. hoody agent … → platform → proxy), not by connecting to the container directly.
" message " : " resource not found "
Error Code Title Description Resolution not_foundNot found The requested resource does not exist. Verify the path and identifier.
" code " : " payload_too_large " ,
" message " : " request body exceeds the configured size limit "
Error Code Title Description Resolution payload_too_largePayload too large The request body exceeds the configured size cap (MaxBodyBytes). The gateway rejects an oversized body at the edge before the handler reads it. Reduce the request body below the configured limit (default 8 MiB); split a large payload into smaller requests.
" message " : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded; the gateway throttled the request before dispatch. Honor the Retry-After header and retry; reduce the request rate.
" code " : " internal_error " ,
" message " : " internal server error "
Error Code Title Description Resolution internal_errorInternal error An unexpected error occurred while handling the request. Retry; if persistent, inspect the daemon logs.
" code " : " service_unavailable " ,
" message " : " service unavailable "
Error Code Title Description Resolution service_unavailableService unavailable The daemon could not service the request (too busy, or a per-client stream concurrency cap was hit). Honor Retry-After and retry.
Name In Type Required Description namepath string Yes Path identifier. X-Hoody-Cwdheader string No Per-request working-directory scope. X-Hoody-Config-Dirheader string No Per-request --config-dir override. X-Hoody-Containerheader string No Per-request bound remote container. Rejected (400) on routes with no container dimension. X-Hoody-Realmheader string No Per-request realm selector: global or a 24-hex id. Rejected (400 realm_scope_unsupported). realmquery string No Per-request realm selector — the in:query alias of X-Hoody-Realm.
Name Type Required Description new_namestring Yes New agent name.
Restore one agent to its shipped default, discarding local customizations. An agent with no shipped default is refused (is_error: true).
curl -X POST " https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com/api/v1/agent/agents/default/reset-to-shipped " \
-H " Authorization: Bearer <token> " \
-H " X-Hoody-Cwd: /home/user/project "
import { HoodyClient } from ' hoody-sdk ' ;
const client = new HoodyClient ({ baseURL : ' https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com ' , token : process . env . HOODY_TOKEN });
await client . agent . agents . resetAgentToShipped ( ' default ' );
" message " : " sessionless run refused for a non-read-only tool "
Error Code Title Description Resolution bad_requestBad request The request was malformed or carried invalid parameters. Correct the request body or query parameters. tool_mutation_refusedTool mutation refused A sessionless tool run resolved to a mutating tool with no confirmation posture. Sessionless runs are read-only by default. Open a session and run the tool there, or supply allow_mutations:true / confirm:true on the sessionless run. realm_scope_unsupportedRealm scope unsupported A per-request realm header was supplied to an active-only / global-no-realm RPC, which has no realm dimension to scope. Omit the realm header on this route, or open a session to scope by realm.
" message " : " request must arrive through the Hoody proxy "
Error Code Title Description Resolution forbiddenForbidden (not via the Hoody proxy) Forbidden — the request did not reach the service through the public endpoint. Reach the agent through hoody-proxy (e.g. hoody agent … → platform → proxy), not by connecting to the container directly.
" code " : " tool_not_found " ,
" message " : " no tool with that name "
Error Code Title Description Resolution tool_not_foundTool not found No tool with the given name exists in the catalogue or in the session’s effective tool list. List the catalogue (GET /tools) or the session’s tools (GET /sessions/{id}/tools) and use a valid name.
" code " : " payload_too_large " ,
" message " : " request body exceeds the configured size limit "
Error Code Title Description Resolution payload_too_largePayload too large The request body exceeds the configured size cap (MaxBodyBytes). The gateway rejects an oversized body at the edge before the handler reads it. Reduce the request body below the configured limit (default 8 MiB); split a large payload into smaller requests.
" message " : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded; the gateway throttled the request before dispatch. Honor the Retry-After header and retry; reduce the request rate.
" code " : " internal_error " ,
" message " : " internal server error "
Error Code Title Description Resolution internal_errorInternal error An unexpected error occurred while handling the request. Retry; if persistent, inspect the daemon logs.
Name In Type Required Description namepath string Yes Path identifier. X-Hoody-Cwdheader string No Per-request working-directory scope. X-Hoody-Config-Dirheader string No Per-request --config-dir override. X-Hoody-Containerheader string No Per-request bound remote container. Rejected (400) on routes with no container dimension. X-Hoody-Realmheader string No Per-request realm selector: global or a 24-hex id. Rejected (400 realm_scope_unsupported). realmquery string No Per-request realm selector — the in:query alias of X-Hoody-Realm.
Delete one custom chat-agent definition. Shipped-default agents and the configured default chat agent are refused by the daemon guard rails (is_error: true); use PUT /api/v1/agent/agents/{name}/source or POST /api/v1/agent/agents/{name}/reset-to-shipped instead.
curl -X DELETE " https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com/api/v1/agent/agents/code-reviewer-strict " \
-H " Authorization: Bearer <token> " \
-H " X-Hoody-Cwd: /home/user/project "
import { HoodyClient } from ' hoody-sdk ' ;
const client = new HoodyClient ({ baseURL : ' https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com ' , token : process . env . HOODY_TOKEN });
await client . agent . agents . deleteAgent ( ' code-reviewer-strict ' );
" name " : " code-reviewer-strict " ,
" code " : " tool_mutation_refused " ,
" message " : " sessionless run refused for a non-read-only tool "
Error Code Title Description Resolution bad_requestBad request The request was malformed or carried invalid parameters. Correct the request body or query parameters. tool_mutation_refusedTool mutation refused A sessionless tool run resolved to a mutating tool with no confirmation posture. Sessionless runs are read-only by default. Open a session and run the tool there, or supply allow_mutations:true / confirm:true on the sessionless run. realm_scope_unsupportedRealm scope unsupported A per-request realm header was supplied to an active-only / global-no-realm RPC, which has no realm dimension to scope. Omit the realm header on this route, or open a session to scope by realm.
" message " : " request must arrive through the Hoody proxy "
Error Code Title Description Resolution forbiddenForbidden (not via the Hoody proxy) Forbidden — the request did not reach the service through the public endpoint. Reach the agent through hoody-proxy (e.g. hoody agent … → platform → proxy), not by connecting to the container directly.
" code " : " tool_not_found " ,
" message " : " no tool with that name "
Error Code Title Description Resolution tool_not_foundTool not found No tool with the given name exists in the catalogue or in the session’s effective tool list. List the catalogue (GET /tools) or the session’s tools (GET /sessions/{id}/tools) and use a valid name.
" message " : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded; the gateway throttled the request before dispatch. Honor the Retry-After header and retry; reduce the request rate.
" code " : " internal_error " ,
" message " : " internal server error "
Error Code Title Description Resolution internal_errorInternal error An unexpected error occurred while handling the request. Retry; if persistent, inspect the daemon logs.
Name In Type Required Description namepath string Yes Path identifier. X-Hoody-Cwdheader string No Per-request working-directory scope. X-Hoody-Config-Dirheader string No Per-request --config-dir override. X-Hoody-Containerheader string No Per-request bound remote container. Rejected (400) on routes with no container dimension. X-Hoody-Realmheader string No Per-request realm selector: global or a 24-hex id. Rejected (400 realm_scope_unsupported). realmquery string No Per-request realm selector — the in:query alias of X-Hoody-Realm.