Skip to content

API overview

The gateway serves a REST + WebSocket API on the dashboard port (default 10000). All routes live under /api/* and require authentication (token or local-network bypass, depending on your auth mode) — see personalclaw token for a tokenized URL.

Route registrations live in src/personalclaw/dashboard/server.py plus per-domain handler modules (dashboard/handlers/, tasks/handlers.py, workflows/handlers.py, artifacts/handlers.py, lexicon/handlers.py, providers/*_routes.py). This page lists every route with a one-liner; the handler docstrings are the authoritative per-route contract.

Method + pathWhat it does
GET /api/healthzLiveness probe.
GET /api/statusRuntime stats (uptime, sessions, counters).
GET /api/systemHost/system information.
GET /api/auth-statusCurrent auth mode + caller identity.
GET /api/onboardingFirst-run onboarding state.
GET /api/token/localMint a local dashboard access token (loopback only).
POST /api/logoutRevoke all active dashboard sessions.
GET /api/wsThe main WebSocket (chat streaming + event fan-out).
GET /api/logs · GET/POST /api/logs/levelRead gateway logs; get/set log level.
POST /api/system/restartRestart the gateway process.
GET /api/suggestionsPrecomputed dashboard suggestion cards.
GET /api/changelogChangelog for the update panel.
GET /api/update/check · POST /api/update · POST /api/update/auto · POST /api/update/cancel · POST /api/update/simulateCore self-update: check, apply, toggle unattended mode, cancel, dry-run.
GET /api/design/tokens/defaultDefault design-token set.
Method + pathWhat it does
POST /api/chatSend a message (creates a session if needed).
GET/POST /api/chat/sessionsList sessions / create one.
GET /api/chat/sessions/{session}Session detail + transcript.
DELETE /api/chat/sessions/{session}Delete a session.
POST /api/chat/sessions/cleanupBulk-clean stale sessions.
GET /api/chat/sessions/{session}/tool-result/{rid}Fetch a stored full tool result.
POST /api/chat/sessions/{session}/stop · .../interruptSoft-stop / interrupt the running turn.
DELETE /api/chat/sessions/{session}/queue/{queue_id}Remove a queued message.
POST /api/chat/sessions/{session}/agent · .../acp-agentSwitch the session’s agent / ACP agent.
POST /api/chat/sessions/{session}/model · .../reasoning-effortPer-session model / reasoning-effort override.
POST /api/chat/sessions/{session}/workspace-dirChange the session working directory.
POST /api/chat/sessions/{session}/contextInject context into the session.
POST /api/chat/sessions/{session}/fork · .../undo · .../dropFork the session; undo the last turn; drop from the sidebar.
POST /api/chat/sessions/{session}/resume · .../approveResume an archived session; answer a tool-approval prompt.
POST /api/chat/sessions/{session}/regenerate · .../switch-variant · .../edit-resendRegenerate an answer; switch answer variant; edit + resend a message.
POST /api/chat/sessions/{session}/generate-title · PATCH .../titleAuto-generate / set the title.
PATCH /api/chat/sessions/{session}/color · .../folder · .../pinSet color; move to folder; pin.
PUT /api/chat/sessions/{session}/tagsSet session tags.
POST /api/chat/sessions/{session}/side/open · .../side/turn · .../side/closeSide-conversation lifecycle.
POST /api/chat/sessions/{session}/handoff · .../channel-linkHand a chat off to a channel; link to a channel thread.
POST /api/chat/mode · POST /api/chat/task-modeSet chat mode / task mode.
POST /api/chat/nav/resolve-linksResolve internal navigation links in messages.
GET/POST /api/chat/folders · PATCH/DELETE /api/chat/folders/{id}Chat folder CRUD.
GET/POST /api/chat/tags · PATCH/DELETE /api/chat/tags/{id}Chat tag CRUD.
GET/POST /api/chat/tag-columns · PUT .../order · PATCH/DELETE .../{id}Kanban tag-column CRUD + ordering.
POST /api/sessions/retag-all · GET .../retag-all · POST .../retag-all/cancelBulk re-tagging job control.
GET /api/session/archive · GET /api/session/archive/{name}Archived transcript listing / detail.
GET /api/sessions · DELETE /api/sessions · GET/DELETE /api/sessions/{key}Low-level session store listing / deletion.
GET /api/sessions/context · .../health · .../search · POST .../restartSession context stats; health; full-text search; restart.
GET /api/sessions/{id}/agents · GET /api/sessions/{id}/agents/{agent_id}Multi-agent (space) roster within a session.
POST /api/send-messageDeliver a message to a channel (generic outbound).
POST /api/session-keepalive · GET /api/session-tool-policyKeep a session warm; read the session’s tool policy.
POST /api/optimizer/optimizePrompt-optimizer pass over a draft message.
GET /api/recent-projectsRecently used workspace directories.
Method + pathWhat it does
GET/POST /api/agents · PUT/DELETE /api/agents/{name}Agent profile CRUD (config-backed).
GET /api/agents/installedInstalled/connected agent runtimes.
POST /api/agents/syncRe-sync agent definitions.
GET/PATCH/DELETE /api/agents/detail/{name}Rich agent detail (merged profile + metadata).
GET/PUT/DELETE /api/agent-metadata/{name}Per-agent markdown metadata store.
GET /api/agent-providers · GET /api/agent-providers/{id}/agentsConnected agent-runtime providers and their agents.
GET /api/agent-marketplace/marketplaces · GET/POST /api/agent-marketplace/agents · GET/PUT/DELETE .../agents/{name} · POST .../agents/{name}/activate · POST .../agents/{name}/testAgent marketplace: browse, install, manage, activate, test.
GET/PUT /api/agent/configLegacy whole-agent-config get/put.
GET/PUT /api/config/default-agentGet/set the default agent.
GET /api/agent-hooksRegistered agent lifecycle hooks.
GET /api/slash-commandsAvailable slash commands for the composer.
Method + pathWhat it does
GET/POST /api/spawn · GET/DELETE /api/spawn/{agent_id} · DELETE /api/spawnBackground subagents: list, spawn, status, cancel one/all.
GET/POST/DELETE /api/lessonsLearned corrections (the learn store).
GET/POST /api/autonudge · GET .../session/{session_name} · PATCH/DELETE .../{loop_id}Autonudge (same-session self-prompting) loops.
Method + pathWhat it does
GET /api/models/available · GET /api/models/active · PUT /api/models/active/{use_case}Model catalog; per-use-case bindings (chat/background/embedding/…).
GET /api/models/chatModels eligible for the chat picker.
GET/PUT /api/models/use-cases/{use_case}/settingsPer-use-case settings (e.g. STT/TTS options).
GET/POST /api/models/downloads · GET .../{id}/stream · DELETE .../{id}Local-model downloads (start, progress stream, cancel).
GET /api/models/local/{provider}/search · DELETE /api/models/local/{provider}/{model}Search a local provider’s catalog; delete a downloaded model.
GET/POST /api/models/embedding/reindex · GET .../{id}/streamEmbedding re-index jobs + progress stream.
GET/POST /api/model-providers · PUT/DELETE .../{name} · POST .../{name}/testModel-provider instances CRUD + connection test.
GET /api/model-providers/{name}/models · .../search · .../show · POST .../pull · POST .../models/deleteProvider model listing/search/detail; pull + delete (local runtimes).
GET /api/providers · GET .../{name} · GET .../{name}/schema · GET/PATCH .../{name}/config · POST .../{name}/enable · POST .../{name}/disableInstalled extension providers: listing, config schema, config, enable/disable.
GET/POST /api/providers/{name}/instances · GET/PUT/DELETE .../{id} · POST .../{id}/testMulti-instance providers (several accounts/endpoints of one type).
GET /api/search/providers · GET /api/search/active · PUT /api/search/active/{use_case}Search providers + per-use-case search bindings.
GET /api/action-providersRegistered action providers.
Method + pathWhat it does
GET /api/skills · POST /api/skills · GET/PUT /api/skills/{name:.+} · DELETE /api/skills/{name}Installed skills CRUD.
GET /api/skills/{name}/files · POST /api/skills/{name}/verifySkill file listing; hash-verify against the install baseline.
GET /api/skills/marketplaces · GET /api/skills/search · GET /api/skills/marketplace/detail · POST /api/skills/installMarketplace browse/search/detail/install (supply-chain scanned).
GET /api/skills/ephemeral/{session} · POST .../promote · DELETE .../{slug}Session-scoped ephemeral skills: list, promote to permanent, discard.
GET /api/skills/proposals · GET .../{id} · POST .../{id}/accept · DELETE .../{id}Skill proposals inbox (from the learning ladder).
Method + pathWhat it does
GET/POST /api/knowledge/items · GET/PATCH/DELETE .../items/{id}Knowledge item CRUD.
POST /api/knowledge/ingest · GET .../items/{id}/ingest/streamIngest a source; stream ingestion progress.
GET .../items/{id}/content · .../file · .../thumbnail · .../extractedItem content, original file, thumbnail, extracted text.
POST .../items/{id}/generate-intelligence · POST /api/knowledge/regenerate-intelligence(Re)generate AI enrichment for one/all items.
GET .../items/{id}/graph · .../related · .../intentsItem-scoped graph, related items, matching intents.
GET /api/knowledge/tags · .../providers · .../statsTags, connected source providers, store stats.
GET /api/knowledge/entities · .../entities/{id}/graph · .../entities/by-name/{name}/items · .../by-name/{name}/relatedExtracted entities + entity-centric graph/lookups.
GET /api/knowledge/graphWhole-store knowledge graph.
GET/POST /api/knowledge/intents · DELETE .../{id} · GET .../{id}/outcomes · POST .../{id}/run · POST .../{id}/generate-skillStanding intents: CRUD, run, outcomes, skill generation.
GET /api/knowledge/embedding/status · POST .../generateEmbedding coverage status; backfill embeddings.
GET /api/knowledge/search-for-contextSemantic search used for chat context injection.
GET/POST /api/lexicon/terms · PATCH/DELETE .../{id} · POST /api/lexicon/rebuild · POST /api/lexicon/resetPersonal lexicon (STT bias terms) CRUD + rebuild/reset.
GET/POST /api/lexicon/corrections · PATCH .../{id}Transcription corrections.
Method + pathWhat it does
GET/PUT /api/memory/preferences · .../projects · .../historyMarkdown memory sections (preferences, projects, history).
GET/PUT /api/memory/settingsMemory behavior toggles + consolidation tuning.
GET/PUT /api/memory/semantic · DELETE .../{key:.+}Semantic (key-value) memory.
GET /api/memory/episodic · .../episodic/search · DELETE .../episodic/{id}Episodic memory listing/search/delete.
GET /api/memory/recallUnified recall query (what the agent’s memory_recall tool uses).
GET /api/memory/events · POST .../events/{event_id}/undoMemory-write audit trail + undo.
GET /api/memory/stats · .../lint · .../observability · .../graph · .../context-preview · .../daily-digestsStore stats, lint findings, recall observability, graph, context preview, digests.
POST /api/memory/consolidate · .../promote · .../migrate · .../importForce consolidation; promote episodic→semantic; migrate legacy; import JSON.
GET /api/memory/embedding-status · .../embedding-models · POST .../enable-embeddings · .../disable-embeddings · .../activate-model · .../delete-modelMemory embedding management.
GET /api/memory/vault · POST .../vault/syncObsidian-style vault status; force re-sync.
Method + pathWhat it does
GET/POST /api/tasks · GET/PUT/DELETE /api/tasks/{task_id}Task CRUD.
GET /api/tasks/graph · .../ready · .../providersDependency graph; unblocked tasks; task providers.
POST /api/tasks/search · POST /api/tasks/bulkSearch; bulk operations.
GET/POST /api/tasks/{task_id}/commentsTask comments.
GET/POST /api/projects · GET/PUT/DELETE /api/projects/{project_id} · GET .../linkedProject CRUD + linked entities.
GET/POST /api/task-lists · GET/PUT/DELETE .../{list_id} · POST .../{list_id}/resetTask lists (checklists) + reset.
GET/POST /api/workflows · GET/PUT/DELETE /api/workflows/{workflow_id}Workflow (SOP) CRUD.
GET /api/workflows/{workflow_id}/graph · POST .../promoteWorkflow DAG view; promote a draft.
GET /api/workflows/providers · POST /api/workflows/preview-match · GET .../used-by/{agent}Providers; test which workflow a message would surface; reverse usage.
Method + pathWhat it does
GET/POST /api/loops · GET/PUT/PATCH/DELETE /api/loops/{id}Goal-loop CRUD.
POST /api/loops/validate · POST /api/loops/classifyValidate a loop spec; classify goal kind.
GET /api/loops/{id}/report · .../streamLoop report; live event stream.
POST /api/loops/{id}/nudge · .../queue · .../autopilotNudge the worker; queue guidance; toggle autopilot.
GET /api/loops/{id}/plan-session · POST .../plan/start · .../plan/retry · .../plan/approve · .../plan/comment · .../plan/editPlanning-phase lifecycle (plan, review, approve).
POST /api/loops/{id}/grill-treeGenerate the assumption grill-tree for a loop.
GET /api/loops/{id}/design/tokensLoop-scoped design-token overrides (design loops).
Method + pathWhat it does
GET/POST /api/triggers · PUT/DELETE /api/triggers/{id}Trigger (schedule/webhook/lifecycle) CRUD.
POST /api/triggers/{id}/toggle · .../run · .../test · .../ack · .../to-chatEnable/disable; fire now; dry-run; acknowledge; convert result to chat.
GET /api/triggers/history · GET /api/triggers/{id}/history · GET .../history/{run_id}Run history (global, per-trigger, per-run).
GET /api/triggers/variablesTemplate variables available to trigger messages.
POST /api/hooks/agentRun an agent turn from an external webhook (token-authenticated).
Method + pathWhat it does
GET /api/inbox · .../pending · .../status · .../digest · .../providersInbox listing, pending count, service status, AI digest, sources.
PUT /api/inbox/{id} · POST .../{id}/draft · .../{id}/open · .../{id}/favoriteUpdate an item; AI-draft a reply; mark opened; favorite.
POST /api/inbox/send · POST /api/inbox/dismiss-all · POST /api/inbox/restartSend a reply; bulk dismiss; restart the poll service.
GET/PUT /api/inbox/settingsInbox entity settings (alerts, retention, ranking).
GET /api/channels · GET /api/channels/{name} · POST .../connect · .../disconnect · .../testChannel providers: list, detail, connect/disconnect, test.
GET /api/channels/reply-targetsChannels/threads a reply can be routed to.
POST /api/channel/profile · POST /api/channel/upload-fileResolve a channel user profile; upload an attachment to a channel.
GET /api/notifications · DELETE /api/notifications · POST .../clear · .../ack · .../unack · .../ack-allNotification center: list, clear, acknowledge.
GET/PUT /api/notifications/settingsNotification entity settings.
GET /api/outbox · GET /api/outbox/{filename} · POST /api/outbox/notifyHeadless-run outbox artifacts + notify hook.
Method + pathWhat it does
GET /api/apps · POST /api/apps · GET/DELETE /api/apps/{name}Installed apps; install from a source; detail; uninstall.
GET /api/apps/catalogThe Store catalog (native + first-party + registered sources).
GET/POST/DELETE /api/apps/sources · GET/POST/DELETE /api/apps/local-sourcesThird-party app sources (git URLs / local dirs).
POST /api/apps/{name}/enable · .../disable · .../updateEnable/disable; update (atomic with rollback).
GET /api/apps/{name}/uninstall-previewWhat an uninstall would remove.
GET/PUT /api/apps/{name}/configApp config (schema-driven Configure form).
POST /api/apps/{name}/agent-run · GET .../agent-run/{run_id}App-initiated agent runs (permission-gated).
POST /api/apps/{name}/tokenMint an app-scoped API token.
GET /apps/{name}/ui/{tail:.*}Serve an app’s bundled UI assets.
* /apps/{name}/api/{tail:.*}Reverse proxy to the app’s backend subprocess (credential-stripping, app-scoped bearer).
Method + pathWhat it does
GET/POST /api/prompts · GET/PUT/DELETE /api/prompts/{name:.+}Prompt template CRUD.
POST /api/prompts/{name:.+}/render · .../launch · POST /api/prompts/previewRender a template; launch it as a chat; preview.
GET/PUT /api/prompts/bindings · GET /api/prompts/syntaxUse-case prompt bindings; template syntax reference.
GET/POST /api/prompt-snippets · GET/PUT/DELETE .../{name:.+} · POST .../{name:.+}/renderReusable prompt snippets.
GET/POST /api/themes · GET/PUT/DELETE /api/themes/{slug}UI themes (server entities, CSS-variable allowlisted).
Method + pathWhat it does
GET /api/file-read · .../file-raw · .../file-list · .../file-search · .../file-content-search · .../file-complete · .../file-watchWorkspace file panel: read, raw bytes, list, name/content search, path completion, change stream.
POST /api/file-write · .../file-create · .../file-move · .../file-delete · .../file-uploadFile mutations.
GET /api/file-git-status · .../file-git-log · .../file-git-commit · .../file-git-originalGit status/log/commit-detail/pre-change content for the diff view.
GET /api/browse-dirs · POST /api/create-dirDirectory browser + mkdir.
POST /api/upload · POST /api/upload/fileSimple uploads (chat attachments).
GET /api/uploads/limits · POST /api/uploads/init · PUT .../{id}/part · GET .../{id} · POST .../{id}/completeChunked upload protocol for large files.
GET /api/attachment-extractExtract text from an uploaded attachment.
POST /api/revealReveal a path in the OS file manager (local installs).
POST /api/screenshotCapture a screenshot artifact.
POST /api/terminal/sessions · GET /api/terminal/sessions · DELETE .../{session_id}PTY terminal sessions.
GET /api/ws/terminal/{session_id}Terminal WebSocket (keystrokes/output).
GET /api/config-fs/streamConfig-tree change stream (live UI refresh).
Method + pathWhat it does
GET/POST /api/artifacts · GET/PATCH/DELETE /api/artifacts/{slug}Generated artifact CRUD.
GET /api/artifacts/{slug}/rawRaw artifact content.
POST /api/artifacts/{slug}/regenerateRegenerate from its source prompt.
GET /api/artifacts/{slug}/versions · GET .../versions/{version}Version history.
GET/POST /api/artifacts/{slug}/eventsArtifact event log.
Method + pathWhat it does
GET /api/mcp · GET /api/mcp/activeConfigured MCP servers; currently active ones.
GET/POST /api/mcp/probe · POST /api/mcp/probe/{name}Tool-discovery probes (all / one server).
GET /api/mcp/pool-statsConnection-pool statistics.
GET /api/mcp/importable · POST /api/mcp/sync · POST /api/mcp/applyImport servers from other tools’ configs.
POST /api/mcp/toggle · .../toggle-tool · .../toggle-all · .../removeEnable/disable servers/tools; remove a server.
PUT/DELETE /api/mcp/servers/{name}Edit / delete a server definition.
Method + pathWhat it does
GET /api/toolsThe full tool registry (native + provider + MCP).
POST /api/tools/invokeInvoke a tool directly (owner-only).
POST /api/tools/toggle · POST /api/tools/provider-toggleEnable/disable a tool / a whole provider’s tools.
Method + pathWhat it does
GET /api/config/schemaMachine-readable config field registry.
GET/PUT/PATCH /api/config/personalclawRead / replace / single-field-patch the core config.
GET/PUT /api/dashboard/configDashboard-section config (UI preference writes).
GET/PUT /api/config/default-agentDefault agent binding.
Method + pathWhat it does
GET /api/security/stats · .../denied-commands · .../egressSecurity posture: stats, active deny patterns, egress policy.
GET /api/sel/events · GET /api/sel/verify · POST /api/sel/rotateTamper-evident security event log: read, HMAC-verify, key rotation.
GET /api/approvals · POST /api/approvals/{id}/{action}Pending tool approvals; approve/deny.
Method + pathWhat it does
POST /api/stt/transcribeTranscribe audio (bound STT provider).
POST /api/voice/synthesizeSynthesize speech (bound TTS provider).
Method + pathWhat it does
GET /api/portability/exportExport state as a portable archive.
POST /api/portability/preview · POST /api/portability/importPreview / apply an import.

See also: Configuration reference · CLI reference