The Agent Memory API exposes persistent memory across projects on a container-hosted Hoody agent. It lets you save, read, edit, and delete memory records, browse the project memory relation graph and the list of projects, run hybrid recall (BM25 + vector + graph fusion), toggle capture, flush the durability barrier, and consolidate memory. All routes are active-realm-scoped: passing a X-Hoody-Realm header or ?realm= parameter is rejected with realm_scope_unsupported. The daemon never returns unbounded lists — the page size is capped at 200 and the effective limit is echoed in meta.
Caution
Some routes (memory administration, store durability, and consolidation) require the daemon’s admin gate to be correctly configured. The consolidate route is human-only ; an autonomous caller cannot self-approve it and will always receive 403 human_only.
POST /api/v1/agent/memory/items
Stores a new memory record (memory.save).
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 X-Hoody-Realmheader string No Per-request realm selector realmquery string No in:query alias of X-Hoody-Realm
Field Type Required Description projectstring Yes Project key the memory belongs to contentstring Yes The memory content typestring No Memory type (e.g. workflow, fact)
" id " : " mem_890abcdef12345678901cdef " ,
" content " : " Always rebuild the SDK before publishing. " ,
" created_at " : " 2026-01-12T14:22:09Z "
" 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 Omit the realm header on this route, or open a session to scope by realm
" code " : " admin_unauthorized " ,
" message " : " memory administration requires a valid admin token "
Error Code Title Description Resolution admin_unauthorizedRejected by the daemon’s own admin gate The request was refused by the server’s admin gate Run the daemon with socket auth (--auth-token-path) so its gate allows forwarded requests forbiddenForbidden (not via the Hoody proxy) The request did not reach the service through the public endpoint Reach the agent through hoody-proxy
" 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 (default 8 MiB) Reduce the request body below the configured limit
" message " : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded Honor the Retry-After header and retry
" 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 " : " store_unavailable " ,
" message " : " memory store unavailable "
Error Code Title Description Resolution store_unavailableMemory store unavailable The memory store could not be opened Retry once the store is warm; inspect the daemon logs for the degrade reason
curl -X POST ' https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com/api/v1/agent/memory/items ' \
-H ' Authorization: Bearer <token> ' \
-H ' Content-Type: application/json ' \
"content": "Always rebuild the SDK before publishing.",
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 . memory . saveMemoryItem ({
content : ' Always rebuild the SDK before publishing. ' ,
GET /api/v1/agent/memory/items
Lists memory records for a project (memory.list). The ?type= and ?query= filters apply only to kind=memory; passing them with lesson, slot, or observation is rejected with 400. The daemon pages server-side and caps the page size at 200; an omitted or over-limit ?limit is clamped to 200, not interpreted as “no pagination”.
Name In Type Required Description projectquery string No Project key to scope the listing to kindquery string No Memory kind/store to filter by typequery string No Memory type to filter by (kind=memory only) queryquery string No Free-text filter over the records (kind=memory only) pagequery integer No 1-based page number limitquery integer No Items per page (1..200, clamped to 200) 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 X-Hoody-Realmheader string No Per-request realm selector realmquery string No in:query alias of X-Hoody-Realm
" id " : " mem_890abcdef12345678901cdef " ,
" content " : " Always rebuild the SDK before publishing. " ,
" created_at " : " 2026-01-12T14:22:09Z "
" id " : " mem_890abcdef12345678901abcd0 " ,
" content " : " The publish job runs in region us-east-1. " ,
" created_at " : " 2026-01-11T09:03:11Z "
" 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 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 admin_unauthorizedRejected by the daemon’s own admin gate The request was refused by the server’s admin gate Run the daemon with socket auth (--auth-token-path) so its gate allows forwarded requests forbiddenForbidden (not via the Hoody proxy) The request did not reach the service through the public endpoint Reach the agent through hoody-proxy
" message " : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded Honor the Retry-After header and retry
" 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 " : " store_unavailable " ,
" message " : " memory store unavailable "
Error Code Title Description Resolution store_unavailableMemory store unavailable The memory store could not be opened Retry once the store is warm; inspect the daemon logs for the degrade reason
curl -X GET ' https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com/api/v1/agent/memory/items?project=acme-api&kind=memory&page=1&limit=50 ' \
-H ' Authorization: Bearer <token> '
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 . memory . listMemoryItemsIterator ({
GET /api/v1/agent/memory/items/{id}
Reads one memory record by id (memory.detail). Pass ?project= and ?kind= to disambiguate.
Name In Type Required Description idpath string Yes Path identifier projectquery string No Project key the memory belongs to kindquery string No Memory kind/store the record lives in 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 X-Hoody-Realmheader string No Per-request realm selector realmquery string No in:query alias of X-Hoody-Realm
" id " : " mem_890abcdef12345678901cdef " ,
" content " : " Always rebuild the SDK before publishing. " ,
" created_at " : " 2026-01-12T14:22:09Z " ,
" updated_at " : " 2026-01-12T14:22:09Z "
" 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 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 admin_unauthorizedRejected by the daemon’s own admin gate The request was refused by the server’s admin gate Run the daemon with socket auth (--auth-token-path) so its gate allows forwarded requests forbiddenForbidden (not via the Hoody proxy) The request did not reach the service through the public endpoint Reach the agent through hoody-proxy
" 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 Honor the Retry-After header and retry
" 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 " : " store_unavailable " ,
" message " : " memory store unavailable "
Error Code Title Description Resolution store_unavailableMemory store unavailable The memory store could not be opened Retry once the store is warm; inspect the daemon logs for the degrade reason
curl -X GET ' https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com/api/v1/agent/memory/items/mem_890abcdef12345678901cdef?project=acme-api&kind=memory ' \
-H ' Authorization: Bearer <token> '
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 . memory . getMemoryItem ( ' mem_890abcdef12345678901cdef ' , {
PATCH /api/v1/agent/memory/items/{id}
Patches a memory record by id (memory.edit).
Name In Type Required Description idpath 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 X-Hoody-Realmheader string No Per-request realm selector realmquery string No in:query alias of X-Hoody-Realm
Field Type Required Description projectstring No Project key the memory belongs to kindstring No Memory kind/store the record lives in contentstring No Replacement memory content
" id " : " mem_890abcdef12345678901cdef " ,
" content " : " Always rebuild the SDK and run integration tests before publishing. " ,
" updated_at " : " 2026-01-12T15:02:11Z "
" 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 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 admin_unauthorizedRejected by the daemon’s own admin gate The request was refused by the server’s admin gate Run the daemon with socket auth (--auth-token-path) so its gate allows forwarded requests forbiddenForbidden (not via the Hoody proxy) The request did not reach the service through the public endpoint Reach the agent through hoody-proxy
" 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 (default 8 MiB) Reduce the request body below the configured limit
" message " : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded Honor the Retry-After header and retry
" 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 " : " store_unavailable " ,
" message " : " memory store unavailable "
Error Code Title Description Resolution store_unavailableMemory store unavailable The memory store could not be opened Retry once the store is warm; inspect the daemon logs for the degrade reason
curl -X PATCH ' https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com/api/v1/agent/memory/items/mem_890abcdef12345678901cdef ' \
-H ' Authorization: Bearer <token> ' \
-H ' Content-Type: application/json ' \
"content": "Always rebuild the SDK and run integration tests before publishing."
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 . memory . editMemoryItem ( ' mem_890abcdef12345678901cdef ' , {
content : ' Always rebuild the SDK and run integration tests before publishing. ' ,
DELETE /api/v1/agent/memory/items
Deletes a memory record (memory.delete). This is the cross-project delete; the request body carries the identity.
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 X-Hoody-Realmheader string No Per-request realm selector realmquery string No in:query alias of X-Hoody-Realm
Field Type Required Description idstring Yes Memory record id projectstring No Project key the memory belongs to kindstring No Memory kind/store the record lives in
" id " : " mem_890abcdef12345678901cdef " ,
" 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 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 admin_unauthorizedRejected by the daemon’s own admin gate The request was refused by the server’s admin gate Run the daemon with socket auth (--auth-token-path) so its gate allows forwarded requests forbiddenForbidden (not via the Hoody proxy) The request did not reach the service through the public endpoint Reach the agent through hoody-proxy
" 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 (default 8 MiB) Reduce the request body below the configured limit
" message " : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded Honor the Retry-After header and retry
" 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 " : " store_unavailable " ,
" message " : " memory store unavailable "
Error Code Title Description Resolution store_unavailableMemory store unavailable The memory store could not be opened Retry once the store is warm; inspect the daemon logs for the degrade reason
curl -X DELETE ' https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com/api/v1/agent/memory/items ' \
-H ' Authorization: Bearer <token> ' \
-H ' Content-Type: application/json ' \
"id": "mem_890abcdef12345678901cdef",
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 . memory . deleteMemoryItem ({
id : ' mem_890abcdef12345678901cdef ' ,
GET /api/v1/agent/memory/graph
Returns a paginated page of a project’s memory relation graph (memory.graph): nodes, edges, and stats. Filter with ?project= and ?node_type=; page with ?limit= and ?offset=. The route fails closed with 503 store_unavailable when the memory store is not warm.
Name In Type Required Description projectquery string No Project key whose graph to read node_typequery string No Optional node-type filter limitquery integer No Maximum nodes/edges to return offsetquery integer No Pagination offset into the graph 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 X-Hoody-Realmheader string No Per-request realm selector realmquery string No in:query alias of X-Hoody-Realm
{ " id " : " mem_890abcdef12345678901cdef " , " type " : " workflow " , " label " : " Rebuild SDK " },
{ " id " : " mem_890abcdef12345678901abcd0 " , " type " : " fact " , " label " : " Publish region " }
{ " from " : " mem_890abcdef12345678901cdef " , " to " : " mem_890abcdef12345678901abcd0 " , " relation " : " references " }
" stats " : { " node_count " : 412 , " edge_count " : 1204 },
" 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 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 admin_unauthorizedRejected by the daemon’s own admin gate The request was refused by the server’s admin gate Run the daemon with socket auth (--auth-token-path) so its gate allows forwarded requests forbiddenForbidden (not via the Hoody proxy) The request did not reach the service through the public endpoint Reach the agent through hoody-proxy
" message " : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded Honor the Retry-After header and retry
" 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 " : " store_unavailable " ,
" message " : " memory store unavailable "
Error Code Title Description Resolution store_unavailableMemory store unavailable The memory store could not be opened Retry once the store is warm; inspect the daemon logs for the degrade reason
curl -X GET ' https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com/api/v1/agent/memory/graph?project=acme-api&limit=200&offset=0 ' \
-H ' Authorization: Bearer <token> '
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 . memory . getMemoryGraph ({
GET /api/v1/agent/memory/projects
Lists the memory projects (memory.projects).
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 X-Hoody-Config-Dirheader string No Per-request --config-dir override X-Hoody-Containerheader string No Per-request bound remote container X-Hoody-Realmheader string No Per-request realm selector realmquery string No in:query alias of X-Hoody-Realm
{ " key " : " acme-api " , " memory_count " : 412 , " last_active_at " : " 2026-01-12T14:22:09Z " },
{ " key " : " billing-svc " , " memory_count " : 88 , " last_active_at " : " 2026-01-09T11:00:00Z " }
" 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 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 admin_unauthorizedRejected by the daemon’s own admin gate The request was refused by the server’s admin gate Run the daemon with socket auth (--auth-token-path) so its gate allows forwarded requests forbiddenForbidden (not via the Hoody proxy) The request did not reach the service through the public endpoint Reach the agent through hoody-proxy
" message " : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded Honor the Retry-After header and retry
" 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 " : " store_unavailable " ,
" message " : " memory store unavailable "
Error Code Title Description Resolution store_unavailableMemory store unavailable The memory store could not be opened Retry once the store is warm; inspect the daemon logs for the degrade reason
curl -X GET ' https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com/api/v1/agent/memory/projects?page=1&limit=50 ' \
-H ' Authorization: Bearer <token> '
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 . memory . listMemoryProjectsIterator ({
POST /api/v1/agent/memory/search
Hybrid recall across a project (memory.search): BM25 + vector + graph fusion. The query is privacy-stripped server-side before any tokenize or embed step; the read is no-touch and never strengthens future ranking. The route fails closed with 503 store_unavailable when the memory store is not warm.
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 X-Hoody-Realmheader string No Per-request realm selector realmquery string No in:query alias of X-Hoody-Realm
Field Type Required Description projectstring No Project key to search within querystring No The natural-language recall query (privacy-stripped server-side) limitinteger No Maximum hits to return kindsarray No Optional memory kinds/stores to restrict the search to skip_graphboolean No Skip the graph-fusion component of recall
" id " : " mem_890abcdef12345678901cdef " ,
" fusion " : { " bm25 " : 0.78 , " vector " : 0.94 , " graph " : 0.45 }
" id " : " mem_890abcdef12345678901abcd0 " ,
" fusion " : { " bm25 " : 0.62 , " vector " : 0.71 , " graph " : 0.30 }
" 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 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 admin_unauthorizedRejected by the daemon’s own admin gate The request was refused by the server’s admin gate Run the daemon with socket auth (--auth-token-path) so its gate allows forwarded requests forbiddenForbidden (not via the Hoody proxy) The request did not reach the service through the public endpoint Reach the agent through hoody-proxy
" 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 (default 8 MiB) Reduce the request body below the configured limit
" message " : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded Honor the Retry-After header and retry
" 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 " : " store_unavailable " ,
" message " : " memory store unavailable "
Error Code Title Description Resolution store_unavailableMemory store unavailable The memory store could not be opened Retry once the store is warm; inspect the daemon logs for the degrade reason
curl -X POST ' https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com/api/v1/agent/memory/search ' \
-H ' Authorization: Bearer <token> ' \
-H ' Content-Type: application/json ' \
"query": "how do we publish the SDK safely",
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 . memory . searchMemory ({
query : ' how do we publish the SDK safely ' ,
PUT /api/v1/agent/memory/enabled
Flips the memory privacy switch (memory.set_enabled), persists features.memory, and applies it immediately. Not restricted to admins.
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 X-Hoody-Realmheader string No Per-request realm selector realmquery string No in:query alias of X-Hoody-Realm
Field Type Required Description enabledboolean No Whether memory capture is enabled
" updated_at " : " 2026-01-12T15:30:44Z "
" 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 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) The request did not reach the service through the public endpoint Reach the agent through hoody-proxy
" 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 (default 8 MiB) Reduce the request body below the configured limit
" message " : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded Honor the Retry-After header and retry
" 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 Honor Retry-After and retry
curl -X PUT ' https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com/api/v1/agent/memory/enabled ' \
-H ' Authorization: Bearer <token> ' \
-H ' Content-Type: application/json ' \
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 . memory . setMemoryEnabled ({ enabled : true });
POST /api/v1/agent/memory/flush
Forces the memory store durability barrier (memory.flush). Not restricted to admins.
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 X-Hoody-Realmheader string No Per-request realm selector realmquery string No in:query alias of X-Hoody-Realm
This endpoint accepts a JSON object forwarded to the daemon memory.flush RPC. Reserved _-prefixed keys are ignored; the request scope (cwd / config_dir) is applied automatically. No fields are required.
" barrier_id " : " barrier_890abcdef12345678901cdef " ,
" flushed_at " : " 2026-01-12T15:34:11Z "
" 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 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) The request did not reach the service through the public endpoint Reach the agent through hoody-proxy
" 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 (default 8 MiB) Reduce the request body below the configured limit
" message " : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded Honor the Retry-After header and retry
" 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 Honor Retry-After and retry
curl -X POST ' https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com/api/v1/agent/memory/flush ' \
-H ' Authorization: Bearer <token> ' \
-H ' Content-Type: application/json ' \
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 . memory . flushMemory ({});
POST /api/v1/agent/memory/consolidate
Requests a consolidation pass for a project (memory.consolidate). Human-only : consolidation spends multi-LLM passes and evolves memory state irreversibly, so an autonomous caller may never self-approve it. An HTTP call to this operation always returns 403 human_only — a documented, enforced guarantee. Run consolidation from an interactive human session (TUI / CLI) instead.
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 X-Hoody-Realmheader string No Per-request realm selector realmquery string No in:query alias of X-Hoody-Realm
Field Type Required Description projectstring Yes Project key to consolidate min_observationsinteger No Optional minimum-observations threshold for a fact to be consolidated
" 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 Omit the realm header on this route, or open a session to scope by realm
" message " : " memory consolidation requires direct human confirmation and is not available to machine callers "
Error Code Title Description Resolution admin_unauthorizedRejected by the daemon’s own admin gate The request was refused by the server’s admin gate Run the daemon with socket auth (--auth-token-path) so its gate allows forwarded requests human_onlyHuman confirmation required The operation requires direct human confirmation and is not available to machine callers Trigger the operation from an interactive human session, not an autonomous/machine-confirmed dispatch forbiddenForbidden (not via the Hoody proxy) The request did not reach the service through the public endpoint Reach the agent through hoody-proxy
" 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 (default 8 MiB) Reduce the request body below the configured limit
" message " : " request rate limit exceeded "
Error Code Title Description Resolution rate_limitedToo many requests The per-client request rate limit was exceeded Honor the Retry-After header and retry
" 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 " : " consolidate_unavailable " ,
" message " : " could not enqueue consolidation (queue full or memory disabled) — retry shortly "
Error Code Title Description Resolution service_unavailableService unavailable The daemon could not service the request Honor Retry-After and retry store_unavailableMemory store unavailable The memory store could not be opened Retry once the store is warm; inspect the daemon logs for the degrade reason consolidate_unavailableConsolidation unavailable The consolidation pass could not be enqueued (maintenance queue full or memory disabled) Retry shortly; ensure memory capture is enabled
curl -X POST ' https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com/api/v1/agent/memory/consolidate ' \
-H ' Authorization: Bearer <token> ' \
-H ' Content-Type: application/json ' \
import { HoodyClient } from ' hoody-sdk ' ;
const client = new HoodyClient ({ baseURL : ' https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com ' , token : process . env . HOODY_TOKEN });
// Note: this call returns 403 human_only when dispatched autonomously.
await client . agent . memory . consolidateMemory ({