HTTP route reference
Every HTTP route the gateway registers: 930 registrations over 755 distinct paths — 923 agent-callable (/api/*, non-websocket) and 7 websocket or internal.
This list is generated, not maintained. It is rendered from the route registrations in the source tree — the same census that produces the offline reference shipped inside the package and the live GET /api/manifest — so a route added to the code without a row here reds CI rather than quietly becoming an undocumented surface. The count above is therefore the real count, not an aspiration.
Read the API overview first for the things every route shares: base URL, auth, the error envelope, and the conventions below. This page is the exhaustive index, and nothing else.
How to read a row
Section titled “How to read a row”- Method —
*means the route is registered for every HTTP method (a mount or bridge, not a single verb). - Path —
{name}is a path parameter. Paths are shown in aiohttp’s canonical form, so a segment declared with a regex ({tail:.*}) appears without it. - Summary — the first line of the handler’s own docstring, less any route signature it restates. A handler that serves several methods says what each does in a clause of its own (
GET /x — …; POST /x — …, on its first line or on a line each), and each row shows its own method’s clause. Where a handler says nothing of a row’s method, the cell says so rather than inventing a summary; where the line runs on, it is shown cut off rather than paraphrased. The docstring in the source is the authoritative per-route contract.
Route families
Section titled “Route families”The 128 families the surface divides into, largest first.
| Family | Registrations | Distinct paths |
|---|---|---|
/api/chat | 81 | 69 |
/api/knowledge | 71 | 58 |
/api/memory | 52 | 44 |
/api/workflows | 50 | 45 |
/api/models | 38 | 30 |
/api/loops | 29 | 23 |
/api/artifacts | 26 | 17 |
/api/inbox | 24 | 23 |
/api/apps | 23 | 15 |
/api/mcp | 21 | 16 |
/api/skills | 21 | 17 |
/api/triggers | 21 | 18 |
/api/voice | 17 | 11 |
/api/channels | 16 | 14 |
/api/sessions | 15 | 12 |
/api/projects | 14 | 10 |
/api/agents | 13 | 9 |
/api/dashboard | 13 | 8 |
/api/packs | 13 | 13 |
/api/tasks | 13 | 9 |
/api/providers | 12 | 8 |
/api/durability | 11 | 11 |
/api/notifications | 11 | 8 |
/api/onboarding | 11 | 9 |
/api/prompts | 11 | 7 |
/api/lexicon | 10 | 6 |
/api/model-providers | 10 | 8 |
/api/rooms | 10 | 8 |
/api/auth | 9 | 9 |
/api/browse | 9 | 7 |
/api/doctor | 9 | 9 |
/api/evals | 9 | 9 |
/api/learning | 9 | 7 |
/api/security | 9 | 9 |
/api/agent-marketplace | 8 | 5 |
/api/devices | 7 | 7 |
/api/config | 6 | 3 |
/api/doc-comments | 6 | 3 |
/api/external-access | 6 | 6 |
/api/legibility | 6 | 4 |
/api/prompt-snippets | 6 | 3 |
/api/spawn | 6 | 3 |
/api/task-lists | 6 | 3 |
/api/tools | 6 | 6 |
/api/update | 6 | 5 |
/api/uploads | 6 | 5 |
/api/autonudge | 5 | 3 |
/api/desktop | 5 | 4 |
/api/feedback | 5 | 5 |
/api/push | 5 | 5 |
/api/themes | 5 | 2 |
/api/autonomy | 4 | 4 |
/api/search | 4 | 4 |
/api/usage | 4 | 4 |
/api/agent-metadata | 3 | 1 |
/api/agent-providers | 3 | 3 |
/api/agent-runners | 3 | 3 |
/api/incident | 3 | 2 |
/api/lessons | 3 | 1 |
/api/logs | 3 | 2 |
/api/outbox | 3 | 3 |
/api/proactive | 3 | 3 |
/api/secrets | 3 | 1 |
/api/terminal | 3 | 2 |
/api/agent | 2 | 1 |
/api/agent-hooks | 2 | 2 |
/api/approvals | 2 | 2 |
/api/channel | 2 | 2 |
/api/computer-use | 2 | 2 |
/api/guardrails | 2 | 1 |
/api/heartbeat | 2 | 2 |
/api/session | 2 | 2 |
/api/stt | 2 | 2 |
/api/system | 2 | 2 |
/api/upload | 2 | 2 |
/api/ws | 2 | 2 |
/mcp | 2 | 1 |
/action | 1 | 1 |
/actions | 1 | 1 |
/api/action-providers | 1 | 1 |
/api/attachment-extract | 1 | 1 |
/api/auth-status | 1 | 1 |
/api/browse-dirs | 1 | 1 |
/api/changelog | 1 | 1 |
/api/companion | 1 | 1 |
/api/config-fs | 1 | 1 |
/api/context | 1 | 1 |
/api/create-dir | 1 | 1 |
/api/design | 1 | 1 |
/api/file-complete | 1 | 1 |
/api/file-content-search | 1 | 1 |
/api/file-create | 1 | 1 |
/api/file-delete | 1 | 1 |
/api/file-git-commit | 1 | 1 |
/api/file-git-log | 1 | 1 |
/api/file-git-original | 1 | 1 |
/api/file-git-status | 1 | 1 |
/api/file-list | 1 | 1 |
/api/file-move | 1 | 1 |
/api/file-raw | 1 | 1 |
/api/file-read | 1 | 1 |
/api/file-search | 1 | 1 |
/api/file-upload | 1 | 1 |
/api/file-watch | 1 | 1 |
/api/file-write | 1 | 1 |
/api/genui | 1 | 1 |
/api/healthz | 1 | 1 |
/api/hooks | 1 | 1 |
/api/investigate | 1 | 1 |
/api/logout | 1 | 1 |
/api/manifest | 1 | 1 |
/api/model-provider-types | 1 | 1 |
/api/optimizer | 1 | 1 |
/api/recent-projects | 1 | 1 |
/api/resilience | 1 | 1 |
/api/reveal | 1 | 1 |
/api/sandbox | 1 | 1 |
/api/screenshot | 1 | 1 |
/api/sel | 1 | 1 |
/api/send-message | 1 | 1 |
/api/session-keepalive | 1 | 1 |
/api/session-tool-policy | 1 | 1 |
/api/slash-commands | 1 | 1 |
/api/status | 1 | 1 |
/api/suggestions | 1 | 1 |
/api/surfaces | 1 | 1 |
/api/token | 1 | 1 |
/confirm | 1 | 1 |
Agent-callable routes
Section titled “Agent-callable routes”The 923 routes an agent drives directly. After any mutating call (POST/PUT/PATCH/DELETE), read the entity back to confirm the change took.
| Method | Path | Summary |
|---|---|---|
GET | /api/action-providers | the registered action providers + their |
GET | /api/agent-hooks | the agent CLI’s hooks in effect, and the ones waiting for the owner. |
POST | /api/agent-hooks/allow | the owner’s yes to one waiting agent hook. |
GET | /api/agent-marketplace/agents | list agents from a marketplace. |
POST | /api/agent-marketplace/agents | create a new agent definition. |
DELETE | /api/agent-marketplace/agents/{name} | delete an agent definition. |
GET | /api/agent-marketplace/agents/{name} | get one agent definition. |
PUT | /api/agent-marketplace/agents/{name} | update agent fields (partial). |
POST | /api/agent-marketplace/agents/{name}/activate | (no summary) |
POST | /api/agent-marketplace/agents/{name}/test | (no summary) |
GET | /api/agent-marketplace/marketplaces | list registered marketplaces. |
DELETE | /api/agent-metadata/{name} | delete agent routing metadata. |
GET | /api/agent-metadata/{name} | read agent routing metadata. |
PUT | /api/agent-metadata/{name} | write agent routing metadata. |
GET | /api/agent-providers | the single list of agent runtimes + readiness. |
GET | /api/agent-providers/{id}/agents | the agents a runtime offered at its last Test. |
POST | /api/agent-providers/{id}/test | start one agent CLI once, because you asked. |
GET | /api/agent-runners | the runner catalog, with the health each one was last checked at. |
POST | /api/agent-runners/{id}/allow | the owner’s yes to a runner definition that waits. |
POST | /api/agent-runners/{id}/check | run one runner’s CLI for its version, because you asked. |
GET | /api/agent/config | read or write the installed agent config. |
PUT | /api/agent/config | read or write the installed agent config. |
GET | /api/agents | list all PersonalClaw agent definitions. |
POST | /api/agents | create a new PersonalClaw agent. |
DELETE | /api/agents/detail/{name} | view, delete, or update agent config. |
GET | /api/agents/detail/{name} | view, delete, or update agent config. |
PATCH | /api/agents/detail/{name} | view, delete, or update agent config. |
POST | /api/agents/export | write your agents into Claude Code’s agents folder, once confirmed. |
GET | /api/agents/installed | list installed agent provider names. |
POST | /api/agents/routing/dismiss | {agent} — bump the dismissal counter; the |
GET | /api/agents/routing/status | enabled flag + muted/dismissal state. |
POST | /api/agents/routing/unmute | {agent} — clear an agent’s mute + dismissals. |
POST | /api/agents/sync | fold file-store agents into config.json and report what it did. |
DELETE | /api/agents/{name} | delete a PersonalClaw agent. |
PUT | /api/agents/{name} | update a PersonalClaw agent. |
GET | /api/approvals | list pending tool approvals. |
POST | /api/approvals/{id}/{action} | approve or reject. |
GET | /api/apps | installed apps with manifest summary + runtime state. |
POST | /api/apps | install from {source, consent}. |
GET | /api/apps/catalog | available-to-install apps (Store): bundled-but-not- |
DELETE | /api/apps/local-sources | remove a local app-source dir. |
GET | /api/apps/local-sources | the configured local app-source directories. |
POST | /api/apps/local-sources | add a local app-source dir {path} (a |
GET | /api/apps/message | drain THIS app’s inbox (read-once). |
POST | /api/apps/message | send a typed message {to, type, payload} to |
POST | /api/apps/preview | review {source, name?, listedBy?} before anything is installed. |
DELETE | /api/apps/sources | remove a user git source URL. |
GET | /api/apps/sources | the configured git source URLs (defaults + user). |
POST | /api/apps/sources | add a user git source URL {url}. |
DELETE | /api/apps/{name} | remove an app: no flag deactivates, ?remove=1 keeps data/, ?force=1 wipes. |
GET | /api/apps/{name} | full manifest + status + saved config. |
POST | /api/apps/{name}/agent-run | start a background agent task. |
GET | /api/apps/{name}/agent-run/{run_id} | poll a background agent task. |
GET | /api/apps/{name}/config | an app’s settings, with its credentials masked. |
PUT | /api/apps/{name}/config | save an app’s settings, and apply them to its providers. |
POST | /api/apps/{name}/disable | (no summary) |
POST | /api/apps/{name}/enable | (no summary) |
POST | /api/apps/{name}/token | the app-scoped identity token this app should use. |
GET | /api/apps/{name}/uninstall-preview | classify shared deps and report what the app’s data/ holds. |
POST | /api/apps/{name}/update | atomic update from {source, consent?}. |
GET | /api/artifacts | metadata-only rows; q searches metadata and body. |
POST | /api/artifacts | create (or bump an existing file-backed artifact). |
GET | /api/artifacts/deployed | the deployed-app listing (slug + in-gateway URL). |
GET | /api/artifacts/folders | the library folder tree (flat, parent_id-linked). |
POST | /api/artifacts/folders | create a folder ({name, parent_id?, icon?}). |
DELETE | /api/artifacts/folders/{id} | members fall back to unfiled; nothing is destroyed. |
PATCH | /api/artifacts/folders/{id} | rename / re-nest / reorder. No artifact is touched. |
GET | /api/artifacts/pinned | the dashboard pin list. |
DELETE | /api/artifacts/{slug} | (no summary) |
GET | /api/artifacts/{slug} | full content (live-pointer read for file-backed). |
PATCH | /api/artifacts/{slug} | save (silent) or snapshot; or metadata-only. |
POST | /api/artifacts/{slug}/changed | another PersonalClaw process wrote this artifact. |
DELETE | /api/artifacts/{slug}/deploy | tear the deployment down. |
POST | /api/artifacts/{slug}/deploy | publish the artifact at a serve URL of its own. |
GET | /api/artifacts/{slug}/events | activity timeline (drops dashboard:ui). |
POST | /api/artifacts/{slug}/events | record a ‘referenced’ impression. |
GET | /api/artifacts/{slug}/extract | extracted text for a binary document artifact. |
PATCH | /api/artifacts/{slug}/folder | file an artifact ({folder_id}; "" = unfiled). |
GET | /api/artifacts/{slug}/model | the parsed document model + its loss report. |
PUT | /api/artifacts/{slug}/model | re-render a posted model into the artifact. |
POST | /api/artifacts/{slug}/pin | pin or unpin ({"pinned": bool}). |
GET | /api/artifacts/{slug}/raw | stream a binary artifact’s bytes. |
PUT | /api/artifacts/{slug}/raw | replace a binary artifact’s bytes. |
POST | /api/artifacts/{slug}/regenerate | re-run image generation at this slug. |
GET | /api/artifacts/{slug}/versions | (no summary) |
GET | /api/artifacts/{slug}/versions/{version} | immutable historical content. |
GET | /api/attachment-extract | the extracted text content for an |
GET | /api/auth-status | Auth configuration status — mode, bind_host, and session validity. |
POST | /api/auth/confirm | sign this device in again with the password, to show it is you. |
POST | /api/auth/enroll/complete | redeem a code for a device session. |
POST | /api/auth/enroll/start | mint a single-use device enrollment code. |
POST | /api/auth/login | verify the owner credential and mint a session cookie. |
POST | /api/auth/logout | clear the cookie AND revoke the session behind it. |
POST | /api/auth/password | set the owner’s sign-in password, or change it. |
POST | /api/auth/rotate-key | replace the key every sign-in is signed with. |
GET | /api/auth/session | the authenticated account view (Settings → Account). |
GET | /api/auth/status | what the login UI needs to render itself. |
GET | /api/autonomy | every governed action type, its rung, and what it has earned. |
POST | /api/autonomy/demote | hand a type’s autonomy back. Body {key}. |
POST | /api/autonomy/grant | the promotion click. Body {key, rung}. |
POST | /api/autonomy/undo | reverse one automatic action. Body {id}. |
GET | /api/autonudge | list all active loops. |
POST | /api/autonudge | start or replace a loop on a session. |
GET | /api/autonudge/session/{session_name} | loop bound to this session (or null). |
DELETE | /api/autonudge/{loop_id} | stop and remove a loop. |
PATCH | /api/autonudge/{loop_id} | update message / idle_secs / active. |
GET | /api/browse-dirs | list subdirectories for directory browser. |
DELETE | /api/browse/connector | detach the operator’s browser. Idempotent. |
GET | /api/browse/connector | whether a browser is attached right now. |
POST | /api/browse/connector | record the operator’s attached browser. |
GET | /api/browse/connector/tabs | the runs that asked this browser for a tab of their own. |
POST | /api/browse/connector/tabs/{request_id} | announce or report one run’s tab. |
POST | /api/browse/grants/{request_id}/{action} | answer one pending per-task browse grant. |
POST | /api/browse/kill | stop unattended browsing. Body: {reason?: str}. |
POST | /api/browse/kill/release | re-enable unattended browsing. |
GET | /api/browse/status | the mirror’s read model: kill state, expired sites, pending grants. |
GET | /api/changelog | read full CHANGELOG.md from project. |
POST | /api/channel/profile | read the owner’s profile on the channel whose owner id it is. |
POST | /api/channel/upload-file | upload a file to the active channel (internal, called by notify_attachment). |
GET | /api/channels | all comms transports with info + health. |
GET | /api/channels/reply-targets | list channels the bot can reply in. |
GET | /api/channels/trust | the whole sender-trust posture, per chat channel. |
POST | /api/channels/trust/{provider}/channels | track one group. |
DELETE | /api/channels/trust/{provider}/channels/{channel_id} | stop tracking one group. |
DELETE | /api/channels/trust/{provider}/pairing | cancel the outstanding sender code. |
POST | /api/channels/trust/{provider}/pairing | mint a sender’s code and return it once. |
PUT | /api/channels/trust/{provider}/policies | set the DM and/or group policy. |
DELETE | /api/channels/trust/{provider}/senders/{sender_id} | revoke one sender. |
GET | /api/channels/{name} | one transport’s info + health. |
POST | /api/channels/{name}/connect | bring the transport online. |
POST | /api/channels/{name}/disconnect | take the transport offline. |
GET | /api/channels/{name}/owner | the channel’s owner and its pairing state. |
DELETE | /api/channels/{name}/owner/pairing | cancel the outstanding owner code. |
POST | /api/channels/{name}/owner/pairing | mint the owner’s code and return it once. |
POST | /api/channels/{name}/test | active probe (e.g. Slack auth.test). |
POST | /api/chat | send message to a session, stream response via SSE. |
GET | /api/chat/folders | list all project folders. |
POST | /api/chat/folders | create a project folder. |
DELETE | /api/chat/folders/{id} | delete a folder, ungroup its sessions. |
PATCH | /api/chat/folders/{id} | rename or reorder a folder. |
GET | /api/chat/image-input | whether an attached image reaches the model as one. |
POST | /api/chat/mode | set the tool APPROVAL mode (whether tools auto-approve). |
POST | /api/chat/nav/resolve-links | batch-summarize bare links. |
GET | /api/chat/screen-frame | can this session share its screen? |
POST | /api/chat/screen-frame | stage one screen frame for the next chat turn. |
POST | /api/chat/screen-frame/pin | promote one frame to an ordinary attachment. |
GET | /api/chat/sessions | list all chat sessions. |
POST | /api/chat/sessions | create a new chat session. |
POST | /api/chat/sessions/auto-archive | run (or preview) the auto-archive rule. |
GET | /api/chat/sessions/bound-project | the CALLING session’s bound Project id. |
POST | /api/chat/sessions/bulk | apply one op to many sessions. |
POST | /api/chat/sessions/cleanup | bulk-archive inactive sessions to history. |
GET | /api/chat/sessions/model-reach | what the CALLING session keeps, and who asked. |
GET | /api/chat/sessions/templates | every saved session starter. |
POST | /api/chat/sessions/templates | save a chat setup as a reusable starter. |
DELETE | /api/chat/sessions/templates/{template} | remove a starter. |
PUT | /api/chat/sessions/templates/{template} | replace a starter’s fields. |
DELETE | /api/chat/sessions/{session} | delete a chat for good: the Delete button. |
GET | /api/chat/sessions/{session} | message history for a session. |
POST | /api/chat/sessions/{session}/acp-agent | bind a DISCOVERED ACP agent. |
POST | /api/chat/sessions/{session}/agent | set agent for a chat session. |
POST | /api/chat/sessions/{session}/approve | resolve a pending tool approval. |
POST | /api/chat/sessions/{session}/channel-link | link a dashboard session to a channel. |
PATCH | /api/chat/sessions/{session}/color | set session color. |
POST | /api/chat/sessions/{session}/context | inject silent background context. |
POST | /api/chat/sessions/{session}/drop | move a session into a column. |
POST | /api/chat/sessions/{session}/edit-resend | edit a user message and resend. |
GET | /api/chat/sessions/{session}/export | download a transcript. |
PATCH | /api/chat/sessions/{session}/folder | assign session to a folder. |
POST | /api/chat/sessions/{session}/fork | fork session into a new tab. |
POST | /api/chat/sessions/{session}/fork-rewound | restore a rewind tail as a fork. |
POST | /api/chat/sessions/{session}/generate-title | manually trigger title generation. |
POST | /api/chat/sessions/{session}/handoff | continue a chat in a channel thread. |
POST | /api/chat/sessions/{session}/interrupt | stop the turn, KEEP the queue. |
PATCH | /api/chat/sessions/{session}/lifecycle | archive/restore one session. |
GET | /api/chat/sessions/{session}/map | the durable session-map marks. |
POST | /api/chat/sessions/{session}/model | set model for a chat session. |
PATCH | /api/chat/sessions/{session}/natural-voice | set the per-conversation scope. |
GET | /api/chat/sessions/{session}/organize | the chat’s proposal now, without waiting. |
POST | /api/chat/sessions/{session}/organize/accept | apply the proposal. |
POST | /api/chat/sessions/{session}/organize/decline | remember the refusal. |
PATCH | /api/chat/sessions/{session}/pin | toggle pinned state. |
GET | /api/chat/sessions/{session}/plan-session | the walkthrough state. |
POST | /api/chat/sessions/{session}/plan/activate | open the plan walkthrough. |
POST | /api/chat/sessions/{session}/plan/approve | {step_id} — approve a step. |
POST | /api/chat/sessions/{session}/plan/cancel | abandon the walkthrough. |
POST | /api/chat/sessions/{session}/plan/comment | {step_id, text} — comment + redraft. |
POST | /api/chat/sessions/{session}/plan/edit | {step_id, markdown} — edit the plan. |
POST | /api/chat/sessions/{session}/questions/{question}/answer | answer an agent’s question. |
DELETE | /api/chat/sessions/{session}/queue/{queue_id} | cancel a queued message. |
POST | /api/chat/sessions/{session}/reasoning-effort | set reasoning effort. |
POST | /api/chat/sessions/{session}/regenerate | regenerate the last assistant reply. |
POST | /api/chat/sessions/{session}/resume | load a history session into a session. |
GET | /api/chat/sessions/{session}/rewind | what a rewind would do. Read-only. |
POST | /api/chat/sessions/{session}/rewind | restore files to the end of turn N. |
POST | /api/chat/sessions/{session}/share | a redacted, read-only artifact of a chat. |
POST | /api/chat/sessions/{session}/side/close | drop the buffer + destroy |
POST | /api/chat/sessions/{session}/side/open | open (or reset) the side buffer. |
POST | /api/chat/sessions/{session}/side/turn | ask one side question. |
POST | /api/chat/sessions/{session}/stop | cooperative stop with kill fallback. |
POST | /api/chat/sessions/{session}/switch-variant | switch which regenerated variant is active. |
PUT | /api/chat/sessions/{session}/tags | add tags to a session and remove tags from it. |
PATCH | /api/chat/sessions/{session}/title | rename a chat session. |
GET | /api/chat/sessions/{session}/tool-result/{rid} | the FULL raw output of |
POST | /api/chat/sessions/{session}/undo | roll back the last N conversation turns. |
POST | /api/chat/sessions/{session}/workspace-dir | set the working directory. |
GET | /api/chat/tag-columns | list sidebar column layout. |
POST | /api/chat/tag-columns | append a new sidebar column. |
PUT | /api/chat/tag-columns/order | reorder columns by id list. |
DELETE | /api/chat/tag-columns/{id} | remove a column. |
PATCH | /api/chat/tag-columns/{id} | rename / retag / reorder. |
GET | /api/chat/tags | list all tag definitions. |
POST | /api/chat/tags | create a new tag. |
DELETE | /api/chat/tags/{id} | delete a tag; strip it from all sessions. |
PATCH | /api/chat/tags/{id} | rename / recolor / reorder. |
POST | /api/chat/task-mode | set the per-session TASK mode. |
GET | /api/companion/discovery | the live state of the LAN advertiser. |
POST | /api/computer-use/dispatch | run one computer-use tool through the chain. |
GET | /api/computer-use/live-view | the human-facing live view + overlay data. |
GET | /api/config-fs/stream | SSE feed of out-of-band config-tree changes. |
GET | /api/config/default-agent | read or set the default agent. |
PUT | /api/config/default-agent | read or set the default agent. |
GET | /api/config/personalclaw | read or update PersonalClaw config. |
PATCH | /api/config/personalclaw | update a single config field. |
PUT | /api/config/personalclaw | read or update PersonalClaw config. |
GET | /api/config/schema | return config schema entries. |
GET | /api/context | the routed-context manifest. |
POST | /api/create-dir | create a new directory. |
GET | /api/dashboard/config | read or write dashboard settings. |
PUT | /api/dashboard/config | read or write dashboard settings. |
GET | /api/dashboard/views | every view (locked presets first, then user views). |
POST | /api/dashboard/views | {name, icon?} — create a user view (presets are code-only). |
DELETE | /api/dashboard/views/{view_id} | read, edit, or delete a view. |
GET | /api/dashboard/views/{view_id} | read, edit, or delete a view. |
PUT | /api/dashboard/views/{view_id} | read, edit, or delete a view. |
POST | /api/dashboard/views/{view_id}/tiles | {slug, size?} — pin an artifact tile. |
POST | /api/dashboard/views/{view_id}/tiles/action | {ref, action, payload?} — a genui control re-firing this tile. |
PUT | /api/dashboard/views/{view_id}/tiles/binding | {ref, mode, ttl_secs?, skeleton?, data?} |
GET | /api/dashboard/views/{view_id}/tiles/refresh | the tile’s newest ledger row. |
POST | /api/dashboard/views/{view_id}/tiles/refresh | {ref, force?} — run one chatless refresh. |
POST | /api/dashboard/views/{view_id}/tiles/resolve | {ref, keep} — accept/dismiss/unpin. |
GET | /api/design/tokens/default | PersonalClaw’s canonical |
GET | /api/desktop/capabilities/{cap} | one capability, gateway-mediated. |
POST | /api/desktop/register | the shell announces itself, gets a session token. |
GET | /api/desktop/state | what the desktop shell can actually do, right now. |
POST | /api/desktop/state | the shell pushes a refreshed capability manifest. |
POST | /api/desktop/unregister | the shell is quitting; forget its capabilities. |
GET | /api/devices | every device and token signed in to this gateway. |
GET | /api/devices/integrations | every integration token that can reach this gateway. |
POST | /api/devices/integrations/{id}/revoke | revoke one integration’s token. |
POST | /api/devices/pair/complete | redeem a code for a durable device session. |
POST | /api/devices/pair/start | mint a single-use pairing code + QR payload. |
POST | /api/devices/revoke-others | sign out every device and token but the caller’s own. |
POST | /api/devices/{id}/revoke | sign one device or token out. |
DELETE | /api/doc-comments | empty the deck. |
GET | /api/doc-comments | the whole cross-document deck, oldest first. |
POST | /api/doc-comments | append one comment. |
POST | /api/doc-comments/delete | drop several by id. |
DELETE | /api/doc-comments/{comment_id} | drop one comment. |
PATCH | /api/doc-comments/{comment_id} | edit one comment’s body. |
GET | /api/doctor | all probes, grouped by capability, cached 30s. |
GET | /api/doctor/crash/{filename} | the full JSON of one crash artifact. |
POST | /api/doctor/fix/{fix_id} | apply a confirm-gated fix. |
GET | /api/doctor/fixes | the fix catalog with read-only dry-previews. |
GET | /api/doctor/remediation | current health score, a dry-run plan preview, and |
POST | /api/doctor/remediation/run | run the engine now (confirm-gated). SEL-audited. |
POST | /api/doctor/simulate/automation | {trigger_id} — what this automation WOULD do. |
POST | /api/doctor/simulate/surfacing | {text} — dry-run the skill scorer in |
GET | /api/doctor/{capability} | re-run one capability’s probes (uncached). |
GET | /api/durability/archive | the archive browser’s list. |
POST | /api/durability/archive/{id}/restore | {mode?, components?, confirm?}. |
GET | /api/durability/conflicts | the review queue. |
POST | /api/durability/conflicts/{id}/resolve | {choice, confirm} — apply one decision. |
POST | /api/durability/export | {domains?} — the DSAR export. |
GET | /api/durability/history | per-root repo status for the Time Travel panel. |
GET | /api/durability/history/{root}/timeline | the timeline. |
POST | /api/durability/history/{root}/{op} | {sha, paths?, confirm?, expected_head?, |
POST | /api/durability/import | validate, then apply, an export zip. |
POST | /api/durability/run | {job} — run one backup job now, recorded as a scheduled run is. |
GET | /api/durability/status | schedule state + what’s due, and what each job’s last run did. |
GET | /api/evals/ablation | the newest keep/remove/lighten report. |
GET | /api/evals/field-metrics | Loop-3 field metrics beside lab results. |
GET | /api/evals/judge-bench | the newest tier-recommendation table. |
GET | /api/evals/learning-benchmark | the newest skill-impact benchmark report. |
GET | /api/evals/retrieval | the newest per-arm P@k/R@k table for BOTH stores. |
GET | /api/evals/retrieval/card | the hand-labeling card. |
POST | /api/evals/retrieval/labels | save a completed hand-label card. |
GET | /api/evals/studies | one compact row per pre-registered study. |
GET | /api/evals/studies/{study_id} | one study’s verdict, agreement and per-run rows. |
GET | /api/external-access | the whole operator view of the inbound seam. |
POST | /api/external-access/bridge/confirmations/{id} | your answer to a control-bridge action. |
POST | /api/external-access/clients | create. |
DELETE | /api/external-access/clients/{client_id} | revoke. |
POST | /api/external-access/clients/{client_id}/disabled | kill-switch layer (c). |
POST | /api/external-access/clients/{client_id}/persistent-sessions | keep its conversation. |
POST | /api/feedback | record one verdict. |
GET | /api/feedback/producers | per-producer accuracy. |
POST | /api/feedback/producers/clear | un-suppress after an artifact edit. |
POST | /api/feedback/producers/snooze | 30-day snooze for one producer. |
GET | /api/feedback/target/{kind}/{id} | the current verdict for hydration. |
GET | /api/file-complete | path autocomplete for the PathBar. |
GET | /api/file-content-search | recursive content search. |
POST | /api/file-create | create a new file or directory in the explorer. |
POST | /api/file-delete | delete a file or (recursively) a directory. |
GET | /api/file-git-commit | one commit’s diff. |
GET | /api/file-git-log | recent commits for a repo. |
GET | /api/file-git-original | the committed (HEAD) contents of a |
GET | /api/file-git-status | git branch + per-file status. |
GET | /api/file-list | list a directory for the file explorer. |
POST | /api/file-move | rename or relocate a file/dir within the allowlist. |
GET | /api/file-raw | serve a file with its native content type (images, etc.). |
GET | /api/file-read | read file content for the markdown panel. |
GET | /api/file-search | fuzzy filename search for the @-mention file picker. |
POST | /api/file-upload | upload file(s) into an allowed directory. |
GET | /api/file-watch | SSE stream of file content changes. |
POST | /api/file-write | write file content from the markdown panel. |
GET | /api/genui/library | the generative-UI component catalog + the mechanically |
GET | /api/guardrails/project-trust | the whole store |
POST | /api/guardrails/project-trust | record a Trust/Preview decision. |
GET | /api/healthz | Liveness probe — auth-exempt, returns 200 once gateway is serving HTTP. |
GET | /api/heartbeat/tasks | every task in HEARTBEAT.md, and whether the owner allowed it. |
POST | /api/heartbeat/tasks/allow | the owner’s yes to one queued task. |
POST | /api/hooks/agent | run an agent turn for an outside program’s call. |
GET | /api/inbox | list all inbox items (recency, optionally engagement-weighted). |
POST | /api/inbox/digest | on-demand channel digest. |
POST | /api/inbox/dismiss-all | dismiss every OPEN item (pending or seen). |
GET | /api/inbox/kinds | item kinds present, with open counts, for the filter chips. |
POST | /api/inbox/notes | the USER writes their own inbox item. |
GET | /api/inbox/open | every row still wanting the user (PENDING or SEEN). |
GET | /api/inbox/owners | owners present in the store, with counts, for the filter chips. |
POST | /api/inbox/proposals | an APP raises a proposal. |
GET | /api/inbox/providers | every message source the inbox knows, and whether it polls it. |
POST | /api/inbox/restart | stop and reinitialize the inbox service. |
POST | /api/inbox/seen | mark items SEEN (the read/unread boundary). |
POST | /api/inbox/send | send a reply to an inbox item. |
GET | /api/inbox/settings | (no summary) |
PUT | /api/inbox/settings | (no summary) |
GET | /api/inbox/status | current config status. |
PUT | /api/inbox/{id} | update draft, status, etc. |
POST | /api/inbox/{id}/apply | approve (or edit-then-approve) one proposal. |
GET | /api/inbox/{id}/attachments/{aid} | download one of a message’s attachments. |
POST | /api/inbox/{id}/draft | generate draft reply on demand. |
POST | /api/inbox/{id}/favorite | {favorited: bool} — set the favorite flag + record a |
POST | /api/inbox/{id}/open | record that the user opened/read this item (a moderate |
POST | /api/inbox/{id}/pair | let someone new talk to your agent on the channel they wrote on. |
POST | /api/inbox/{id}/restore | undo a verification filter. |
POST | /api/inbox/{id}/sort | sort a message again, after its sorting failed. |
GET | /api/incident | current state. |
POST | /api/incident | activate. |
POST | /api/incident/resume | turn incident mode OFF. |
POST | /api/investigate | (no summary) |
DELETE | /api/knowledge/annotations/{id} | drop one highlight. |
POST | /api/knowledge/bulk | apply one curation op to many items. |
GET | /api/knowledge/collections | every shelf in rail order. |
POST | /api/knowledge/collections | create a manual or smart shelf. |
DELETE | /api/knowledge/collections/{id} | remove the shelf, keep the items. |
PATCH | /api/knowledge/collections/{id} | rename / re-icon / re-query / reorder. |
GET | /api/knowledge/collections/{id}/items | resolve the shelf. |
POST | /api/knowledge/collections/{id}/items | shelve one or many items. |
DELETE | /api/knowledge/collections/{id}/items/{item_id} | unshelve one item. |
GET | /api/knowledge/conflicts | every recorded disagreement in the store. |
GET | /api/knowledge/decisions | the journal view and the calibration strip. |
GET | /api/knowledge/embedding/status | - embedding config and progress. |
GET | /api/knowledge/entities | (no summary) |
GET | /api/knowledge/entities/by-name/{name}/items | - items that MENTION the entity. |
GET | /api/knowledge/entities/by-name/{name}/related | - entities directly connected |
GET | /api/knowledge/entities/{id}/graph | - D3-compatible subgraph. |
GET | /api/knowledge/graph | - the whole entity graph, positioned and edge-thinned. |
POST | /api/knowledge/ingest | - multipart file upload. Each file becomes ONE |
GET | /api/knowledge/intents | - natural-language intents (Tier 3) + outcome counts. |
POST | /api/knowledge/intents | - create or update an intent. |
DELETE | /api/knowledge/intents/{id} | - removes the intent and its outcomes. |
POST | /api/knowledge/intents/{id}/generate-skill | - synthesize a reusable skill |
GET | /api/knowledge/intents/{id}/outcomes | - everything this intent has gathered, |
POST | /api/knowledge/intents/{id}/run | - retroactively run an intent against all |
GET | /api/knowledge/items | - list/search with pagination. |
POST | /api/knowledge/items | - author a typed item directly (note/gist/ |
DELETE | /api/knowledge/items/{id} | (no summary) |
GET | /api/knowledge/items/{id} | - single item with its entities + relations. |
PATCH | /api/knowledge/items/{id} | - update fields. |
GET | /api/knowledge/items/{id}/annotations | the item’s reading highlights. |
POST | /api/knowledge/items/{id}/annotations | keep a highlighted passage. |
GET | /api/knowledge/items/{id}/content | - plain text for clipboard. |
GET | /api/knowledge/items/{id}/duplicates | near-duplicates, best match first. |
GET | /api/knowledge/items/{id}/extracted | - the per-item extracted-content |
POST | /api/knowledge/items/{id}/favorite | star or unstar. |
GET | /api/knowledge/items/{id}/file | - serve a media item’s original bytes. |
POST | /api/knowledge/items/{id}/generate-intelligence | - (re)run the FULL |
GET | /api/knowledge/items/{id}/graph | - the ingestion node-graph SHAPE for this |
GET | /api/knowledge/items/{id}/ingest/stream | - per-item node-graph ingestion |
GET | /api/knowledge/items/{id}/intents | - the intents this item contributed to |
POST | /api/knowledge/items/{id}/merge | fold another item into this one. |
POST | /api/knowledge/items/{id}/read-state | unread | reading | read. |
POST | /api/knowledge/items/{id}/regenerate | the one action the staleness banner offers. |
GET | /api/knowledge/items/{id}/related | - nearest neighbours by embedding similarity. |
GET | /api/knowledge/items/{id}/relations | the typed edges into and out of one item. |
POST | /api/knowledge/items/{id}/restructure/{verb} | preview, then apply, a restructure. |
GET | /api/knowledge/items/{id}/sections | the section boundaries a split may cut on. |
GET | /api/knowledge/items/{id}/staleness | has the corpus moved under this synthesis? |
GET | /api/knowledge/items/{id}/thumbnail | - serve a generated thumbnail (image/webp). |
GET | /api/knowledge/library-home | the four shelves of the library landing surface. |
GET | /api/knowledge/providers | (no summary) |
POST | /api/knowledge/regenerate-intelligence | - re-run the full ingestion |
GET | /api/knowledge/reports | every definition, newest state as persisted. |
POST | /api/knowledge/reports | create one definition. |
DELETE | /api/knowledge/reports/{id} | remove one definition. |
PUT | /api/knowledge/reports/{id} | update one definition. |
POST | /api/knowledge/reports/{id}/run | run one report NOW, by hand. |
GET | /api/knowledge/restructure/undo | restructures that are still reversible. |
POST | /api/knowledge/restructure/undo | reverse one applied restructure. |
GET | /api/knowledge/search-for-context | (no summary) |
GET | /api/knowledge/source-recipes | - the bundled source-recipe directory. |
GET | /api/knowledge/sources | the watched sources, with health, plus the kind catalog. |
POST | /api/knowledge/sources | save a source, after its provider validates the spec. |
POST | /api/knowledge/sources/preview | the dry run for the paste-URL create flow. |
PATCH | /api/knowledge/sources/{id} | apply a remediation, rename, or pause a source. |
GET | /api/knowledge/stats | (no summary) |
GET | /api/knowledge/tag-tree | every tag with its parent and live usage count. |
GET | /api/knowledge/tags | - distinct tags (frequency-ordered) for autocomplete. |
DELETE | /api/knowledge/tags/{id} | remove a tag from the taxonomy and every item. |
PATCH | /api/knowledge/tags/{id} | rename, or re-parent via parent_id. |
POST | /api/knowledge/tags/{id}/merge | {into} — fold this tag into another. |
GET | /api/learning/health | the flywheel observability panel. |
GET | /api/learning/identity-report | the deterministic report, no model call. |
POST | /api/learning/identity-report | compose, narrate, persist, surface. |
GET | /api/learning/proposals | the inbox across all six kinds. |
DELETE | /api/learning/proposals/{id} | dismiss it, and REMEMBER the decision. |
GET | /api/learning/proposals/{id} | one full record. |
POST | /api/learning/proposals/{id}/accept | install it. |
GET | /api/learning/staging/week | the week-at-a-glance capture panel. |
GET | /api/learning/summary | the learning summary block. |
GET | /api/legibility/always-on | what every session receives, with provenance. |
GET | /api/legibility/always-on/doc | one body, verbatim, for the editor. |
PUT | /api/legibility/always-on/doc | replace an editable project instruction. |
GET | /api/legibility/discover | the curated Discover tips still worth showing. |
DELETE | /api/legibility/discover/dismiss | undo every Discover dismissal. |
POST | /api/legibility/discover/dismiss | hide a Discover tip forever. |
DELETE | /api/lessons | remove lessons by substring. |
GET | /api/lessons | (no summary) |
POST | /api/lessons | add a lesson to memory.db lesson.*. |
GET | /api/lexicon/corrections | list learned corrections (most-corrected first). |
POST | /api/lexicon/corrections | {heard, meant, always?} — record a learned fix. |
DELETE | /api/lexicon/corrections/{id} | forget one learned correction. |
PATCH | /api/lexicon/corrections/{id} | {auto_apply} — toggle ‘always fix this’. |
POST | /api/lexicon/rebuild | resync graph-sourced terms from knowledge entities now |
POST | /api/lexicon/reset | drop all terms + corrections (the next sync repopulates the |
GET | /api/lexicon/terms | list vocabulary terms, the graph’s current. |
POST | /api/lexicon/terms | {canonical, aliases?} — add a manual term. |
DELETE | /api/lexicon/terms/{id} | remove a term you added, or one learned from a fix. |
PATCH | /api/lexicon/terms/{id} | {enabled?} — enable/disable (prune) a term. |
POST | /api/logout | sign every dashboard session out, everywhere. |
GET | /api/logs | SSE stream of live log entries. |
GET | /api/logs/level | current backend logger level. |
POST | /api/logs/level | change the backend logger level at runtime. |
GET | /api/loops | EVERY loop (redacted), newest first. |
POST | /api/loops | {kind, task|goal, …} — create a READY loop, or START a run for a ported kind. |
POST | /api/loops/classify | {kind, task|goal} — the kind-aware intake analyze |
POST | /api/loops/validate | deterministic pre-flight on a create payload |
DELETE | /api/loops/{id} | (no summary) |
GET | /api/loops/{id} | (no summary) |
PATCH | /api/loops/{id} | {action: start|pause|resume|stop}. |
PUT | /api/loops/{id} | edit a pre-launch spec, or a name-only rename in any |
PUT | /api/loops/{id}/agent-cli-self-approval | {allowed: bool} — its CLI approves its calls. |
POST | /api/loops/{id}/autopilot | {on: bool} — toggle the execution drive live. |
GET | /api/loops/{id}/conflict | the finished task’s work that conflicts with your branch. |
POST | /api/loops/{id}/conflict | {choice, task_id, tip, confirm: true} — redo or drop that work. |
GET | /api/loops/{id}/design/tokens | the RESOLVED token tree |
POST | /api/loops/{id}/grill-tree | guided-decomposition intake (grill’s tree |
GET | /api/loops/{id}/kept-work | the task work an ended run kept because it was not merged. |
DELETE | /api/loops/{id}/kept-work/{task_id} | discard one task’s kept work. |
POST | /api/loops/{id}/kept-work/{task_id}/merge | {tip, confirm} — merge a task’s kept work. |
GET | /api/loops/{id}/merge | the finished work an Attended loop waits for you to merge. |
POST | /api/loops/{id}/merge | {tips, confirm: true} — approve merging the work you reviewed. |
POST | /api/loops/{id}/nudge | {text, task_id?} — steer; resume if awaiting input. |
GET | /api/loops/{id}/plan-session | the stepwise planning walkthrough state. |
POST | /api/loops/{id}/plan/approve | {step_id} — approve a step + advance. |
POST | /api/loops/{id}/plan/comment | {step_id, text} — comment + re-draft. |
POST | /api/loops/{id}/plan/edit | {step_id, markdown} — the user directly edits a |
POST | /api/loops/{id}/plan/retry | clear a recorded design failure + re-run the |
POST | /api/loops/{id}/plan/start | begin (or resume) the walkthrough. |
POST | /api/loops/{id}/queue | {task_ids, action: queue|unqueue} — queue tasks for |
GET | /api/loops/{id}/report | the document deliverable + working log. report |
GET | /api/loops/{id}/stream | per-loop live SSE; replays a snapshot on connect. |
GET | /api/manifest | the machine-readable self-description of this instance. |
GET | /api/mcp | list configured MCP servers with enabled state. |
GET | /api/mcp/active | return MCP servers for the current agent. |
POST | /api/mcp/apply | batched per-scope apply for MCP servers. |
GET | /api/mcp/importable | MCP servers configured in an external backend |
GET | /api/mcp/oauth/callback | where an authorization server sends the browser back to. |
GET | /api/mcp/pool-stats | the in-process MCP connection-pool observability tile. |
GET | /api/mcp/probe | return cached probe results (non-blocking): each switched-on server |
POST | /api/mcp/probe | probe all MCP servers and return live status. |
POST | /api/mcp/probe/{name} | reconnect (re-probe) a SINGLE MCP server: its card’s Retry. |
DELETE | /api/mcp/servers/{name} | read, add or edit, or remove one MCP server. |
GET | /api/mcp/servers/{name} | read, add or edit, or remove one MCP server. |
PUT | /api/mcp/servers/{name} | read, add or edit, or remove one MCP server. |
POST | /api/mcp/servers/{name}/allow | the owner’s yes to a server that waits for it. |
DELETE | /api/mcp/servers/{name}/read-only-trust | the owner’s trust in its labels. |
POST | /api/mcp/servers/{name}/read-only-trust | the owner’s trust in its labels. |
DELETE | /api/mcp/servers/{name}/sign-in | sign in to a remote server, or sign out. |
POST | /api/mcp/servers/{name}/sign-in | sign in to a remote server, or sign out. |
POST | /api/mcp/sync | apply MCP config changes and restart sessions. |
POST | /api/mcp/toggle | enable or disable an MCP server globally. |
POST | /api/mcp/toggle-all | enable or disable all MCP servers. |
POST | /api/mcp/toggle-tool | enable or disable a specific tool in an MCP server. |
GET | /api/memory/approval-rules | the triage approval rules, with provenance. |
POST | /api/memory/approval-rules | teach one approve/deny rule. |
DELETE | /api/memory/approval-rules/{key} | revoke one rule. |
POST | /api/memory/consolidate | trigger immediate consolidation for testing. |
GET | /api/memory/context-preview | preview what gets injected into prompts. |
GET | /api/memory/daily-digests | the per-day rollup nodes, |
GET | /api/memory/entities | the entity set with inbound-link counts. |
POST | /api/memory/entities | declare an entity, then re-link the store. |
GET | /api/memory/entities/proposals | the accept queue. |
POST | /api/memory/entities/proposals | accept or reject a proposed entity. |
DELETE | /api/memory/entities/{entity_id} | remove a hand-declared entity. |
GET | /api/memory/entities/{entity_id}/backlinks | what mentions this entity. |
GET | /api/memory/episodic | paginated list of episodic memories. |
GET | /api/memory/episodic/search | search episodic memories. |
DELETE | /api/memory/episodic/{id} | tombstone an episodic memory. |
GET | /api/memory/events | paginated audit trail. |
POST | /api/memory/events/{event_id}/undo | reverse a logged memory mutation. |
GET | /api/memory/facets | every preference facet WITH its key, state and decay. |
POST | /api/memory/facets/{key}/forget | retire a facet. FINAL. |
POST | /api/memory/facets/{key}/pin | hold a facet at full stability, or release it. |
GET | /api/memory/graph | return all memory as nodes + edges for graph visualization. |
GET | /api/memory/graph/entities | the entity topology. |
GET | /api/memory/graph/export | the entity graph as ONE self-contained HTML file. |
POST | /api/memory/graph/rebuild | seed entities, then link every record. |
GET | /api/memory/history | the days of the daily history, newest first, with their entries. |
GET | /api/memory/history/{day} | one day of the daily history, as its file holds it. |
PUT | /api/memory/history/{day} | one day of the daily history, as its file holds it. |
POST | /api/memory/import | import memory from JSON (export format). |
GET | /api/memory/lint | run the memory-health sweep, return its report. |
POST | /api/memory/migrate | migrate legacy markdown memory to vector store. |
GET | /api/memory/observability | memory health metrics and context preview. |
GET | /api/memory/partitions | every memory you have, each folder’s named by its folder. |
DELETE | /api/memory/partitions/{id} | remove a folder’s memory, with all it holds. |
GET | /api/memory/preferences | (no summary) |
PUT | /api/memory/preferences | (no summary) |
GET | /api/memory/projects | (no summary) |
PUT | /api/memory/projects | (no summary) |
POST | /api/memory/promote | promote repeated episodic patterns to semantic facts. |
GET | /api/memory/recall | deep on-demand recall for the agent. |
GET | /api/memory/record-links | one record’s entity links. |
GET | /api/memory/semantic | list all semantic memory entries. |
PUT | /api/memory/semantic | create/update a semantic entry. |
DELETE | /api/memory/semantic/{key} | tombstone a semantic entry. |
GET | /api/memory/settings | memory consolidation config. |
PUT | /api/memory/settings | memory consolidation config. |
GET | /api/memory/slots | every slot with its lines, budget and live size. |
POST | /api/memory/slots/{name}/lines | append one line. |
POST | /api/memory/slots/{name}/lines/retire | tombstone a line as the HUMAN. |
GET | /api/memory/stats | memory system statistics. |
GET | /api/memory/vault | the readable-vault status (mode, path, file count). |
POST | /api/memory/vault/sync | reconcile the vault against the store. |
GET | /api/memory/volunteer-stats | per-arm volunteered-vs-used precision. |
GET | /api/model-provider-types | installable model-provider types. |
GET | /api/model-providers | every configured model-provider instance. |
POST | /api/model-providers | add a new model provider to config. |
DELETE | /api/model-providers/{name} | remove a provider from config. |
PUT | /api/model-providers/{name} | update a provider’s model, endpoint, or options. |
GET | /api/model-providers/{name}/models | list available models for a provider entry. |
POST | /api/model-providers/{name}/models/delete | delete a local model. |
POST | /api/model-providers/{name}/pull | pull (download) a model. |
GET | /api/model-providers/{name}/search | search a provider’s |
GET | /api/model-providers/{name}/show | rich model metadata. |
POST | /api/model-providers/{name}/test | test provider connectivity. |
GET | /api/models/active | active models per use-case. |
PUT | /api/models/active/{use_case} | set the active model CHAIN for a use-case. |
GET | /api/models/available | discover models from all configured providers. |
GET | /api/models/chat | chat models for dropdowns (the one model list). |
GET | /api/models/downloads | live + recently-finished download jobs. |
POST | /api/models/downloads | start a download. Body: {provider, model}. |
POST | /api/models/downloads/cleanup | delete the partial-download leftovers. |
GET | /api/models/downloads/cleanup-candidates | partial-download leftovers. |
DELETE | /api/models/downloads/{id} | cancel and detach a download job. |
GET | /api/models/downloads/{id}/stream | per-job progress SSE. |
GET | /api/models/embedding/reindex | live + recently-finished jobs. |
POST | /api/models/embedding/reindex | start a re-index of all embeddings. |
GET | /api/models/embedding/reindex/{id}/stream | per-job progress SSE. |
GET | /api/models/health | derived per-provider health (breaker state, latency |
DELETE | /api/models/hf-token | clear the managed token (SOURCE 1). SEL-audited by name. |
PUT | /api/models/hf-token | write the token to SOURCE 1 (the credential store). |
GET | /api/models/hf-token/status | per-source {present, valid, username, masked, active}. |
GET | /api/models/loaded | every resident model + the memory-pressure snapshot. |
GET | /api/models/local/{provider}/search | search a searchable provider’s |
DELETE | /api/models/local/{provider}/{model} | delete a downloaded local model. |
DELETE | /api/models/rates | reset your price for one key, so the model’s default |
GET | /api/models/rates | the rates you set, and what each bound or recent model costs. |
PUT | /api/models/rates | set your price for one key, a model a known price is listed for |
GET | /api/models/routing-policy | the inspectable routing table. |
PUT | /api/models/routing-policy | set one of the three user levers. |
GET | /api/models/routing-proposals | the propose-don’t-write review queue. |
DELETE | /api/models/routing-proposals/{id} | decline it, and remember the decision. |
POST | /api/models/routing-proposals/{id}/accept | apply it to the table. |
DELETE | /api/models/sidecar/{provider}/install | remove a CORE-created venv. |
POST | /api/models/sidecar/{provider}/install | start the resumable install. |
GET | /api/models/sidecar/{provider}/install/status | the rich install poll shape. |
GET | /api/models/telemetry | per-model efficiency rows. |
POST | /api/models/test | Test one model for one use case with one small real call. |
POST | /api/models/unload | {provider} — free what a provider holds. Idempotent. |
GET | /api/models/use-cases/{use_case}/settings | (no summary) |
PUT | /api/models/use-cases/{use_case}/settings | (no summary) |
GET | /api/models/waits | the requests waiting for a busy local model, oldest first. |
POST | /api/models/waits/{id}/move-on | stop a wait now, so its next model answers. |
DELETE | /api/notifications | delete a single notification by timestamp. |
GET | /api/notifications | the delivery log, newest first, and how many of ITS rows are unread. |
POST | /api/notifications/ack | mark a single notification as read. |
POST | /api/notifications/ack-all | mark all notifications as read. |
POST | /api/notifications/clear | clear all notifications. |
GET | /api/notifications/rules | the effective per-(source, kind) rule matrix. |
PUT | /api/notifications/rules | replace rules for the keys named in the body. |
GET | /api/notifications/settings | (no summary) |
PUT | /api/notifications/settings | (no summary) |
POST | /api/notifications/trust | the owner’s Allow or Deny on an unknown-sender notification. |
POST | /api/notifications/unack | mark a single notification as unread. |
GET | /api/onboarding | First-run onboarding signal — model readiness plus persisted flow progress. |
GET | /api/onboarding/import | what each source holds, and what importing each item does. |
POST | /api/onboarding/import | start importing the picked items. |
DELETE | /api/onboarding/import/job | stop the running import after the item it is on. |
GET | /api/onboarding/import/job | the running or last import, and its report once finished. |
GET | /api/onboarding/import/stream | status frames: the reading pass and the import. |
GET | /api/onboarding/local-model | is a local Ollama reachable on localhost? |
POST | /api/onboarding/local-model/bind | credential-free setup of an endpoint. |
POST | /api/onboarding/local-model/scan | opt-in LAN sweep for an Ollama. |
GET | /api/onboarding/model-check | did a chat provider actually build? |
POST | /api/onboarding/state | Record first-run progress — a partial merge into the onboarding entity state. |
POST | /api/optimizer/optimize | rewrite a prompt using session context. |
GET | /api/outbox | list files in the outbox. |
POST | /api/outbox/notify | agent sent a file, notify the user. |
GET | /api/outbox/{filename} | download a file from the outbox. |
GET | /api/packs/bundled | List the Domain OS packs shipped in this build. |
POST | /api/packs/bundled/{name}/install | Build a shipped Domain OS pack and import it through the pack import pipeline. |
GET | /api/packs/installed | List installed packs with connector-resolution, roster + setup-binding state. |
POST | /api/packs/one-link | Import a one-link JSON document through the same import pipeline. |
POST | /api/packs/prompt-card | Import a pasted prompt card — files a proposal, writes no entity. |
GET | /api/packs/proposals | The propose-only fingerprint cards — an ON-DEMAND scan. Writes nothing. |
POST | /api/packs/proposals/reject | Remember that this project’s user does not want this pack — the never-re-nag write. |
POST | /api/packs/{name}/bindings | Record one setup-interview answer — the folder the pack will read. |
POST | /api/packs/{name}/finish-setup | Return a pack’s re-runnable setup interview (the “Finish setup” chip). |
POST | /api/packs/{name}/roster/deploy | One-click team deploy: promote a pack’s always roster tier. |
POST | /api/packs/{name}/triggers/deploy | Add a pack’s staged triggers to Automations — DISABLED. |
POST | /api/packs/{name}/uninstall | Uninstall a pack, never a copy you edited. DRY-RUN unless confirm is true. |
POST | /api/packs/{name}/update | The pack_owned update flow. DRY-RUN unless confirm is true. |
GET | /api/proactive/digest | the digest card, assembled from the last digest run. |
POST | /api/proactive/digest/reply | one tap or one typed reply. Body {run_id, text}. |
POST | /api/proactive/install | the pack card. Idempotent; also the reconcile. |
GET | /api/projects | (no summary) |
POST | /api/projects | (no summary) |
POST | /api/projects/import | import a project archive (multipart file). |
GET | /api/projects/settings | the user’s default project ("" when none). |
PUT | /api/projects/settings | set the default project; "" or null clears it. |
DELETE | /api/projects/{project_id} | (no summary) |
GET | /api/projects/{project_id} | (no summary) |
PUT | /api/projects/{project_id} | (no summary) |
POST | /api/projects/{project_id}/context-adapters/regenerate | (no summary) |
GET | /api/projects/{project_id}/export | download one project as a manifest ZIP. |
GET | /api/projects/{project_id}/linked | the work units scoped under this |
GET | /api/projects/{project_id}/work | the state-grouped Work board. |
POST | /api/projects/{project_id}/work/claim | take a TTL’d claim on one board row. |
POST | /api/projects/{project_id}/work/release | release a claim you hold. |
GET | /api/prompt-snippets | list reusable snippets via the provider. |
POST | /api/prompt-snippets | create a snippet. |
DELETE | /api/prompt-snippets/{name} | remove a snippet. |
GET | /api/prompt-snippets/{name} | read a snippet (with redacted content). |
PUT | /api/prompt-snippets/{name} | update a snippet. |
POST | /api/prompt-snippets/{name}/render | preview a snippet standalone. |
GET | /api/prompts | list prompt templates via the provider. |
POST | /api/prompts | create a new prompt template via the registered provider. |
GET | /api/prompts/bindings | which prompt serves each runtime use-case. |
PUT | /api/prompts/bindings | set the prompt bound to one use-case. |
POST | /api/prompts/preview | render ARBITRARY (unsaved) template content |
GET | /api/prompts/syntax | the template-language reference the authoring UI |
DELETE | /api/prompts/{name} | remove a user prompt via the provider. |
GET | /api/prompts/{name} | read a prompt template via the PromptProvider. |
PUT | /api/prompts/{name} | update an existing prompt template. |
POST | /api/prompts/{name}/launch | {variables} — instantiate a RUNNABLE template |
POST | /api/prompts/{name}/render | render a prompt template with the |
GET | /api/providers | (no summary) |
GET | /api/providers/{name} | (no summary) |
POST | /api/providers/{name}/availability | measure again whether it can run here. |
GET | /api/providers/{name}/config | (no summary) |
PATCH | /api/providers/{name}/config | (no summary) |
GET | /api/providers/{name}/instances | (no summary) |
POST | /api/providers/{name}/instances | (no summary) |
DELETE | /api/providers/{name}/instances/{id} | (no summary) |
GET | /api/providers/{name}/instances/{id} | (no summary) |
PUT | /api/providers/{name}/instances/{id} | (no summary) |
POST | /api/providers/{name}/instances/{id}/test | test connectivity. |
GET | /api/providers/{name}/schema | (no summary) |
GET | /api/push | The subscribe-side facts: backend, VAPID public key, which devices are subscribed. |
POST | /api/push/relay-register | Store one device’s vendor push-service token for the relay backend, and route approvals. |
POST | /api/push/relay-unregister | Drop one device’s relay token. |
POST | /api/push/subscribe | store one device’s W3C push subscription, and route approvals to it. |
POST | /api/push/unsubscribe | drop one device’s push subscription. |
GET | /api/recent-projects | list recently used project directories. |
GET | /api/resilience/degraded | per-surface no-model floor + availability. |
POST | /api/reveal | reveal a file/folder in Finder or open with default app. |
GET | /api/rooms | every room, newest first. ?archived=1 includes archived ones. |
POST | /api/rooms | {title} — create a room. |
GET | /api/rooms/{room_id} | one room, its members, its posture, and its transcript. |
PATCH | /api/rooms/{room_id} | {round_budget} — the room’s own budget override. |
POST | /api/rooms/{room_id}/archive | archive a room. Idempotent. |
POST | /api/rooms/{room_id}/continue | finish an interrupted round. |
GET | /api/rooms/{room_id}/export | the transcript, redacted, as a download. |
POST | /api/rooms/{room_id}/members | {name, role_blurb?, listen_policy?, profile_narrowing?}. |
DELETE | /api/rooms/{room_id}/members/{name} | remove a member. |
POST | /api/rooms/{room_id}/messages | {content} — the human speaks, then the room answers. |
GET | /api/sandbox/providers | the sandbox tiers the terminal picker offers. |
POST | /api/screenshot | capture screen region and return file path. |
GET | /api/search/active | bound provider name per use-case. |
PUT | /api/search/active/{use_case} | bind a provider to a use-case. |
GET | /api/search/providers | registered providers + capabilities + state. |
POST | /api/search/providers/{name}/test | run one small search through the provider now. |
DELETE | /api/secrets | remove one secret from the vault. |
GET | /api/secrets | the vault, presence only. |
POST | /api/secrets | store one secret’s value. The response carries presence, not the value. |
GET | /api/security/audit | a cursor-paginated page of filtered security events. |
GET | /api/security/audit/verify | HMAC-chain verification over the audit log. |
GET | /api/security/credentials | where the instance’s secrets are stored. |
POST | /api/security/credentials/migrate | move .env secrets into the keychain. |
POST | /api/security/credentials/rollback | restore the pre-migration .env. |
GET | /api/security/denied-commands | the bash denylist for the Security panel. |
GET | /api/security/egress | the operator’s outbound-egress overrides for the |
GET | /api/security/outside-home | the places outside the home it may be allowed to read. |
GET | /api/security/stats | live security feature counts. |
POST | /api/sel/rotate | archive existing SEL log and start a fresh chain. |
POST | /api/send-message | deliver a message to the messaging channel and/or dashboard. |
POST | /api/session-keepalive | a waiting tool’s check-in, which keeps its session alive. |
GET | /api/session-tool-policy | return managedToolPolicy for the |
GET | /api/session/archive | list archive files for a session key. |
GET | /api/session/archive/{name} | read a single archive file as JSONL text. |
DELETE | /api/sessions | permanently delete closed history sessions only, as Delete does. |
GET | /api/sessions | list conversation session files. |
GET | /api/sessions/context | context usage for all active sessions. |
GET | /api/sessions/health | sessions flagged as stalled from log scan. |
GET | /api/sessions/recall | what your earlier chats said, searched for your agent. |
POST | /api/sessions/restart | reset all ACP agent sessions. |
GET | /api/sessions/retag-all | the current/last job (for UI hydration). |
POST | /api/sessions/retag-all | start (or return) the batch re-tag job. |
POST | /api/sessions/retag-all/cancel | cancel the in-flight job. |
GET | /api/sessions/search | content search across session transcripts. |
GET | /api/sessions/{id}/agents | list sub-agent results for a session. |
GET | /api/sessions/{id}/agents/{agent_id} | read sub-agent result. |
GET | /api/sessions/{id}/agents/{agent_id}/stream | SSE stream of result file. |
DELETE | /api/sessions/{key} | permanently delete a history session, as Delete does. |
GET | /api/sessions/{key} | return messages for a session. |
GET | /api/skills | every skill agents get, each row the copy they get. |
POST | /api/skills | create a new skill. |
POST | /api/skills/bundled/keep | keep the owner’s copy over a bundled skill’s newer version. |
POST | /api/skills/bundled/update | use a bundled skill’s newer version over the owner’s copy. |
GET | /api/skills/ephemeral/{session} | the session-live drafts awaiting a |
POST | /api/skills/ephemeral/{session}/promote | promote ONE draft to a tier. |
DELETE | /api/skills/ephemeral/{session}/{slug} | forget one draft, or |
POST | /api/skills/install | install a skill from a marketplace into the home. |
GET | /api/skills/marketplace/detail | (no summary) |
GET | /api/skills/marketplaces | list registered skill marketplaces. |
POST | /api/skills/overlay/revert | revert accepted refinements of a skill. |
GET | /api/skills/proposals | the pending autonomous-synthesis proposals |
DELETE | /api/skills/proposals/{id} | drop a proposal (never installed). |
GET | /api/skills/proposals/{id} | full proposal incl. procedure + fenced source. |
POST | /api/skills/proposals/{id}/accept | refine the skill it names, or add it as a skill. |
GET | /api/skills/search | search across all registered skill providers. |
DELETE | /api/skills/{name} | remove a skill the home holds. |
GET | /api/skills/{name} | get or update a skill. (Listing is served by |
PUT | /api/skills/{name} | get or update a skill. (Listing is served by |
GET | /api/skills/{name}/files | provider-backed file browser. |
POST | /api/skills/{name}/verify | compare one skill with its install record. |
GET | /api/slash-commands | the slash commands the composer ”/” menu offers. |
DELETE | /api/spawn | clear all completed subagents. |
GET | /api/spawn | the caller’s own chat’s subagents, and every chat’s for you. |
POST | /api/spawn | spawn a subagent. |
POST | /api/spawn/cancel-fanout | kill EVERY child of one parent/run in one |
DELETE | /api/spawn/{agent_id} | cancel a running subagent or remove a finished one. |
GET | /api/spawn/{agent_id} | one subagent’s status, and its report once it has ended. |
GET | /api/status | (no summary) |
GET | /api/stt/ffmpeg | the ffmpeg transcription runs, or why there is none. |
POST | /api/stt/transcribe | transcribe uploaded audio via the active STT model. |
GET | /api/suggestions | the suggestions there are now, at once. |
GET | /api/surfaces/overlays | the user/agent (L2) overlays, plus named refusals. |
GET | /api/system | System information endpoint with live CPU, memory, network metrics. |
POST | /api/system/restart | bounce the gateway to apply committed backend |
GET | /api/task-lists | (no summary) |
POST | /api/task-lists | (no summary) |
DELETE | /api/task-lists/{list_id} | (no summary) |
GET | /api/task-lists/{list_id} | (no summary) |
PUT | /api/task-lists/{list_id} | (no summary) |
POST | /api/task-lists/{list_id}/reset | reset a Repeatable-project list so it can be run |
GET | /api/tasks | (no summary) |
POST | /api/tasks | (no summary) |
POST | /api/tasks/bulk | validate-all-then-apply bulk create/update/delete. |
GET | /api/tasks/graph | adjacency + DependencyAnalysis. |
GET | /api/tasks/providers | (no summary) |
GET | /api/tasks/ready | tasks startable now (no unfinished prerequisites). |
POST | /api/tasks/search | query + status/priority/tag/scope filters + sort. |
DELETE | /api/tasks/{task_id} | (no summary) |
GET | /api/tasks/{task_id} | (no summary) |
PUT | /api/tasks/{task_id} | (no summary) |
GET | /api/tasks/{task_id}/comments | (no summary) |
POST | /api/tasks/{task_id}/comments | (no summary) |
DELETE | /api/tasks/{task_id}/comments/{comment_id} | (no summary) |
GET | /api/terminal/sessions | list active terminal sessions. |
POST | /api/terminal/sessions | create a new terminal session (returns session_id). |
DELETE | /api/terminal/sessions/{session_id} | kill a terminal session. |
GET | /api/themes | list all custom themes, sorted by creation date. |
POST | /api/themes | create a new custom theme. |
DELETE | /api/themes/{slug} | get, update, or delete a custom theme. |
GET | /api/themes/{slug} | get, update, or delete a custom theme. |
PUT | /api/themes/{slug} | get, update, or delete a custom theme. |
GET | /api/token/local | issue a token for the CLI, a script or a local app. |
GET | /api/tools | Return all tools from all active tool sources. |
GET | /api/tools/groups | the tool-GROUP partition. |
POST | /api/tools/invoke | execute one tool through the Tool entity. |
POST | /api/tools/provider-toggle | enable/disable a whole NATIVE tool provider. |
GET | /api/tools/savings | the TokenJuice savings (counterfactual) summary. |
POST | /api/tools/toggle | enable/disable a native-provider tool. |
GET | /api/triggers | every trigger. |
POST | /api/triggers | create a schedule, lifecycle or data-event trigger. |
GET | /api/triggers/doctor | structural problems across every trigger. |
GET | /api/triggers/history | the run feed across every kind. |
POST | /api/triggers/restore-hold/resume | Resume all: every automation a restore holds. |
GET | /api/triggers/review | what a restart left for you to decide. |
POST | /api/triggers/review | decide one of them. |
GET | /api/triggers/variables | the $variables each trigger kind exposes. |
POST | /api/triggers/view/render | the view kind’s production render caller. |
GET | /api/triggers/week | the week-grid projection, from ?start=. |
DELETE | /api/triggers/{id} | delete a trigger. |
PUT | /api/triggers/{id} | update a trigger. |
POST | /api/triggers/{id}/answer | answer the question a trigger’s action stopped on. |
POST | /api/triggers/{id}/fire | fire a webhook automation for an outside program. |
GET | /api/triggers/{id}/history | run records; other kinds answer supported: false. |
GET | /api/triggers/{id}/history/{run_id} | one full run record. |
POST | /api/triggers/{id}/run | run it now. |
POST | /api/triggers/{id}/test | execute a lifecycle trigger’s action once. |
POST | /api/triggers/{id}/to-chat | open a schedule trigger as a chat session. |
POST | /api/triggers/{id}/toggle | enable/disable. |
POST | /api/triggers/{id}/workflow-version | {version, steps} — Use vN: run newer versions. |
POST | /api/update | move this install to its release, the way it was installed. |
POST | /api/update/cancel | stop the update in progress, and say what that left. |
GET | /api/update/check | the update status, checking only when an automatic check is due. |
POST | /api/update/check | check for updates once, now, even with automatic checks off. |
POST | /api/update/dismiss | close what the update progress says an update ended with. |
POST | /api/update/simulate | walk through update steps with delays. |
POST | /api/upload | open native file picker and return selected paths. |
POST | /api/upload/file | cross-platform multipart file upload. |
POST | /api/uploads/init | {filename, size, mime, target[, path]} → session. |
GET | /api/uploads/limits | per-category caps + the single-POST threshold, so |
DELETE | /api/uploads/{id} | drop a cancelled upload: its parts go, it can’t be completed. |
GET | /api/uploads/{id} | which parts landed (drives client resume). |
POST | /api/uploads/{id}/complete | assemble + scan + hand off to the target. |
PUT | /api/uploads/{id}/part | stream one part to disk (idempotent). |
GET | /api/usage | the per-day spend fold. |
GET | /api/usage/budget | today’s metered spend beside the daily cap it is held to. |
GET | /api/usage/rollup | aggregated ledger rows. |
GET | /api/usage/totals | the grand total over the window. |
DELETE | /api/voice/bindings | unbind one surface. |
GET | /api/voice/bindings | the surface → profile map. |
PUT | /api/voice/bindings | {surface, profile_id} — bind one surface. |
POST | /api/voice/migrate | {name?} — profile from the current voice, then default. |
GET | /api/voice/profiles | every profile, the binding map, and the engines. |
POST | /api/voice/profiles | {name, kind, provider, model, …}. |
DELETE | /api/voice/profiles/{id} | record, artifacts, and any bindings. |
GET | /api/voice/profiles/{id} | (no summary) |
PUT | /api/voice/profiles/{id} | patch the mutable fields. |
GET | /api/voice/profiles/{id}/audio | (no summary) |
DELETE | /api/voice/profiles/{id}/consent | delete the recording, clear the fields. |
POST | /api/voice/profiles/{id}/consent | {consent_text}. |
POST | /api/voice/profiles/{id}/consent/verify | recompute from the artifacts. |
POST | /api/voice/profiles/{id}/lock | {history_index} — pin seed + locked.wav. |
POST | /api/voice/profiles/{id}/unlock | variation returns. |
GET | /api/voice/resolve | which level wins, and why. |
POST | /api/voice/synthesize | sentence-chunked Piper TTS. |
GET | /api/workflows | (no summary) |
POST | /api/workflows | validate a definition and, unless save: false, save it. |
POST | /api/workflows/agent-plans | an agent’s workflow_plan, planned here. |
POST | /api/workflows/agent-saves | save an agent’s workflow, or ask its owner to allow it. |
GET | /api/workflows/attention | per-template attention summaries. |
GET | /api/workflows/audit | Diagnose/heal. dry_run defaults TRUE — a GET-shaped repair that ran by default |
POST | /api/workflows/batches | start a batch subagent_run compiled (batch_start). |
GET | /api/workflows/batches/{name} | where a subagent_run batch stands (batch_start). |
GET | /api/workflows/manifest | the machine-readable self-description of this instance. |
GET | /api/workflows/runs | Paginated run list. Reads the store directly: this is a projection for a table, not |
POST | /api/workflows/runs | (no summary) |
DELETE | /api/workflows/runs/{run_id} | Delete a terminal run and its artifacts, tearing its workspace down first. |
GET | /api/workflows/runs/{run_id} | (no summary) |
POST | /api/workflows/runs/{run_id}/cancel | (no summary) |
POST | /api/workflows/runs/{run_id}/confirm | Resolve a pending confirmation by verb — the seam the DagView’s Approve/Deny binds to. |
GET | /api/workflows/runs/{run_id}/continuations | The pending resume tokens for a run — what a needs-input inbox renders. |
GET | /api/workflows/runs/{run_id}/deliverable | GET the run’s document deliverable + working log. |
GET | /api/workflows/runs/{run_id}/drop | GET the run’s file-drop policy + what has been dropped. |
POST | /api/workflows/runs/{run_id}/drop | POST multipart to the run’s approval-gated file drop. |
POST | /api/workflows/runs/{run_id}/edit | (no summary) |
GET | /api/workflows/runs/{run_id}/events | Per-run event stream, snapshot-then-subscribe. |
POST | /api/workflows/runs/{run_id}/fork | (no summary) |
GET | /api/workflows/runs/{run_id}/introspect | The nine-question introspection projection for one run. |
GET | /api/workflows/runs/{run_id}/ledger-rails | GET the run’s two ledger rails — findings and verdict/ROI. |
GET | /api/workflows/runs/{run_id}/nodes/{node_id}/inspect | The reconstructability set for one node, live while the run is. |
GET | /api/workflows/runs/{run_id}/observe | watch a run for a bounded window, and answer what |
GET | /api/workflows/runs/{run_id}/outbox | GET the run’s published-artifact listing — the outbox half of the file drop. |
GET | /api/workflows/runs/{run_id}/outputs/{node_id} | GET one node’s output, masked the way the inspect drawer masks it. |
POST | /api/workflows/runs/{run_id}/pause | (no summary) |
PUT | /api/workflows/runs/{run_id}/policy-overrides | PUT the run’s sparse SupervisorPolicy overlay — prelaunch only. |
POST | /api/workflows/runs/{run_id}/resume | Answer a gate, or clear a pause. |
GET | /api/workflows/runs/{run_id}/review | GET this run’s review findings, anchored against its workspace diff as it is right now. |
POST | /api/workflows/runs/{run_id}/review/triage | POST accept/reject decisions; dispatch the accepted subset to the originating worker. |
POST | /api/workflows/runs/{run_id}/rewind | (no summary) |
POST | /api/workflows/runs/{run_id}/run-from | (no summary) |
POST | /api/workflows/runs/{run_id}/start | Start an existing DRAFT run — the launch a forked run had no verb for (#372). |
POST | /api/workflows/runs/{run_id}/steer | POST a mid-run steering instruction. |
GET | /api/workflows/runs/{run_id}/steering | GET what is queued but unconsumed — so the UI can show it as pending. |
GET | /api/workflows/runs/{run_id}/workspace | GET the run’s workspace review: changed files + the two reintegration verbs. |
GET | /api/workflows/surfacing | The templates list with its surfacing state — what the UX renders. |
DELETE | /api/workflows/{name} | (no summary) |
GET | /api/workflows/{name} | one definition, and the revision a save over it names. |
POST | /api/workflows/{name}/a2a-publish | the template detail UI’s publish toggle. |
GET | /api/workflows/{name}/automations | the automations that run it, and each one’s version. |
GET | /api/workflows/{name}/ledger | recent runs of this template with their ledger totals. |
POST | /api/workflows/{name}/refine | fire the refiner over this template on demand. |
GET | /api/workflows/{name}/trajectory | The trajectory-signature distribution and regression signal for one template. |
GET | /api/workflows/{name}/versions | the version history, who saved each, and the maturity. |
GET | /api/workflows/{name}/versions/diff | the typed-op diff between two versions. |
GET | /api/workflows/{name}/versions/{version} | one recorded version’s full definition. |
Websocket and internal routes
Section titled “Websocket and internal routes”The remaining 7 registrations: real-time transport and the loopback control bridge. They are part of the surface and listed for completeness, but they are not agent-callable HTTP endpoints — the manifest does not mark them so, and neither should you treat them so.
| Method | Path | Summary |
|---|---|---|
POST | /action | invoke one semantic action (control bridge, loopback). |
GET | /actions | the self-describing action catalogue (control bridge, loopback). |
GET | /api/ws | single multiplexed WebSocket for all real-time events. |
GET | /api/ws/terminal/{session_id} | WebSocket PTY for the built-in CLI panel. |
POST | /confirm | refused, always: only you confirm a control-bridge action. |
GET | /mcp | 405 while the surface serves (no SSE stream in v1, spec-permitted). |
POST | /mcp | (no summary) |
See also: API overview · Configuration reference · CLI reference