Skip to Content
EntwicklerhandbuchDaemon-REST-API-Referenz

Daemon-REST-API-Referenz

Dies ist die öffentliche REST/SSE-Schnittstelle für Integrationen, die qwen serve --no-web ausführen und eine eigene UI bereitstellen. Beginnen Sie mit dem Integrationsleitfaden, verwenden Sie dann diese Seite für die Endpunkt- Erkundung und die HTTP-Protokollreferenz für detaillierte Lebenszyklus-Semantik.

OpenAPI

Der kuratierte 25-Operation-Vertrag ist als OpenAPI 3.1 JSON  verfügbar. Importieren Sie diese URL in einen OpenAPI-kompatiblen Renderer, Client-Generator oder Validierungstool. Das eingecheckte JSON ist der portable Schnittstellenvertrag für die unten indizierten Operationen und wird im CI gegen den Leitfaden, die Protokoll-Überschriften und die registrierten Routen validiert.

Dieser Index deckt eine kuratierte Kern-Teilmenge der REST-Oberfläche des Daemons ab, nicht alles. Außerhalb befinden sich die erstklassigen WebShell-Routen, bedingte interne Oberflächen und andere öffentliche, aber nicht zum Kern gehörende Routen: Datei-Mutation, Workspace-Registrierung, Session-Organisation und -Generierung sowie Workspace-MCP, Skills und Provider unter anderem. Diese Oberflächen werden durch ihre eigenen Capability-Tags gekennzeichnet; die HTTP-Protokollreferenz dokumentiert die Session-, Workspace-Status- und Datei-Oberflächen, und MCP-Server-Verwaltung, Auth-Provider und Device-Flow-Anmeldung werden in den Daemon-Auth- und Sicherheitshinweisen behandelt. Sie sind außerhalb dieses Vertrags, nicht deprecated.

Den Index lesen

  • Capability ist das Feature-Tag, das in GET /capabilities geprüft werden soll. Ein Gedankenstrich bedeutet, dass die Operation kein eigenes Feature-Tag hat; Clients, die ältere Daemon-Builds unterstützen müssen, sollten 404 behandeln.
  • Scope gibt an, welche Runtime die Operation besitzt. process-global liest Daemon-weiten Zustand, selected-runtime verwendet die Workspace-Auswahl der Anfrage, persisted-workspace löst persistierte Session-Speicher auf, live-session-owner routet über die Live-Session, und legacy-primary zielt immer auf den primären Workspace des Daemons. GET /session/:id/export ist primär-angeheftet: es löst nur verwaltete interne Runtimes auf, bevor es auf den primären Workspace zurückfällt.
  • Alle Operationen in diesem Index sind im v1-REST-Vertrag stabil. Der deprecated Capability-Name unstable_session_resume ist nur ein Alias; verwenden Sie session_resume für die stabile Resume-Route.

Discovery

OperationCapabilityScopeTypeScript SDK
GET /healthhealthprocess-globalDaemonClient.health
GET /capabilitiescapabilitiesprocess-globalDaemonClient.capabilities

Session-Lebenszyklus

OperationCapabilityScopeTypeScript SDK
POST /sessionsession_createselected-runtimeDaemonClient.createOrAttachSession
POST /session/:id/loadsession_loadselected-runtimeDaemonClient.loadSession
POST /session/:id/resumesession_resumeselected-runtimeDaemonClient.resumeSession
POST /session/:id/heartbeatclient_heartbeatlive-session-ownerDaemonClient.heartbeat
PATCH /session/:id/metadatasession_metadatalive-session-ownerDaemonClient.updateSessionMetadata
POST /session/:id/modelsession_set_modellive-session-ownerDaemonClient.setSessionModel
DELETE /session/:idsession_closelive-session-ownerDaemonClient.closeSession

Prompts und Events

OperationCapabilityScopeTypeScript SDK
GET /session/:id/statussession_statuslive-session-ownerDaemonClient.sessionStatus
POST /session/:id/promptsession_promptlive-session-ownerDaemonClient.promptNonBlocking
POST /session/:id/cancelsession_cancellive-session-ownerDaemonClient.cancel
GET /session/:id/eventssession_eventslive-session-ownerDaemonClient.subscribeEvents
GET /session/:id/transcriptsession_transcriptpersisted-workspaceDaemonClient.getSessionTranscriptPage
GET /session/:id/contextsession_contextlive-session-ownerDaemonClient.sessionContext
GET /session/:id/exportsession_exportlegacy-primaryDaemonClient.exportSession
GET /session/:id/pending-prompts—live-session-ownerDaemonClient.getPendingPrompts

POST /session/:id/prompt gibt 202 zurück, wenn der Prompt die Warteschlange betritt, nicht wenn der Agent fertig ist. Abonnieren Sie zuerst, dann korrelieren Sie turn_complete oder turn_error über promptId.

Berechtigungen

OperationCapabilityScopeTypeScript SDK
POST /session/:id/permission/:requestIdsession_permission_votelive-session-ownerDaemonClient.respondToSessionPermission
POST /permission/:requestIdpermission_votelegacy-primaryDaemonClient.respondToPermission

Neue Multi-Workspace-Integrationen sollten immer die Session-scoped Route verwenden. Die Legacy-Route kann für eine Anfrage, die einer anderen Runtime gehört, denselben 404 zurückgeben wie für eine bereits aufgelöste Abstimmung.

Schreibgeschützter Workspace-Kontext

OperationCapabilityScopeTypeScript SDK
GET /workspace/tools—legacy-primaryDaemonClient.workspaceTools
GET /fileworkspace_file_readlegacy-primaryDaemonClient.readWorkspaceFile
GET /file/bytesworkspace_file_byteslegacy-primaryDaemonClient.readWorkspaceFileBytes
GET /statworkspace_file_readlegacy-primaryDaemonClient.fileStat
GET /listworkspace_file_readlegacy-primaryDaemonClient.dirList
GET /globworkspace_file_readlegacy-primaryDaemonClient.glob

Diese singulären Routen zielen auf den primären Workspace. Integrationen, die mehrere registrierte Workspaces bereitstellen, sollten die Workspace-qualifizierten Gegenstücke verwenden, die im vollständigen Protokoll dokumentiert sind, und workspace_qualified_rest_core vorab prüfen.

Zusätzlich dokumentierte APIs

Die 25 Operationen oben sind der stabile OpenAPI-Integrationsvertrag. Die folgenden Operationen vervollständigen den Index der HTTP-Routen mit eigenen Protokoll- Abschnitten. Es sind dokumentierte v1-Oberflächen, aber sie liegen außerhalb dieses kompakten OpenAPI-Vertrags, weil sie konditional, administrativ oder primär zur Unterstützung von Erstanbieter-Clients sind. Preflighten Sie jede aufgeführte Capability und behandeln Sie fehlende Capabilities als nicht verfügbare Routen. Eine gruppierte Zeile kann mehrere Operationen enthalten, wenn sie Ownership und eine SDK-Familie teilen.

BereichOperationenCapability und ScopeTypeScript SDK
Operator-ZustandGET /daemon/status · GET /branddaemon_status, web_shell_brand; process-globalDaemonClient.daemonStatus, DaemonClient.brand
Workspace-RegistrierungPOST /workspaces · PATCH /workspaces/:workspace · DELETE /workspaces/:workspace · GET /workspace-registrations · DELETE /workspace-registrations/:iddynamic_workspace_registration, persistent_workspace_registration, workspace_display_name, workspace_runtime_removal; process-global oder selected-runtimeDaemonClient.addWorkspace, DaemonClient.updateWorkspace, WorkspaceDaemonClient.remove; Registration-Store-Routen verwenden rohes REST
Workspace-Runtime-StatusGET /workspace/mcp · GET /workspace/skills · GET /workspace/providers · GET /workspace/env · GET /workspace/preflightworkspace_mcp, workspace_skills, workspace_providers, workspace_env, workspace_preflight; legacy-primaryDaemonClient.workspaceMcp, workspaceSkills, workspaceProviders, workspaceEnv, workspacePreflight
Datei-MutationPOST /file/write · POST /file/editworkspace_file_write; legacy-primaryDaemonClient.writeWorkspaceFile, DaemonClient.editWorkspaceFile
Session-Inspektion und TasksGET /session/:id/supported-commands · GET /session/:id/tasks · POST /session/:id/tasks/:taskId/workflow-action · GET /session/:id/lsp · GET /session/:id/resourcessession_supported_commands, session_tasks, session_lsp, session_resources; live-session-ownerDaemonClient.sessionSupportedCommands, sessionTasks, sessionWorkflowTaskAction, sessionLspStatus, sessionResources
Workspace-qualifizierter VerlaufGET /workspaces/:workspace/session/:id/transcript · GET /workspaces/:workspace/session/:id/export · GET /workspaces/:workspace/session/:id/archive/exportworkspace_persisted_transcript, workspace_session_export, workspace_archived_session_export; persisted-workspaceWorkspaceDaemonClient.getSessionTranscriptPage, exportSession, exportArchivedSession
Worktree-RecoveryPOST /session/:id/worktree-resetsession_worktree_reset_v1; live-session-ownerDaemonClient.resetWorktreeSession
Persistierter-Session-KatalogGET /workspace/:id/session-info · GET /workspaces/:workspace/session-info · GET /workspace/:id/sessions · GET /workspaces/:workspace/sessions · GET /workspaces/:workspace/sessions/live-statesession_info, session_list, workspace_session_live_state; persisted-workspaceDaemonClient.getStandaloneSession, listWorkspaceSessions, getWorkspaceSessionLiveState
Session-OrganisationGET /workspace/:id/session-groups · POST /workspace/:id/session-groups · PATCH /workspace/:id/session-groups/:groupId · DELETE /workspace/:id/session-groups/:groupId · PATCH /session/:id/organization · PATCH /workspaces/:workspace/session/:id/organizationsession_organization; legacy-primary oder persisted-workspaceDaemonClient.listSessionGroups, createSessionGroup, updateSessionGroup, deleteSessionGroup, updateSessionOrganization; WorkspaceDaemonClient.updateSessionOrganization
Bulk-Änderungen persistierter SessionsPOST /sessions/delete · POST /sessions/archive · POST /sessions/unarchivesession_archive; legacy-primaryDaemonClient.deleteSessionsData, archiveSessionsData, unarchiveSessionsData
Optionale Session-SteuerungPOST /session/:id/recap · POST /session/:id/generate · POST /session/:id/approval-modesession_recap, session_generation, session_approval_mode_control; live-session-ownerDaemonClient.recapSession, raw REST für Generation, DaemonClient.setSessionApprovalMode
Workspace-KonfigurationPOST /workspace/tools/:name/enable · POST /workspace/skills/:name/enable · POST /workspace/skills/enable · POST /workspace/init · POST /workspace/mcp/reload · POST /workspace/mcp/:server/restart · POST /languageworkspace_tool_toggle, workspace_skill_settings_toggle, workspace_skill_settings_batch_toggle, workspace_init, workspace_mcp_manage, workspace_mcp_restart, user_language_sync; legacy-primary oder process-globalDaemonClient.setWorkspaceToolEnabled, setWorkspaceSkillEnabled, setWorkspaceSkillsEnabled, initWorkspace, reloadWorkspaceMcp, restartMcpServer, setUserLanguage
Device-Flow-AuthentifizierungPOST /workspace/auth/device-flow · GET /workspace/auth/device-flow/:id · DELETE /workspace/auth/device-flow/:id · GET /workspace/auth/statusauth_device_flow; legacy-primaryDaemonClient.startDeviceFlow, getDeviceFlow, cancelDeviceFlow, getAuthStatus

Routen ohne eigenen Protokoll-Abschnitt fehlen absichtlich in diesem Index. Es kann sich um erstklassige WebShell-Infrastruktur oder konditionale Implementierungs- Oberflächen handeln; durch ihr Fehlen werden sie nicht zu einem Integrationsvertrag befördert.

Gemeinsame Protokollregeln

  • Authentifizieren Sie normale Routen mit Authorization: Bearer <token>. Eine Standard- Loopback-/health-Probe kann ausgenommen sein; Non-Loopback-Binds sind es nicht.
  • Senden Sie X-Qwen-Client-Id, wenn eine Create/Load-Antwort eines bereitgestellt hat. Es ist ein Zuordnungs- und Attributions-Identifier, kein Endnutzer-Sicherheitsprinzipal.
  • Behandeln Sie Fehler-Bodys als additiv. Verzweigen Sie primär über HTTP-Status und den stabilen code oder errorKind, falls vorhanden.
  • Bewahren Sie SSE-Antwort-Header auf und deaktivieren Sie Proxy-Buffering. Setzen Sie mit beiden Last-Event-ID und X-Qwen-Event-Epoch fort, wenn der Daemon eine Epoch bereitgestellt hat.
  • Eine Workspace-Trust-Grenze ist keine Tenant-Isolation. Führen Sie separate Daemons aus, wenn Sicherheitsprinzipale oder Prozess-Level-Fehlerschranken unabhängig sein müssen.
Last updated on