Skip to content

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.

  • 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.

The 128 families the surface divides into, largest first.

FamilyRegistrationsDistinct paths
/api/chat8169
/api/knowledge7158
/api/memory5244
/api/workflows5045
/api/models3830
/api/loops2923
/api/artifacts2617
/api/inbox2423
/api/apps2315
/api/mcp2116
/api/skills2117
/api/triggers2118
/api/voice1711
/api/channels1614
/api/sessions1512
/api/projects1410
/api/agents139
/api/dashboard138
/api/packs1313
/api/tasks139
/api/providers128
/api/durability1111
/api/notifications118
/api/onboarding119
/api/prompts117
/api/lexicon106
/api/model-providers108
/api/rooms108
/api/auth99
/api/browse97
/api/doctor99
/api/evals99
/api/learning97
/api/security99
/api/agent-marketplace85
/api/devices77
/api/config63
/api/doc-comments63
/api/external-access66
/api/legibility64
/api/prompt-snippets63
/api/spawn63
/api/task-lists63
/api/tools66
/api/update65
/api/uploads65
/api/autonudge53
/api/desktop54
/api/feedback55
/api/push55
/api/themes52
/api/autonomy44
/api/search44
/api/usage44
/api/agent-metadata31
/api/agent-providers33
/api/agent-runners33
/api/incident32
/api/lessons31
/api/logs32
/api/outbox33
/api/proactive33
/api/secrets31
/api/terminal32
/api/agent21
/api/agent-hooks22
/api/approvals22
/api/channel22
/api/computer-use22
/api/guardrails21
/api/heartbeat22
/api/session22
/api/stt22
/api/system22
/api/upload22
/api/ws22
/mcp21
/action11
/actions11
/api/action-providers11
/api/attachment-extract11
/api/auth-status11
/api/browse-dirs11
/api/changelog11
/api/companion11
/api/config-fs11
/api/context11
/api/create-dir11
/api/design11
/api/file-complete11
/api/file-content-search11
/api/file-create11
/api/file-delete11
/api/file-git-commit11
/api/file-git-log11
/api/file-git-original11
/api/file-git-status11
/api/file-list11
/api/file-move11
/api/file-raw11
/api/file-read11
/api/file-search11
/api/file-upload11
/api/file-watch11
/api/file-write11
/api/genui11
/api/healthz11
/api/hooks11
/api/investigate11
/api/logout11
/api/manifest11
/api/model-provider-types11
/api/optimizer11
/api/recent-projects11
/api/resilience11
/api/reveal11
/api/sandbox11
/api/screenshot11
/api/sel11
/api/send-message11
/api/session-keepalive11
/api/session-tool-policy11
/api/slash-commands11
/api/status11
/api/suggestions11
/api/surfaces11
/api/token11
/confirm11

The 923 routes an agent drives directly. After any mutating call (POST/PUT/PATCH/DELETE), read the entity back to confirm the change took.

MethodPathSummary
GET/api/action-providersthe registered action providers + their
GET/api/agent-hooksthe agent CLI’s hooks in effect, and the ones waiting for the owner.
POST/api/agent-hooks/allowthe owner’s yes to one waiting agent hook.
GET/api/agent-marketplace/agentslist agents from a marketplace.
POST/api/agent-marketplace/agentscreate 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/marketplaceslist 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-providersthe single list of agent runtimes + readiness.
GET/api/agent-providers/{id}/agentsthe agents a runtime offered at its last Test.
POST/api/agent-providers/{id}/teststart one agent CLI once, because you asked.
GET/api/agent-runnersthe runner catalog, with the health each one was last checked at.
POST/api/agent-runners/{id}/allowthe owner’s yes to a runner definition that waits.
POST/api/agent-runners/{id}/checkrun one runner’s CLI for its version, because you asked.
GET/api/agent/configread or write the installed agent config.
PUT/api/agent/configread or write the installed agent config.
GET/api/agentslist all PersonalClaw agent definitions.
POST/api/agentscreate 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/exportwrite your agents into Claude Code’s agents folder, once confirmed.
GET/api/agents/installedlist installed agent provider names.
POST/api/agents/routing/dismiss{agent} — bump the dismissal counter; the
GET/api/agents/routing/statusenabled flag + muted/dismissal state.
POST/api/agents/routing/unmute{agent} — clear an agent’s mute + dismissals.
POST/api/agents/syncfold 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/approvalslist pending tool approvals.
POST/api/approvals/{id}/{action}approve or reject.
GET/api/appsinstalled apps with manifest summary + runtime state.
POST/api/appsinstall from {source, consent}.
GET/api/apps/catalogavailable-to-install apps (Store): bundled-but-not-
DELETE/api/apps/local-sourcesremove a local app-source dir.
GET/api/apps/local-sourcesthe configured local app-source directories.
POST/api/apps/local-sourcesadd a local app-source dir {path} (a
GET/api/apps/messagedrain THIS app’s inbox (read-once).
POST/api/apps/messagesend a typed message {to, type, payload} to
POST/api/apps/previewreview {source, name?, listedBy?} before anything is installed.
DELETE/api/apps/sourcesremove a user git source URL.
GET/api/apps/sourcesthe configured git source URLs (defaults + user).
POST/api/apps/sourcesadd 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-runstart a background agent task.
GET/api/apps/{name}/agent-run/{run_id}poll a background agent task.
GET/api/apps/{name}/configan app’s settings, with its credentials masked.
PUT/api/apps/{name}/configsave 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}/tokenthe app-scoped identity token this app should use.
GET/api/apps/{name}/uninstall-previewclassify shared deps and report what the app’s data/ holds.
POST/api/apps/{name}/updateatomic update from {source, consent?}.
GET/api/artifactsmetadata-only rows; q searches metadata and body.
POST/api/artifactscreate (or bump an existing file-backed artifact).
GET/api/artifacts/deployedthe deployed-app listing (slug + in-gateway URL).
GET/api/artifacts/foldersthe library folder tree (flat, parent_id-linked).
POST/api/artifacts/folderscreate 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/pinnedthe 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}/changedanother PersonalClaw process wrote this artifact.
DELETE/api/artifacts/{slug}/deploytear the deployment down.
POST/api/artifacts/{slug}/deploypublish the artifact at a serve URL of its own.
GET/api/artifacts/{slug}/eventsactivity timeline (drops dashboard:ui).
POST/api/artifacts/{slug}/eventsrecord a ‘referenced’ impression.
GET/api/artifacts/{slug}/extractextracted text for a binary document artifact.
PATCH/api/artifacts/{slug}/folderfile an artifact ({folder_id}; "" = unfiled).
GET/api/artifacts/{slug}/modelthe parsed document model + its loss report.
PUT/api/artifacts/{slug}/modelre-render a posted model into the artifact.
POST/api/artifacts/{slug}/pinpin or unpin ({"pinned": bool}).
GET/api/artifacts/{slug}/rawstream a binary artifact’s bytes.
PUT/api/artifacts/{slug}/rawreplace a binary artifact’s bytes.
POST/api/artifacts/{slug}/regeneratere-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-extractthe extracted text content for an
GET/api/auth-statusAuth configuration status — mode, bind_host, and session validity.
POST/api/auth/confirmsign this device in again with the password, to show it is you.
POST/api/auth/enroll/completeredeem a code for a device session.
POST/api/auth/enroll/startmint a single-use device enrollment code.
POST/api/auth/loginverify the owner credential and mint a session cookie.
POST/api/auth/logoutclear the cookie AND revoke the session behind it.
POST/api/auth/passwordset the owner’s sign-in password, or change it.
POST/api/auth/rotate-keyreplace the key every sign-in is signed with.
GET/api/auth/sessionthe authenticated account view (Settings → Account).
GET/api/auth/statuswhat the login UI needs to render itself.
GET/api/autonomyevery governed action type, its rung, and what it has earned.
POST/api/autonomy/demotehand a type’s autonomy back. Body {key}.
POST/api/autonomy/grantthe promotion click. Body {key, rung}.
POST/api/autonomy/undoreverse one automatic action. Body {id}.
GET/api/autonudgelist all active loops.
POST/api/autonudgestart 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-dirslist subdirectories for directory browser.
DELETE/api/browse/connectordetach the operator’s browser. Idempotent.
GET/api/browse/connectorwhether a browser is attached right now.
POST/api/browse/connectorrecord the operator’s attached browser.
GET/api/browse/connector/tabsthe 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/killstop unattended browsing. Body: {reason?: str}.
POST/api/browse/kill/releasere-enable unattended browsing.
GET/api/browse/statusthe mirror’s read model: kill state, expired sites, pending grants.
GET/api/changelogread full CHANGELOG.md from project.
POST/api/channel/profileread the owner’s profile on the channel whose owner id it is.
POST/api/channel/upload-fileupload a file to the active channel (internal, called by notify_attachment).
GET/api/channelsall comms transports with info + health.
GET/api/channels/reply-targetslist channels the bot can reply in.
GET/api/channels/trustthe whole sender-trust posture, per chat channel.
POST/api/channels/trust/{provider}/channelstrack one group.
DELETE/api/channels/trust/{provider}/channels/{channel_id}stop tracking one group.
DELETE/api/channels/trust/{provider}/pairingcancel the outstanding sender code.
POST/api/channels/trust/{provider}/pairingmint a sender’s code and return it once.
PUT/api/channels/trust/{provider}/policiesset 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}/connectbring the transport online.
POST/api/channels/{name}/disconnecttake the transport offline.
GET/api/channels/{name}/ownerthe channel’s owner and its pairing state.
DELETE/api/channels/{name}/owner/pairingcancel the outstanding owner code.
POST/api/channels/{name}/owner/pairingmint the owner’s code and return it once.
POST/api/channels/{name}/testactive probe (e.g. Slack auth.test).
POST/api/chatsend message to a session, stream response via SSE.
GET/api/chat/folderslist all project folders.
POST/api/chat/folderscreate 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-inputwhether an attached image reaches the model as one.
POST/api/chat/modeset the tool APPROVAL mode (whether tools auto-approve).
POST/api/chat/nav/resolve-linksbatch-summarize bare links.
GET/api/chat/screen-framecan this session share its screen?
POST/api/chat/screen-framestage one screen frame for the next chat turn.
POST/api/chat/screen-frame/pinpromote one frame to an ordinary attachment.
GET/api/chat/sessionslist all chat sessions.
POST/api/chat/sessionscreate a new chat session.
POST/api/chat/sessions/auto-archiverun (or preview) the auto-archive rule.
GET/api/chat/sessions/bound-projectthe CALLING session’s bound Project id.
POST/api/chat/sessions/bulkapply one op to many sessions.
POST/api/chat/sessions/cleanupbulk-archive inactive sessions to history.
GET/api/chat/sessions/model-reachwhat the CALLING session keeps, and who asked.
GET/api/chat/sessions/templatesevery saved session starter.
POST/api/chat/sessions/templatessave 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-agentbind a DISCOVERED ACP agent.
POST/api/chat/sessions/{session}/agentset agent for a chat session.
POST/api/chat/sessions/{session}/approveresolve a pending tool approval.
POST/api/chat/sessions/{session}/channel-linklink a dashboard session to a channel.
PATCH/api/chat/sessions/{session}/colorset session color.
POST/api/chat/sessions/{session}/contextinject silent background context.
POST/api/chat/sessions/{session}/dropmove a session into a column.
POST/api/chat/sessions/{session}/edit-resendedit a user message and resend.
GET/api/chat/sessions/{session}/exportdownload a transcript.
PATCH/api/chat/sessions/{session}/folderassign session to a folder.
POST/api/chat/sessions/{session}/forkfork session into a new tab.
POST/api/chat/sessions/{session}/fork-rewoundrestore a rewind tail as a fork.
POST/api/chat/sessions/{session}/generate-titlemanually trigger title generation.
POST/api/chat/sessions/{session}/handoffcontinue a chat in a channel thread.
POST/api/chat/sessions/{session}/interruptstop the turn, KEEP the queue.
PATCH/api/chat/sessions/{session}/lifecyclearchive/restore one session.
GET/api/chat/sessions/{session}/mapthe durable session-map marks.
POST/api/chat/sessions/{session}/modelset model for a chat session.
PATCH/api/chat/sessions/{session}/natural-voiceset the per-conversation scope.
GET/api/chat/sessions/{session}/organizethe chat’s proposal now, without waiting.
POST/api/chat/sessions/{session}/organize/acceptapply the proposal.
POST/api/chat/sessions/{session}/organize/declineremember the refusal.
PATCH/api/chat/sessions/{session}/pintoggle pinned state.
GET/api/chat/sessions/{session}/plan-sessionthe walkthrough state.
POST/api/chat/sessions/{session}/plan/activateopen the plan walkthrough.
POST/api/chat/sessions/{session}/plan/approve{step_id} — approve a step.
POST/api/chat/sessions/{session}/plan/cancelabandon 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}/answeranswer an agent’s question.
DELETE/api/chat/sessions/{session}/queue/{queue_id}cancel a queued message.
POST/api/chat/sessions/{session}/reasoning-effortset reasoning effort.
POST/api/chat/sessions/{session}/regenerateregenerate the last assistant reply.
POST/api/chat/sessions/{session}/resumeload a history session into a session.
GET/api/chat/sessions/{session}/rewindwhat a rewind would do. Read-only.
POST/api/chat/sessions/{session}/rewindrestore files to the end of turn N.
POST/api/chat/sessions/{session}/sharea redacted, read-only artifact of a chat.
POST/api/chat/sessions/{session}/side/closedrop the buffer + destroy
POST/api/chat/sessions/{session}/side/openopen (or reset) the side buffer.
POST/api/chat/sessions/{session}/side/turnask one side question.
POST/api/chat/sessions/{session}/stopcooperative stop with kill fallback.
POST/api/chat/sessions/{session}/switch-variantswitch which regenerated variant is active.
PUT/api/chat/sessions/{session}/tagsadd tags to a session and remove tags from it.
PATCH/api/chat/sessions/{session}/titlerename a chat session.
GET/api/chat/sessions/{session}/tool-result/{rid}the FULL raw output of
POST/api/chat/sessions/{session}/undoroll back the last N conversation turns.
POST/api/chat/sessions/{session}/workspace-dirset the working directory.
GET/api/chat/tag-columnslist sidebar column layout.
POST/api/chat/tag-columnsappend a new sidebar column.
PUT/api/chat/tag-columns/orderreorder 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/tagslist all tag definitions.
POST/api/chat/tagscreate 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-modeset the per-session TASK mode.
GET/api/companion/discoverythe live state of the LAN advertiser.
POST/api/computer-use/dispatchrun one computer-use tool through the chain.
GET/api/computer-use/live-viewthe human-facing live view + overlay data.
GET/api/config-fs/streamSSE feed of out-of-band config-tree changes.
GET/api/config/default-agentread or set the default agent.
PUT/api/config/default-agentread or set the default agent.
GET/api/config/personalclawread or update PersonalClaw config.
PATCH/api/config/personalclawupdate a single config field.
PUT/api/config/personalclawread or update PersonalClaw config.
GET/api/config/schemareturn config schema entries.
GET/api/contextthe routed-context manifest.
POST/api/create-dircreate a new directory.
GET/api/dashboard/configread or write dashboard settings.
PUT/api/dashboard/configread or write dashboard settings.
GET/api/dashboard/viewsevery 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/refreshthe 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/defaultPersonalClaw’s canonical
GET/api/desktop/capabilities/{cap}one capability, gateway-mediated.
POST/api/desktop/registerthe shell announces itself, gets a session token.
GET/api/desktop/statewhat the desktop shell can actually do, right now.
POST/api/desktop/statethe shell pushes a refreshed capability manifest.
POST/api/desktop/unregisterthe shell is quitting; forget its capabilities.
GET/api/devicesevery device and token signed in to this gateway.
GET/api/devices/integrationsevery integration token that can reach this gateway.
POST/api/devices/integrations/{id}/revokerevoke one integration’s token.
POST/api/devices/pair/completeredeem a code for a durable device session.
POST/api/devices/pair/startmint a single-use pairing code + QR payload.
POST/api/devices/revoke-otherssign out every device and token but the caller’s own.
POST/api/devices/{id}/revokesign one device or token out.
DELETE/api/doc-commentsempty the deck.
GET/api/doc-commentsthe whole cross-document deck, oldest first.
POST/api/doc-commentsappend one comment.
POST/api/doc-comments/deletedrop 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/doctorall 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/fixesthe fix catalog with read-only dry-previews.
GET/api/doctor/remediationcurrent health score, a dry-run plan preview, and
POST/api/doctor/remediation/runrun 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/archivethe archive browser’s list.
POST/api/durability/archive/{id}/restore{mode?, components?, confirm?}.
GET/api/durability/conflictsthe review queue.
POST/api/durability/conflicts/{id}/resolve{choice, confirm} — apply one decision.
POST/api/durability/export{domains?} — the DSAR export.
GET/api/durability/historyper-root repo status for the Time Travel panel.
GET/api/durability/history/{root}/timelinethe timeline.
POST/api/durability/history/{root}/{op}{sha, paths?, confirm?, expected_head?,
POST/api/durability/importvalidate, then apply, an export zip.
POST/api/durability/run{job} — run one backup job now, recorded as a scheduled run is.
GET/api/durability/statusschedule state + what’s due, and what each job’s last run did.
GET/api/evals/ablationthe newest keep/remove/lighten report.
GET/api/evals/field-metricsLoop-3 field metrics beside lab results.
GET/api/evals/judge-benchthe newest tier-recommendation table.
GET/api/evals/learning-benchmarkthe newest skill-impact benchmark report.
GET/api/evals/retrievalthe newest per-arm P@k/R@k table for BOTH stores.
GET/api/evals/retrieval/cardthe hand-labeling card.
POST/api/evals/retrieval/labelssave a completed hand-label card.
GET/api/evals/studiesone compact row per pre-registered study.
GET/api/evals/studies/{study_id}one study’s verdict, agreement and per-run rows.
GET/api/external-accessthe 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/clientscreate.
DELETE/api/external-access/clients/{client_id}revoke.
POST/api/external-access/clients/{client_id}/disabledkill-switch layer (c).
POST/api/external-access/clients/{client_id}/persistent-sessionskeep its conversation.
POST/api/feedbackrecord one verdict.
GET/api/feedback/producersper-producer accuracy.
POST/api/feedback/producers/clearun-suppress after an artifact edit.
POST/api/feedback/producers/snooze30-day snooze for one producer.
GET/api/feedback/target/{kind}/{id}the current verdict for hydration.
GET/api/file-completepath autocomplete for the PathBar.
GET/api/file-content-searchrecursive content search.
POST/api/file-createcreate a new file or directory in the explorer.
POST/api/file-deletedelete a file or (recursively) a directory.
GET/api/file-git-commitone commit’s diff.
GET/api/file-git-logrecent commits for a repo.
GET/api/file-git-originalthe committed (HEAD) contents of a
GET/api/file-git-statusgit branch + per-file status.
GET/api/file-listlist a directory for the file explorer.
POST/api/file-moverename or relocate a file/dir within the allowlist.
GET/api/file-rawserve a file with its native content type (images, etc.).
GET/api/file-readread file content for the markdown panel.
GET/api/file-searchfuzzy filename search for the @-mention file picker.
POST/api/file-uploadupload file(s) into an allowed directory.
GET/api/file-watchSSE stream of file content changes.
POST/api/file-writewrite file content from the markdown panel.
GET/api/genui/librarythe generative-UI component catalog + the mechanically
GET/api/guardrails/project-trustthe whole store
POST/api/guardrails/project-trustrecord a Trust/Preview decision.
GET/api/healthzLiveness probe — auth-exempt, returns 200 once gateway is serving HTTP.
GET/api/heartbeat/tasksevery task in HEARTBEAT.md, and whether the owner allowed it.
POST/api/heartbeat/tasks/allowthe owner’s yes to one queued task.
POST/api/hooks/agentrun an agent turn for an outside program’s call.
GET/api/inboxlist all inbox items (recency, optionally engagement-weighted).
POST/api/inbox/digeston-demand channel digest.
POST/api/inbox/dismiss-alldismiss every OPEN item (pending or seen).
GET/api/inbox/kindsitem kinds present, with open counts, for the filter chips.
POST/api/inbox/notesthe USER writes their own inbox item.
GET/api/inbox/openevery row still wanting the user (PENDING or SEEN).
GET/api/inbox/ownersowners present in the store, with counts, for the filter chips.
POST/api/inbox/proposalsan APP raises a proposal.
GET/api/inbox/providersevery message source the inbox knows, and whether it polls it.
POST/api/inbox/restartstop and reinitialize the inbox service.
POST/api/inbox/seenmark items SEEN (the read/unread boundary).
POST/api/inbox/sendsend a reply to an inbox item.
GET/api/inbox/settings(no summary)
PUT/api/inbox/settings(no summary)
GET/api/inbox/statuscurrent config status.
PUT/api/inbox/{id}update draft, status, etc.
POST/api/inbox/{id}/applyapprove (or edit-then-approve) one proposal.
GET/api/inbox/{id}/attachments/{aid}download one of a message’s attachments.
POST/api/inbox/{id}/draftgenerate draft reply on demand.
POST/api/inbox/{id}/favorite{favorited: bool} — set the favorite flag + record a
POST/api/inbox/{id}/openrecord that the user opened/read this item (a moderate
POST/api/inbox/{id}/pairlet someone new talk to your agent on the channel they wrote on.
POST/api/inbox/{id}/restoreundo a verification filter.
POST/api/inbox/{id}/sortsort a message again, after its sorting failed.
GET/api/incidentcurrent state.
POST/api/incidentactivate.
POST/api/incident/resumeturn incident mode OFF.
POST/api/investigate(no summary)
DELETE/api/knowledge/annotations/{id}drop one highlight.
POST/api/knowledge/bulkapply one curation op to many items.
GET/api/knowledge/collectionsevery shelf in rail order.
POST/api/knowledge/collectionscreate 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}/itemsresolve the shelf.
POST/api/knowledge/collections/{id}/itemsshelve one or many items.
DELETE/api/knowledge/collections/{id}/items/{item_id}unshelve one item.
GET/api/knowledge/conflictsevery recorded disagreement in the store.
GET/api/knowledge/decisionsthe 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}/annotationsthe item’s reading highlights.
POST/api/knowledge/items/{id}/annotationskeep a highlighted passage.
GET/api/knowledge/items/{id}/content- plain text for clipboard.
GET/api/knowledge/items/{id}/duplicatesnear-duplicates, best match first.
GET/api/knowledge/items/{id}/extracted- the per-item extracted-content
POST/api/knowledge/items/{id}/favoritestar 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}/mergefold another item into this one.
POST/api/knowledge/items/{id}/read-stateunread | reading | read.
POST/api/knowledge/items/{id}/regeneratethe one action the staleness banner offers.
GET/api/knowledge/items/{id}/related- nearest neighbours by embedding similarity.
GET/api/knowledge/items/{id}/relationsthe 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}/sectionsthe section boundaries a split may cut on.
GET/api/knowledge/items/{id}/stalenesshas the corpus moved under this synthesis?
GET/api/knowledge/items/{id}/thumbnail- serve a generated thumbnail (image/webp).
GET/api/knowledge/library-homethe 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/reportsevery definition, newest state as persisted.
POST/api/knowledge/reportscreate one definition.
DELETE/api/knowledge/reports/{id}remove one definition.
PUT/api/knowledge/reports/{id}update one definition.
POST/api/knowledge/reports/{id}/runrun one report NOW, by hand.
GET/api/knowledge/restructure/undorestructures that are still reversible.
POST/api/knowledge/restructure/undoreverse one applied restructure.
GET/api/knowledge/search-for-context(no summary)
GET/api/knowledge/source-recipes- the bundled source-recipe directory.
GET/api/knowledge/sourcesthe watched sources, with health, plus the kind catalog.
POST/api/knowledge/sourcessave a source, after its provider validates the spec.
POST/api/knowledge/sources/previewthe 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-treeevery 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/healththe flywheel observability panel.
GET/api/learning/identity-reportthe deterministic report, no model call.
POST/api/learning/identity-reportcompose, narrate, persist, surface.
GET/api/learning/proposalsthe 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}/acceptinstall it.
GET/api/learning/staging/weekthe week-at-a-glance capture panel.
GET/api/learning/summarythe learning summary block.
GET/api/legibility/always-onwhat every session receives, with provenance.
GET/api/legibility/always-on/docone body, verbatim, for the editor.
PUT/api/legibility/always-on/docreplace an editable project instruction.
GET/api/legibility/discoverthe curated Discover tips still worth showing.
DELETE/api/legibility/discover/dismissundo every Discover dismissal.
POST/api/legibility/discover/dismisshide a Discover tip forever.
DELETE/api/lessonsremove lessons by substring.
GET/api/lessons(no summary)
POST/api/lessonsadd a lesson to memory.db lesson.*.
GET/api/lexicon/correctionslist 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/rebuildresync graph-sourced terms from knowledge entities now
POST/api/lexicon/resetdrop all terms + corrections (the next sync repopulates the
GET/api/lexicon/termslist 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/logoutsign every dashboard session out, everywhere.
GET/api/logsSSE stream of live log entries.
GET/api/logs/levelcurrent backend logger level.
POST/api/logs/levelchange the backend logger level at runtime.
GET/api/loopsEVERY 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/validatedeterministic 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}/conflictthe 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/tokensthe RESOLVED token tree
POST/api/loops/{id}/grill-treeguided-decomposition intake (grill’s tree
GET/api/loops/{id}/kept-workthe 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}/mergethe 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-sessionthe 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/retryclear a recorded design failure + re-run the
POST/api/loops/{id}/plan/startbegin (or resume) the walkthrough.
POST/api/loops/{id}/queue{task_ids, action: queue|unqueue} — queue tasks for
GET/api/loops/{id}/reportthe document deliverable + working log. report
GET/api/loops/{id}/streamper-loop live SSE; replays a snapshot on connect.
GET/api/manifestthe machine-readable self-description of this instance.
GET/api/mcplist configured MCP servers with enabled state.
GET/api/mcp/activereturn MCP servers for the current agent.
POST/api/mcp/applybatched per-scope apply for MCP servers.
GET/api/mcp/importableMCP servers configured in an external backend
GET/api/mcp/oauth/callbackwhere an authorization server sends the browser back to.
GET/api/mcp/pool-statsthe in-process MCP connection-pool observability tile.
GET/api/mcp/probereturn cached probe results (non-blocking): each switched-on server
POST/api/mcp/probeprobe 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}/allowthe owner’s yes to a server that waits for it.
DELETE/api/mcp/servers/{name}/read-only-trustthe owner’s trust in its labels.
POST/api/mcp/servers/{name}/read-only-trustthe owner’s trust in its labels.
DELETE/api/mcp/servers/{name}/sign-insign in to a remote server, or sign out.
POST/api/mcp/servers/{name}/sign-insign in to a remote server, or sign out.
POST/api/mcp/syncapply MCP config changes and restart sessions.
POST/api/mcp/toggleenable or disable an MCP server globally.
POST/api/mcp/toggle-allenable or disable all MCP servers.
POST/api/mcp/toggle-toolenable or disable a specific tool in an MCP server.
GET/api/memory/approval-rulesthe triage approval rules, with provenance.
POST/api/memory/approval-rulesteach one approve/deny rule.
DELETE/api/memory/approval-rules/{key}revoke one rule.
POST/api/memory/consolidatetrigger immediate consolidation for testing.
GET/api/memory/context-previewpreview what gets injected into prompts.
GET/api/memory/daily-digeststhe per-day rollup nodes,
GET/api/memory/entitiesthe entity set with inbound-link counts.
POST/api/memory/entitiesdeclare an entity, then re-link the store.
GET/api/memory/entities/proposalsthe accept queue.
POST/api/memory/entities/proposalsaccept or reject a proposed entity.
DELETE/api/memory/entities/{entity_id}remove a hand-declared entity.
GET/api/memory/entities/{entity_id}/backlinkswhat mentions this entity.
GET/api/memory/episodicpaginated list of episodic memories.
GET/api/memory/episodic/searchsearch episodic memories.
DELETE/api/memory/episodic/{id}tombstone an episodic memory.
GET/api/memory/eventspaginated audit trail.
POST/api/memory/events/{event_id}/undoreverse a logged memory mutation.
GET/api/memory/facetsevery preference facet WITH its key, state and decay.
POST/api/memory/facets/{key}/forgetretire a facet. FINAL.
POST/api/memory/facets/{key}/pinhold a facet at full stability, or release it.
GET/api/memory/graphreturn all memory as nodes + edges for graph visualization.
GET/api/memory/graph/entitiesthe entity topology.
GET/api/memory/graph/exportthe entity graph as ONE self-contained HTML file.
POST/api/memory/graph/rebuildseed entities, then link every record.
GET/api/memory/historythe 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/importimport memory from JSON (export format).
GET/api/memory/lintrun the memory-health sweep, return its report.
POST/api/memory/migratemigrate legacy markdown memory to vector store.
GET/api/memory/observabilitymemory health metrics and context preview.
GET/api/memory/partitionsevery 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/promotepromote repeated episodic patterns to semantic facts.
GET/api/memory/recalldeep on-demand recall for the agent.
GET/api/memory/record-linksone record’s entity links.
GET/api/memory/semanticlist all semantic memory entries.
PUT/api/memory/semanticcreate/update a semantic entry.
DELETE/api/memory/semantic/{key}tombstone a semantic entry.
GET/api/memory/settingsmemory consolidation config.
PUT/api/memory/settingsmemory consolidation config.
GET/api/memory/slotsevery slot with its lines, budget and live size.
POST/api/memory/slots/{name}/linesappend one line.
POST/api/memory/slots/{name}/lines/retiretombstone a line as the HUMAN.
GET/api/memory/statsmemory system statistics.
GET/api/memory/vaultthe readable-vault status (mode, path, file count).
POST/api/memory/vault/syncreconcile the vault against the store.
GET/api/memory/volunteer-statsper-arm volunteered-vs-used precision.
GET/api/model-provider-typesinstallable model-provider types.
GET/api/model-providersevery configured model-provider instance.
POST/api/model-providersadd 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}/modelslist available models for a provider entry.
POST/api/model-providers/{name}/models/deletedelete a local model.
POST/api/model-providers/{name}/pullpull (download) a model.
GET/api/model-providers/{name}/searchsearch a provider’s
GET/api/model-providers/{name}/showrich model metadata.
POST/api/model-providers/{name}/testtest provider connectivity.
GET/api/models/activeactive models per use-case.
PUT/api/models/active/{use_case}set the active model CHAIN for a use-case.
GET/api/models/availablediscover models from all configured providers.
GET/api/models/chatchat models for dropdowns (the one model list).
GET/api/models/downloadslive + recently-finished download jobs.
POST/api/models/downloadsstart a download. Body: {provider, model}.
POST/api/models/downloads/cleanupdelete the partial-download leftovers.
GET/api/models/downloads/cleanup-candidatespartial-download leftovers.
DELETE/api/models/downloads/{id}cancel and detach a download job.
GET/api/models/downloads/{id}/streamper-job progress SSE.
GET/api/models/embedding/reindexlive + recently-finished jobs.
POST/api/models/embedding/reindexstart a re-index of all embeddings.
GET/api/models/embedding/reindex/{id}/streamper-job progress SSE.
GET/api/models/healthderived per-provider health (breaker state, latency
DELETE/api/models/hf-tokenclear the managed token (SOURCE 1). SEL-audited by name.
PUT/api/models/hf-tokenwrite the token to SOURCE 1 (the credential store).
GET/api/models/hf-token/statusper-source {present, valid, username, masked, active}.
GET/api/models/loadedevery resident model + the memory-pressure snapshot.
GET/api/models/local/{provider}/searchsearch a searchable provider’s
DELETE/api/models/local/{provider}/{model}delete a downloaded local model.
DELETE/api/models/ratesreset your price for one key, so the model’s default
GET/api/models/ratesthe rates you set, and what each bound or recent model costs.
PUT/api/models/ratesset your price for one key, a model a known price is listed for
GET/api/models/routing-policythe inspectable routing table.
PUT/api/models/routing-policyset one of the three user levers.
GET/api/models/routing-proposalsthe propose-don’t-write review queue.
DELETE/api/models/routing-proposals/{id}decline it, and remember the decision.
POST/api/models/routing-proposals/{id}/acceptapply it to the table.
DELETE/api/models/sidecar/{provider}/installremove a CORE-created venv.
POST/api/models/sidecar/{provider}/installstart the resumable install.
GET/api/models/sidecar/{provider}/install/statusthe rich install poll shape.
GET/api/models/telemetryper-model efficiency rows.
POST/api/models/testTest 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/waitsthe requests waiting for a busy local model, oldest first.
POST/api/models/waits/{id}/move-onstop a wait now, so its next model answers.
DELETE/api/notificationsdelete a single notification by timestamp.
GET/api/notificationsthe delivery log, newest first, and how many of ITS rows are unread.
POST/api/notifications/ackmark a single notification as read.
POST/api/notifications/ack-allmark all notifications as read.
POST/api/notifications/clearclear all notifications.
GET/api/notifications/rulesthe effective per-(source, kind) rule matrix.
PUT/api/notifications/rulesreplace rules for the keys named in the body.
GET/api/notifications/settings(no summary)
PUT/api/notifications/settings(no summary)
POST/api/notifications/trustthe owner’s Allow or Deny on an unknown-sender notification.
POST/api/notifications/unackmark a single notification as unread.
GET/api/onboardingFirst-run onboarding signal — model readiness plus persisted flow progress.
GET/api/onboarding/importwhat each source holds, and what importing each item does.
POST/api/onboarding/importstart importing the picked items.
DELETE/api/onboarding/import/jobstop the running import after the item it is on.
GET/api/onboarding/import/jobthe running or last import, and its report once finished.
GET/api/onboarding/import/streamstatus frames: the reading pass and the import.
GET/api/onboarding/local-modelis a local Ollama reachable on localhost?
POST/api/onboarding/local-model/bindcredential-free setup of an endpoint.
POST/api/onboarding/local-model/scanopt-in LAN sweep for an Ollama.
GET/api/onboarding/model-checkdid a chat provider actually build?
POST/api/onboarding/stateRecord first-run progress — a partial merge into the onboarding entity state.
POST/api/optimizer/optimizerewrite a prompt using session context.
GET/api/outboxlist files in the outbox.
POST/api/outbox/notifyagent sent a file, notify the user.
GET/api/outbox/{filename}download a file from the outbox.
GET/api/packs/bundledList the Domain OS packs shipped in this build.
POST/api/packs/bundled/{name}/installBuild a shipped Domain OS pack and import it through the pack import pipeline.
GET/api/packs/installedList installed packs with connector-resolution, roster + setup-binding state.
POST/api/packs/one-linkImport a one-link JSON document through the same import pipeline.
POST/api/packs/prompt-cardImport a pasted prompt card — files a proposal, writes no entity.
GET/api/packs/proposalsThe propose-only fingerprint cards — an ON-DEMAND scan. Writes nothing.
POST/api/packs/proposals/rejectRemember that this project’s user does not want this pack — the never-re-nag write.
POST/api/packs/{name}/bindingsRecord one setup-interview answer — the folder the pack will read.
POST/api/packs/{name}/finish-setupReturn a pack’s re-runnable setup interview (the “Finish setup” chip).
POST/api/packs/{name}/roster/deployOne-click team deploy: promote a pack’s always roster tier.
POST/api/packs/{name}/triggers/deployAdd a pack’s staged triggers to Automations — DISABLED.
POST/api/packs/{name}/uninstallUninstall a pack, never a copy you edited. DRY-RUN unless confirm is true.
POST/api/packs/{name}/updateThe pack_owned update flow. DRY-RUN unless confirm is true.
GET/api/proactive/digestthe digest card, assembled from the last digest run.
POST/api/proactive/digest/replyone tap or one typed reply. Body {run_id, text}.
POST/api/proactive/installthe pack card. Idempotent; also the reconcile.
GET/api/projects(no summary)
POST/api/projects(no summary)
POST/api/projects/importimport a project archive (multipart file).
GET/api/projects/settingsthe user’s default project ("" when none).
PUT/api/projects/settingsset 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}/exportdownload one project as a manifest ZIP.
GET/api/projects/{project_id}/linkedthe work units scoped under this
GET/api/projects/{project_id}/workthe state-grouped Work board.
POST/api/projects/{project_id}/work/claimtake a TTL’d claim on one board row.
POST/api/projects/{project_id}/work/releaserelease a claim you hold.
GET/api/prompt-snippetslist reusable snippets via the provider.
POST/api/prompt-snippetscreate 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}/renderpreview a snippet standalone.
GET/api/promptslist prompt templates via the provider.
POST/api/promptscreate a new prompt template via the registered provider.
GET/api/prompts/bindingswhich prompt serves each runtime use-case.
PUT/api/prompts/bindingsset the prompt bound to one use-case.
POST/api/prompts/previewrender ARBITRARY (unsaved) template content
GET/api/prompts/syntaxthe 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}/renderrender a prompt template with the
GET/api/providers(no summary)
GET/api/providers/{name}(no summary)
POST/api/providers/{name}/availabilitymeasure 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}/testtest connectivity.
GET/api/providers/{name}/schema(no summary)
GET/api/pushThe subscribe-side facts: backend, VAPID public key, which devices are subscribed.
POST/api/push/relay-registerStore one device’s vendor push-service token for the relay backend, and route approvals.
POST/api/push/relay-unregisterDrop one device’s relay token.
POST/api/push/subscribestore one device’s W3C push subscription, and route approvals to it.
POST/api/push/unsubscribedrop one device’s push subscription.
GET/api/recent-projectslist recently used project directories.
GET/api/resilience/degradedper-surface no-model floor + availability.
POST/api/revealreveal a file/folder in Finder or open with default app.
GET/api/roomsevery 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}/archivearchive a room. Idempotent.
POST/api/rooms/{room_id}/continuefinish an interrupted round.
GET/api/rooms/{room_id}/exportthe 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/providersthe sandbox tiers the terminal picker offers.
POST/api/screenshotcapture screen region and return file path.
GET/api/search/activebound provider name per use-case.
PUT/api/search/active/{use_case}bind a provider to a use-case.
GET/api/search/providersregistered providers + capabilities + state.
POST/api/search/providers/{name}/testrun one small search through the provider now.
DELETE/api/secretsremove one secret from the vault.
GET/api/secretsthe vault, presence only.
POST/api/secretsstore one secret’s value. The response carries presence, not the value.
GET/api/security/audita cursor-paginated page of filtered security events.
GET/api/security/audit/verifyHMAC-chain verification over the audit log.
GET/api/security/credentialswhere the instance’s secrets are stored.
POST/api/security/credentials/migratemove .env secrets into the keychain.
POST/api/security/credentials/rollbackrestore the pre-migration .env.
GET/api/security/denied-commandsthe bash denylist for the Security panel.
GET/api/security/egressthe operator’s outbound-egress overrides for the
GET/api/security/outside-homethe places outside the home it may be allowed to read.
GET/api/security/statslive security feature counts.
POST/api/sel/rotatearchive existing SEL log and start a fresh chain.
POST/api/send-messagedeliver a message to the messaging channel and/or dashboard.
POST/api/session-keepalivea waiting tool’s check-in, which keeps its session alive.
GET/api/session-tool-policyreturn managedToolPolicy for the
GET/api/session/archivelist archive files for a session key.
GET/api/session/archive/{name}read a single archive file as JSONL text.
DELETE/api/sessionspermanently delete closed history sessions only, as Delete does.
GET/api/sessionslist conversation session files.
GET/api/sessions/contextcontext usage for all active sessions.
GET/api/sessions/healthsessions flagged as stalled from log scan.
GET/api/sessions/recallwhat your earlier chats said, searched for your agent.
POST/api/sessions/restartreset all ACP agent sessions.
GET/api/sessions/retag-allthe current/last job (for UI hydration).
POST/api/sessions/retag-allstart (or return) the batch re-tag job.
POST/api/sessions/retag-all/cancelcancel the in-flight job.
GET/api/sessions/searchcontent search across session transcripts.
GET/api/sessions/{id}/agentslist sub-agent results for a session.
GET/api/sessions/{id}/agents/{agent_id}read sub-agent result.
GET/api/sessions/{id}/agents/{agent_id}/streamSSE 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/skillsevery skill agents get, each row the copy they get.
POST/api/skillscreate a new skill.
POST/api/skills/bundled/keepkeep the owner’s copy over a bundled skill’s newer version.
POST/api/skills/bundled/updateuse 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}/promotepromote ONE draft to a tier.
DELETE/api/skills/ephemeral/{session}/{slug}forget one draft, or
POST/api/skills/installinstall a skill from a marketplace into the home.
GET/api/skills/marketplace/detail(no summary)
GET/api/skills/marketplaceslist registered skill marketplaces.
POST/api/skills/overlay/revertrevert accepted refinements of a skill.
GET/api/skills/proposalsthe 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}/acceptrefine the skill it names, or add it as a skill.
GET/api/skills/searchsearch 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}/filesprovider-backed file browser.
POST/api/skills/{name}/verifycompare one skill with its install record.
GET/api/slash-commandsthe slash commands the composer ”/” menu offers.
DELETE/api/spawnclear all completed subagents.
GET/api/spawnthe caller’s own chat’s subagents, and every chat’s for you.
POST/api/spawnspawn a subagent.
POST/api/spawn/cancel-fanoutkill 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/ffmpegthe ffmpeg transcription runs, or why there is none.
POST/api/stt/transcribetranscribe uploaded audio via the active STT model.
GET/api/suggestionsthe suggestions there are now, at once.
GET/api/surfaces/overlaysthe user/agent (L2) overlays, plus named refusals.
GET/api/systemSystem information endpoint with live CPU, memory, network metrics.
POST/api/system/restartbounce 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}/resetreset a Repeatable-project list so it can be run
GET/api/tasks(no summary)
POST/api/tasks(no summary)
POST/api/tasks/bulkvalidate-all-then-apply bulk create/update/delete.
GET/api/tasks/graphadjacency + DependencyAnalysis.
GET/api/tasks/providers(no summary)
GET/api/tasks/readytasks startable now (no unfinished prerequisites).
POST/api/tasks/searchquery + 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/sessionslist active terminal sessions.
POST/api/terminal/sessionscreate a new terminal session (returns session_id).
DELETE/api/terminal/sessions/{session_id}kill a terminal session.
GET/api/themeslist all custom themes, sorted by creation date.
POST/api/themescreate 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/localissue a token for the CLI, a script or a local app.
GET/api/toolsReturn all tools from all active tool sources.
GET/api/tools/groupsthe tool-GROUP partition.
POST/api/tools/invokeexecute one tool through the Tool entity.
POST/api/tools/provider-toggleenable/disable a whole NATIVE tool provider.
GET/api/tools/savingsthe TokenJuice savings (counterfactual) summary.
POST/api/tools/toggleenable/disable a native-provider tool.
GET/api/triggersevery trigger.
POST/api/triggerscreate a schedule, lifecycle or data-event trigger.
GET/api/triggers/doctorstructural problems across every trigger.
GET/api/triggers/historythe run feed across every kind.
POST/api/triggers/restore-hold/resumeResume all: every automation a restore holds.
GET/api/triggers/reviewwhat a restart left for you to decide.
POST/api/triggers/reviewdecide one of them.
GET/api/triggers/variablesthe $variables each trigger kind exposes.
POST/api/triggers/view/renderthe view kind’s production render caller.
GET/api/triggers/weekthe week-grid projection, from ?start=.
DELETE/api/triggers/{id}delete a trigger.
PUT/api/triggers/{id}update a trigger.
POST/api/triggers/{id}/answeranswer the question a trigger’s action stopped on.
POST/api/triggers/{id}/firefire a webhook automation for an outside program.
GET/api/triggers/{id}/historyrun records; other kinds answer supported: false.
GET/api/triggers/{id}/history/{run_id}one full run record.
POST/api/triggers/{id}/runrun it now.
POST/api/triggers/{id}/testexecute a lifecycle trigger’s action once.
POST/api/triggers/{id}/to-chatopen a schedule trigger as a chat session.
POST/api/triggers/{id}/toggleenable/disable.
POST/api/triggers/{id}/workflow-version{version, steps} — Use vN: run newer versions.
POST/api/updatemove this install to its release, the way it was installed.
POST/api/update/cancelstop the update in progress, and say what that left.
GET/api/update/checkthe update status, checking only when an automatic check is due.
POST/api/update/checkcheck for updates once, now, even with automatic checks off.
POST/api/update/dismissclose what the update progress says an update ended with.
POST/api/update/simulatewalk through update steps with delays.
POST/api/uploadopen native file picker and return selected paths.
POST/api/upload/filecross-platform multipart file upload.
POST/api/uploads/init{filename, size, mime, target[, path]} → session.
GET/api/uploads/limitsper-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}/completeassemble + scan + hand off to the target.
PUT/api/uploads/{id}/partstream one part to disk (idempotent).
GET/api/usagethe per-day spend fold.
GET/api/usage/budgettoday’s metered spend beside the daily cap it is held to.
GET/api/usage/rollupaggregated ledger rows.
GET/api/usage/totalsthe grand total over the window.
DELETE/api/voice/bindingsunbind one surface.
GET/api/voice/bindingsthe 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/profilesevery 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}/consentdelete the recording, clear the fields.
POST/api/voice/profiles/{id}/consent{consent_text}.
POST/api/voice/profiles/{id}/consent/verifyrecompute from the artifacts.
POST/api/voice/profiles/{id}/lock{history_index} — pin seed + locked.wav.
POST/api/voice/profiles/{id}/unlockvariation returns.
GET/api/voice/resolvewhich level wins, and why.
POST/api/voice/synthesizesentence-chunked Piper TTS.
GET/api/workflows(no summary)
POST/api/workflowsvalidate a definition and, unless save: false, save it.
POST/api/workflows/agent-plansan agent’s workflow_plan, planned here.
POST/api/workflows/agent-savessave an agent’s workflow, or ask its owner to allow it.
GET/api/workflows/attentionper-template attention summaries.
GET/api/workflows/auditDiagnose/heal. dry_run defaults TRUE — a GET-shaped repair that ran by default
POST/api/workflows/batchesstart a batch subagent_run compiled (batch_start).
GET/api/workflows/batches/{name}where a subagent_run batch stands (batch_start).
GET/api/workflows/manifestthe machine-readable self-description of this instance.
GET/api/workflows/runsPaginated 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}/confirmResolve a pending confirmation by verb — the seam the DagView’s Approve/Deny binds to.
GET/api/workflows/runs/{run_id}/continuationsThe pending resume tokens for a run — what a needs-input inbox renders.
GET/api/workflows/runs/{run_id}/deliverableGET the run’s document deliverable + working log.
GET/api/workflows/runs/{run_id}/dropGET the run’s file-drop policy + what has been dropped.
POST/api/workflows/runs/{run_id}/dropPOST multipart to the run’s approval-gated file drop.
POST/api/workflows/runs/{run_id}/edit(no summary)
GET/api/workflows/runs/{run_id}/eventsPer-run event stream, snapshot-then-subscribe.
POST/api/workflows/runs/{run_id}/fork(no summary)
GET/api/workflows/runs/{run_id}/introspectThe nine-question introspection projection for one run.
GET/api/workflows/runs/{run_id}/ledger-railsGET the run’s two ledger rails — findings and verdict/ROI.
GET/api/workflows/runs/{run_id}/nodes/{node_id}/inspectThe reconstructability set for one node, live while the run is.
GET/api/workflows/runs/{run_id}/observewatch a run for a bounded window, and answer what
GET/api/workflows/runs/{run_id}/outboxGET 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-overridesPUT the run’s sparse SupervisorPolicy overlay — prelaunch only.
POST/api/workflows/runs/{run_id}/resumeAnswer a gate, or clear a pause.
GET/api/workflows/runs/{run_id}/reviewGET this run’s review findings, anchored against its workspace diff as it is right now.
POST/api/workflows/runs/{run_id}/review/triagePOST 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}/startStart an existing DRAFT run — the launch a forked run had no verb for (#372).
POST/api/workflows/runs/{run_id}/steerPOST a mid-run steering instruction.
GET/api/workflows/runs/{run_id}/steeringGET what is queued but unconsumed — so the UI can show it as pending.
GET/api/workflows/runs/{run_id}/workspaceGET the run’s workspace review: changed files + the two reintegration verbs.
GET/api/workflows/surfacingThe 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-publishthe template detail UI’s publish toggle.
GET/api/workflows/{name}/automationsthe automations that run it, and each one’s version.
GET/api/workflows/{name}/ledgerrecent runs of this template with their ledger totals.
POST/api/workflows/{name}/refinefire the refiner over this template on demand.
GET/api/workflows/{name}/trajectoryThe trajectory-signature distribution and regression signal for one template.
GET/api/workflows/{name}/versionsthe version history, who saved each, and the maturity.
GET/api/workflows/{name}/versions/diffthe typed-op diff between two versions.
GET/api/workflows/{name}/versions/{version}one recorded version’s full definition.

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.

MethodPathSummary
POST/actioninvoke one semantic action (control bridge, loopback).
GET/actionsthe self-describing action catalogue (control bridge, loopback).
GET/api/wssingle multiplexed WebSocket for all real-time events.
GET/api/ws/terminal/{session_id}WebSocket PTY for the built-in CLI panel.
POST/confirmrefused, always: only you confirm a control-bridge action.
GET/mcp405 while the surface serves (no SSE stream in v1, spec-permitted).
POST/mcp(no summary)

See also: API overview · Configuration reference · CLI reference