Skip to content
Hoody.com

Inspect a session’s background task snapshot, read a task’s transcript, and cancel one or all background tasks. The task endpoints serve from a unified catalog that merges the live in-memory registry with the persisted per-session task store, so completed tasks remain readable after a session goes dormant or the daemon restarts. Cancellation routes require a live session and are handled at the server layer so they work mid-turn.

All routes are active-realm-scoped: a per-request X-Hoody-Realm header (or ?realm= alias) is rejected with realm_scope_unsupported.

Returns the session’s background-subagent task catalog inline. The catalog is the union of the live registry and the persisted per-session task store, keyed by task id with the live entry winning. The live registry evicts completed tasks at spawn time, so a finished task can leave memory while its transcript is still durable. session_live reports whether a live session backed this read.

NameInTypeRequiredDescription
idpathstringYesSession identifier.
X-Hoody-CwdheaderstringNoPer-request working-directory scope: the .hoody project layer / record cwd / tool+workflow cwd. Required by routes that resolve a cwd.
X-Hoody-Config-DirheaderstringNoPer-request --config-dir override selecting which on-disk .hoody install a stateless read/write resolves (HoodyPaths).
X-Hoody-ContainerheaderstringNoPer-request bound remote container (omitted = local). Rejected (400) on routes with no container dimension.
X-Hoody-RealmheaderstringNoPer-request realm selector: global or a 24-hex id (also accepted as ?realm=). Rejected (400 realm_scope_unsupported) on active-only / no-realm routes.
realmquerystringNoPer-request realm selector — the in:query alias of the X-Hoody-Realm header (read only when the header is absent): global or a 24-hex id. Rejected (400 realm_scope_unsupported) on active-only / no-realm routes.
Terminal window
curl -X GET 'https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com/api/v1/agent/sessions/sess_01HZ3M4N5P6Q7R8S9T0V1W2X3Y/tasks' \
-H 'Authorization: Bearer <token>'

GET /api/v1/agent/sessions/{id}/tasks/{tid}/transcript

Section titled “GET /api/v1/agent/sessions/{id}/tasks/{tid}/transcript”

Returns a background subagent task’s transcript inline — entries, the task’s TaskInfo, and the cursor state. A task that reached a terminal state is persisted per session, so its transcript is readable for a dormant session and after a daemon restart. A task still running when the daemon died is not recoverable (persistence happens at terminal status) and reads 404.

source is live when served from the live registry and store when served from the persisted task store. complete reports whether this response reflects a terminal projection durably committed to that store. after_seq is an int64 upsert-poll cursor, exclusive, except that a still-open entry is re-sent even when its seq is at or below the cursor (viewers upsert by seq). Omitting after_seq returns the whole transcript from the beginning, which is distinct from after_seq=0 — that value is exclusive and skips a closed seq-0 entry.

NameInTypeRequiredDescription
idpathstringYesSession identifier.
tidpathstringYesTask identifier.
after_seqqueryintegerNoExclusive int64 upsert-poll cursor: entries with seq strictly greater than it, plus any still-open entry regardless of its seq. Omit for the whole transcript (distinct from 0, which skips a closed seq-0 entry). Negative/non-integer = 400.
X-Hoody-CwdheaderstringNoPer-request working-directory scope: the .hoody project layer / record cwd / tool+workflow cwd. Required by routes that resolve a cwd.
X-Hoody-Config-DirheaderstringNoPer-request --config-dir override selecting which on-disk .hoody install a stateless read/write resolves (HoodyPaths).
X-Hoody-ContainerheaderstringNoPer-request bound remote container (omitted = local). Rejected (400) on routes with no container dimension.
X-Hoody-RealmheaderstringNoPer-request realm selector: global or a 24-hex id (also accepted as ?realm=). Rejected (400 realm_scope_unsupported) on active-only / no-realm routes.
realmquerystringNoPer-request realm selector — the in:query alias of the X-Hoody-Realm header (read only when the header is absent): global or a 24-hex id. Rejected (400 realm_scope_unsupported) on active-only / no-realm routes.
Terminal window
curl -X GET 'https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com/api/v1/agent/sessions/sess_01HZ3M4N5P6Q7R8S9T0V1W2X3Y/tasks/task_01HZ3M4N5P6Q7R8S9T0V1W2X3Z/transcript?after_seq=7' \
-H 'Authorization: Bearer <token>'

POST /api/v1/agent/sessions/{id}/tasks/{tid}/cancel

Section titled “POST /api/v1/agent/sessions/{id}/tasks/{tid}/cancel”

Cancels one background subagent task on a live session (session.task_cancel). Handled at the server layer so it works mid-turn.

NameInTypeRequiredDescription
idpathstringYesSession identifier.
tidpathstringYesTask identifier.
X-Hoody-CwdheaderstringNoPer-request working-directory scope: the .hoody project layer / record cwd / tool+workflow cwd. Required by routes that resolve a cwd.
X-Hoody-Config-DirheaderstringNoPer-request --config-dir override selecting which on-disk .hoody install a stateless read/write resolves (HoodyPaths).
X-Hoody-ContainerheaderstringNoPer-request bound remote container (omitted = local). Rejected (400) on routes with no container dimension.
X-Hoody-RealmheaderstringNoPer-request realm selector: global or a 24-hex id (also accepted as ?realm=). Rejected (400 realm_scope_unsupported) on active-only / no-realm routes.
realmquerystringNoPer-request realm selector — the in:query alias of the X-Hoody-Realm header (read only when the header is absent): global or a 24-hex id. Rejected (400 realm_scope_unsupported) on active-only / no-realm routes.

This endpoint takes no request body.

Terminal window
curl -X POST 'https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com/api/v1/agent/sessions/sess_01HZ3M4N5P6Q7R8S9T0V1W2X3Y/tasks/task_01HZ3M4N5P6Q7R8S9T0V1W2X3Z/cancel' \
-H 'Authorization: Bearer <token>'

POST /api/v1/agent/sessions/{id}/tasks/cancel

Section titled “POST /api/v1/agent/sessions/{id}/tasks/cancel”

Cancels all background subagent tasks on a live session (session.task_cancel with an empty task id cancels all).

NameInTypeRequiredDescription
idpathstringYesSession identifier.
X-Hoody-CwdheaderstringNoPer-request working-directory scope: the .hoody project layer / record cwd / tool+workflow cwd. Required by routes that resolve a cwd.
X-Hoody-Config-DirheaderstringNoPer-request --config-dir override selecting which on-disk .hoody install a stateless read/write resolves (HoodyPaths).
X-Hoody-ContainerheaderstringNoPer-request bound remote container (omitted = local). Rejected (400) on routes with no container dimension.
X-Hoody-RealmheaderstringNoPer-request realm selector: global or a 24-hex id (also accepted as ?realm=). Rejected (400 realm_scope_unsupported) on active-only / no-realm routes.
realmquerystringNoPer-request realm selector — the in:query alias of the X-Hoody-Realm header (read only when the header is absent): global or a 24-hex id. Rejected (400 realm_scope_unsupported) on active-only / no-realm routes.

This endpoint takes no request body.

Terminal window
curl -X POST 'https://{projectId}-{containerId}-agent-1.{server}.containers.hoody.com/api/v1/agent/sessions/sess_01HZ3M4N5P6Q7R8S9T0V1W2X3Y/tasks/cancel' \
-H 'Authorization: Bearer <token>'