Skip to Content
Guia do DesenvolvedorReferência da API REST do daemon

Referência da API REST do daemon

Esta é a interface pública REST/SSE para integrações que executam qwen serve --no-web e fornecem sua própria UI. Comece pelo guia de integração, depois use esta página para descoberta de endpoints e a referência do protocolo HTTP para a semântica detalhada do ciclo de vida.

OpenAPI

O contrato curado de 25 operações está disponível como OpenAPI 3.1 JSON . Importe essa URL em um renderizador compatível com OpenAPI, gerador de clientes ou ferramenta de validação. O JSON versionado é o contrato de interface portável para as operações indexadas abaixo e é validado em relação ao guia, aos cabeçalhos do protocolo e às rotas registradas no CI.

Este índice cobre um subconjunto central curado da superfície REST do daemon, não toda ela. Fora dele estão as rotas de primeira parte do Web Shell, superfícies internas condicionais e outras rotas públicas porém não centrais: mutação de arquivos, registro de workspace, organização e geração de sessão, e MCP, skills e providers de workspace, entre outros. Essas superfícies são anunciadas por suas próprias capability tags; a referência do protocolo HTTP documenta as superfícies de sessão, status de workspace e arquivos, e o gerenciamento de servidores MCP, auth providers e sign-in por device-flow são cobertos pelas notas de auth e segurança do daemon. Eles estão fora deste contrato, não descontinuados.

Lendo o índice

  • Capability é a tag de funcionalidade a ser verificada em GET /capabilities. Um travessão significa que a operação não tem uma tag de funcionalidade dedicada; clientes que precisam suportar builds mais antigos do daemon devem tratar 404.
  • Scope indica qual runtime possui a operação. process-global lê estado de todo o daemon, selected-runtime usa a seleção de workspace da requisição, persisted-workspace resolve armazenamento de sessão persistido, live-session-owner roteia pela sessão ao vivo, e legacy-primary sempre visa o workspace primário do daemon. GET /session/:id/export é fixado no primário: resolve apenas runtimes internos gerenciados antes de fazer fallback para o workspace primário.
  • Todas as operações neste índice são stable no contrato REST v1. O nome de capability descontinuado unstable_session_resume é apenas um alias; use session_resume para a rota de resume estável.

Descoberta

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

Ciclo de vida da sessão

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 e eventos

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 retorna 202 quando o prompt entra na fila, não quando o Agent termina. Inscreva-se primeiro, depois correlacione turn_complete ou turn_error por promptId.

Permissões

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

Integrações multi-workspace novas devem sempre usar a rota com escopo de sessão. A rota legada pode retornar o mesmo 404 para uma requisição pertencente a outro runtime assim como para um voto já resolvido.

Contexto read-only do workspace

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

Essas rotas singulares visam o workspace primário. Integrações que expõem múltiplos workspaces registrados devem usar as contrapartes qualificadas por workspace documentadas no protocolo completo e no preflight workspace_qualified_rest_core.

APIs adicionais documentadas

As 25 operações acima são o contrato estável de integração OpenAPI. As operações a seguir completam o índice de rotas HTTP com seções dedicadas no protocolo. São superfícies v1 documentadas, mas estão fora desse contrato compacto OpenAPI porque são condicionais, administrativas ou suportam principalmente clientes de primeira parte. Faça preflight de toda capability listada e trate uma capability ausente como uma rota indisponível. Uma linha agrupada pode conter várias operações quando compartilham propriedade e uma família de SDK.

AreaOperationsCapability and scopeTypeScript SDK
Estado do operadorGET /daemon/status · GET /branddaemon_status, web_shell_brand; process-globalDaemonClient.daemonStatus, DaemonClient.brand
Registro de workspacePOST /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 ou selected-runtimeDaemonClient.addWorkspace, DaemonClient.updateWorkspace, WorkspaceDaemonClient.remove; rotas do registration-store usam REST puro
Status de runtime do workspaceGET /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
Mutação de arquivosPOST /file/write · POST /file/editworkspace_file_write; legacy-primaryDaemonClient.writeWorkspaceFile, DaemonClient.editWorkspaceFile
Inspeção de sessão e tarefasGET /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
Histórico qualificado por workspaceGET /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
Recuperação de worktreePOST /session/:id/worktree-resetsession_worktree_reset_v1; live-session-ownerDaemonClient.resetWorktreeSession
Catálogo de sessões persistidasGET /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
Organização de sessãoGET /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 ou persisted-workspaceDaemonClient.listSessionGroups, createSessionGroup, updateSessionGroup, deleteSessionGroup, updateSessionOrganization; WorkspaceDaemonClient.updateSessionOrganization
Alterações em massa de sessões persistidasPOST /sessions/delete · POST /sessions/archive · POST /sessions/unarchivesession_archive; legacy-primaryDaemonClient.deleteSessionsData, archiveSessionsData, unarchiveSessionsData
Controles opcionais de sessãoPOST /session/:id/recap · POST /session/:id/generate · POST /session/:id/approval-modesession_recap, session_generation, session_approval_mode_control; live-session-ownerDaemonClient.recapSession, REST puro para geração, DaemonClient.setSessionApprovalMode
Configuração de workspacePOST /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 ou process-globalDaemonClient.setWorkspaceToolEnabled, setWorkspaceSkillEnabled, setWorkspaceSkillsEnabled, initWorkspace, reloadWorkspaceMcp, restartMcpServer, setUserLanguage
Autenticação por device-flowPOST /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

Rotas sem uma seção dedicada no protocolo estão intencionalmente ausentes deste índice. Elas podem ser infraestrutura de Web Shell de primeira parte ou superfícies de implementação condicionais e não são promovidas a um contrato de integração por omissão.

Regras comuns do protocolo

  • Autentique rotas normais com Authorization: Bearer <token>. Uma sondagem /health de loopback padrão pode ser isenta; binds não-loopback não são.
  • Envie X-Qwen-Client-Id quando uma resposta de create/load forneceu um. É um identificador de anexo e atribuição, não um principal de segurança de usuário final.
  • Trate corpos de erro como aditivos. Faça branch principalmente pelo status HTTP e pelo code ou errorKind estável quando presente.
  • Preserve headers de resposta SSE e desabilite o buffer do proxy. Retome com Last-Event-ID e X-Qwen-Event-Epoch quando o daemon forneceu um epoch.
  • Uma fronteira de confiança de workspace não é isolamento de tenant. Execute daemons separados quando principals de segurança ou fronteiras de falha em nível de processo devem ser independentes.
Last updated on