> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dify.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 流式获取工作流事件

> **适用于**：Chatflow、Workflow。

在工作流运行暂停或原始 SSE 连接断开后恢复 Server-Sent Events 流。对于已结束的运行，流仅发送单个 `workflow_finished` 事件后关闭。

如需查看进行中运行的节点级状态与进度，可在调用时附带 `include_state_snapshot=true`：流会先重放各已执行节点的状态，再流式发送新事件。



## OpenAPI

````yaml /zh/api-reference/openapi_service.json get /workflow/{workflow_run_id}/events
openapi: 3.0.1
info:
  title: Dify 服务 API
  description: 用于 Dify 应用与知识库的 REST API。应用类接口使用应用 API 密钥认证，知识库类接口使用知识库 API 密钥认证。
  version: 1.0.0
servers:
  - url: https://{api_base_url}
    description: Dify 服务 API 的基础 URL。自部署时，替换为你的 API 基础 URL。
    variables:
      api_base_url:
        default: api.dify.ai/v1
        description: API 基础 URL 的主机与路径，不含 `https://` 前缀。
security:
  - ApiKeyAuth: []
tags:
  - name: 对话消息
    description: 与聊天消息和交互相关的操作。
  - name: 文件操作
    description: 文件上传和预览操作。
  - name: 终端用户
    description: 终端用户信息相关操作。
  - name: 消息反馈
    description: 用户反馈操作。
  - name: 会话管理
    description: 与管理会话相关的操作。
  - name: 语音与文字转换
    description: 文字转语音和语音转文字操作。
  - name: 应用配置
    description: 获取应用设置和信息的操作。
  - name: 标注管理
    description: 与管理标注直接回复相关的操作。
  - name: 人工介入
    description: 暂停等待人工输入的工作流恢复操作。
  - name: 工作流运行
    description: 用于执行和管理工作流的操作。
  - name: 文本生成消息
    description: 文本生成相关操作。
  - name: 知识库
    description: 用于管理知识库的操作，包括创建、配置和检索。
  - name: 文档
    description: 用于在知识库中创建、更新和管理文档的操作。
  - name: 分段
    description: 用于管理分段和子分段的操作。
  - name: 元数据
    description: 用于管理知识库元数据字段和文档元数据值的操作。
  - name: 标签
    description: 用于管理知识库标签和标签绑定的操作。
  - name: 模型
    description: 用于获取可用模型的操作。
  - name: 知识流水线
    description: 用于管理和运行知识流水线的操作，包括数据源插件和流水线执行。
paths:
  /workflow/{workflow_run_id}/events:
    get:
      tags:
        - 工作流运行
      summary: 流式获取工作流事件
      description: >-
        **适用于**：Chatflow、Workflow。


        在工作流运行暂停或原始 SSE 连接断开后恢复 Server-Sent Events 流。对于已结束的运行，流仅发送单个
        `workflow_finished` 事件后关闭。


        如需查看进行中运行的节点级状态与进度，可在调用时附带
        `include_state_snapshot=true`：流会先重放各已执行节点的状态，再流式发送新事件。
      operationId: streamWorkflowEvents
      parameters:
        - name: workflow_run_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: 要恢复事件流的工作流运行 ID（取自原始运行响应中的 `workflow_run_id`）。
        - name: user
          in: query
          required: true
          schema:
            type: string
          description: 最初触发该运行的终端用户标识。必须与工作流运行的创建者一致。
        - name: include_state_snapshot
          in: query
          required: false
          schema:
            type: boolean
            default: false
          description: 为 `true` 时，从持久化状态快照重放，在流式发送新事件前附带已执行节点的状态摘要。
        - name: continue_on_pause
          in: query
          required: false
          schema:
            type: boolean
            default: false
          description: >-
            设为 `true` 时，流会在多次 `workflow_paused`
            事件之间保持打开（适用于工作流包含多个连续人工介入节点的场景）。默认在首次暂停时关闭流。
      responses:
        '200':
          description: 'Server-Sent Events 流。每个事件以 `data: {JSON}\n\n` 形式送达。事件载荷结构与原始流式响应一致。'
          content:
            text/event-stream:
              schema:
                type: string
                description: >-
                  已恢复工作流运行的事件 SSE 流，格式与
                  [执行工作流](/zh/api-reference/workflow-runs/run-workflow)（Workflow
                  应用）或
                  [发送对话消息](/zh/api-reference/chat-messages/send-chat-message)（Chatflow
                  应用）相同。当恢复部分运行设置 `reasoning_format: separated` 的 LLM 节点时，本流还会携带
                  `reasoning_chunk` 事件。
              examples:
                resumedRun:
                  summary: 响应示例 - 恢复运行（Workflow）
                  value: >-
                    data: {"event": "human_input_form_filled", "task_id":
                    "c3800678-a077-43df-a102-53f23ed20b88", "workflow_run_id":
                    "fb47b2e6-5e43-4f90-be01-d5c5a088d156", "data": {"node_id":
                    "approval_node", "node_title": "Approval",
                    "rendered_content": "Please review the draft.", "action_id":
                    "approve", "action_text": "Approve"}} data: {"event":
                    "node_started", "task_id":
                    "c3800678-a077-43df-a102-53f23ed20b88", "workflow_run_id":
                    "fb47b2e6-5e43-4f90-be01-d5c5a088d156", "data": {"id":
                    "node_exec_2", "node_id": "node_1", "node_type": "llm",
                    "title": "LLM Node", "index": 2, "created_at": 1705407705}}
                    data: {"event": "reasoning_chunk", "task_id":
                    "c3800678-a077-43df-a102-53f23ed20b88", "workflow_run_id":
                    "fb47b2e6-5e43-4f90-be01-d5c5a088d156", "data":
                    {"reasoning": "Approved, now translating.", "node_id":
                    "node_1", "is_final": false}} data: {"event":
                    "reasoning_chunk", "task_id":
                    "c3800678-a077-43df-a102-53f23ed20b88", "workflow_run_id":
                    "fb47b2e6-5e43-4f90-be01-d5c5a088d156", "data":
                    {"reasoning": "", "node_id": "node_1", "is_final": true}}
                    data: {"event": "text_chunk", "task_id":
                    "c3800678-a077-43df-a102-53f23ed20b88", "workflow_run_id":
                    "fb47b2e6-5e43-4f90-be01-d5c5a088d156", "data": {"text":
                    "Bonjour", "from_variable_selector": ["node_1", "text"]}}
                    data: {"event": "workflow_finished", "task_id":
                    "c3800678-a077-43df-a102-53f23ed20b88", "workflow_run_id":
                    "fb47b2e6-5e43-4f90-be01-d5c5a088d156", "data": {"id":
                    "fb47b2e6-5e43-4f90-be01-d5c5a088d156", "workflow_id":
                    "7c3e33d4-2a8b-4e5f-9b1a-d3c6e8f12345", "status":
                    "succeeded", "outputs": {"result": "Bonjour"},
                    "elapsed_time": 2.1, "total_tokens": 42, "total_steps": 2,
                    "created_at": 1705407629, "finished_at": 1705407706}}
                resumedRunChatflow:
                  summary: 响应示例 - 恢复运行（Chatflow）
                  value: >-
                    data: {"event": "human_input_form_filled", "task_id":
                    "c3800678-a077-43df-a102-53f23ed20b88", "message_id":
                    "2e4f6a8b-1c3d-5e7f-9a0b-2c4d6e8f0a1b", "conversation_id":
                    "9d3a2f1b-6c7d-4e8f-a0b1-c2d3e4f5a6b7", "created_at":
                    1705407705, "workflow_run_id":
                    "fb47b2e6-5e43-4f90-be01-d5c5a088d156", "data": {"node_id":
                    "approval_node", "node_title": "Approval",
                    "rendered_content": "Please review the draft.", "action_id":
                    "approve", "action_text": "Approve"}} data: {"event":
                    "node_started", "task_id":
                    "c3800678-a077-43df-a102-53f23ed20b88", "message_id":
                    "2e4f6a8b-1c3d-5e7f-9a0b-2c4d6e8f0a1b", "conversation_id":
                    "9d3a2f1b-6c7d-4e8f-a0b1-c2d3e4f5a6b7", "created_at":
                    1705407705, "workflow_run_id":
                    "fb47b2e6-5e43-4f90-be01-d5c5a088d156", "data": {"id":
                    "ne_002", "node_id": "node_llm_1", "node_type": "llm",
                    "title": "LLM", "index": 2, "created_at": 1705407705}} data:
                    {"event": "reasoning_chunk", "task_id":
                    "c3800678-a077-43df-a102-53f23ed20b88", "message_id":
                    "2e4f6a8b-1c3d-5e7f-9a0b-2c4d6e8f0a1b", "conversation_id":
                    "9d3a2f1b-6c7d-4e8f-a0b1-c2d3e4f5a6b7", "created_at":
                    1705407705, "data": {"message_id":
                    "2e4f6a8b-1c3d-5e7f-9a0b-2c4d6e8f0a1b", "reasoning": "The
                    reviewer approved the draft.", "node_id": "node_llm_1",
                    "is_final": false}} data: {"event": "reasoning_chunk",
                    "task_id": "c3800678-a077-43df-a102-53f23ed20b88",
                    "message_id": "2e4f6a8b-1c3d-5e7f-9a0b-2c4d6e8f0a1b",
                    "conversation_id": "9d3a2f1b-6c7d-4e8f-a0b1-c2d3e4f5a6b7",
                    "created_at": 1705407705, "data": {"message_id":
                    "2e4f6a8b-1c3d-5e7f-9a0b-2c4d6e8f0a1b", "reasoning": "",
                    "node_id": "node_llm_1", "is_final": true}} data: {"event":
                    "message", "task_id":
                    "c3800678-a077-43df-a102-53f23ed20b88", "message_id":
                    "2e4f6a8b-1c3d-5e7f-9a0b-2c4d6e8f0a1b", "conversation_id":
                    "9d3a2f1b-6c7d-4e8f-a0b1-c2d3e4f5a6b7", "answer":
                    "Approved", "created_at": 1705407706} data: {"event":
                    "node_finished", "task_id":
                    "c3800678-a077-43df-a102-53f23ed20b88", "message_id":
                    "2e4f6a8b-1c3d-5e7f-9a0b-2c4d6e8f0a1b", "conversation_id":
                    "9d3a2f1b-6c7d-4e8f-a0b1-c2d3e4f5a6b7", "created_at":
                    1705407706, "workflow_run_id":
                    "fb47b2e6-5e43-4f90-be01-d5c5a088d156", "data": {"id":
                    "ne_002", "node_id": "node_llm_1", "node_type": "llm",
                    "title": "LLM", "index": 2, "status": "succeeded",
                    "elapsed_time": 1.2, "created_at": 1705407705,
                    "finished_at": 1705407706}} data: {"event": "message_end",
                    "task_id": "c3800678-a077-43df-a102-53f23ed20b88",
                    "message_id": "2e4f6a8b-1c3d-5e7f-9a0b-2c4d6e8f0a1b",
                    "conversation_id": "9d3a2f1b-6c7d-4e8f-a0b1-c2d3e4f5a6b7",
                    "created_at": 1705407706, "metadata": {"usage":
                    {"total_tokens": 42, "latency": 1.3}}} data: {"event":
                    "workflow_finished", "task_id":
                    "c3800678-a077-43df-a102-53f23ed20b88", "message_id":
                    "2e4f6a8b-1c3d-5e7f-9a0b-2c4d6e8f0a1b", "conversation_id":
                    "9d3a2f1b-6c7d-4e8f-a0b1-c2d3e4f5a6b7", "created_at":
                    1705407706, "workflow_run_id":
                    "fb47b2e6-5e43-4f90-be01-d5c5a088d156", "data": {"id":
                    "fb47b2e6-5e43-4f90-be01-d5c5a088d156", "workflow_id":
                    "7c3e33d4-2a8b-4e5f-9b1a-d3c6e8f12345", "status":
                    "succeeded", "elapsed_time": 2.1, "total_tokens": 42,
                    "total_steps": 2, "created_at": 1705407629, "finished_at":
                    1705407706}}
        '400':
          description: >-
            `not_workflow_app` : Please check if your app mode matches the right
            API route.
          content:
            application/json:
              examples:
                not_workflow_app:
                  summary: not_workflow_app
                  value:
                    status: 400
                    code: not_workflow_app
                    message: Please check if your app mode matches the right API route.
        '404':
          description: '`not_found` : Workflow run not found.'
          content:
            application/json:
              examples:
                not_found:
                  summary: not_found
                  value:
                    status: 404
                    code: not_found
                    message: Workflow run not found
      x-codeSamples:
        - lang: bash
          label: 恢复事件流
          source: |-
            curl -N --request GET \
              --url 'https://{api_base_url}/workflow/{workflow_run_id}/events?user={user}' \
              --header 'Authorization: Bearer {api_key}'
        - lang: bash
          label: 附带状态快照
          source: |-
            curl -N --request GET \
              --url 'https://{api_base_url}/workflow/{workflow_run_id}/events?user={user}&include_state_snapshot=true' \
              --header 'Authorization: Bearer {api_key}'
components:
  securitySchemes:
    ApiKeyAuth:
      type: http
      scheme: bearer
      bearerFormat: API_KEY
      description: >-
        API Key 认证。对于所有 API 请求，请在 `Authorization` HTTP 头中包含您的 API Key，并加上
        `Bearer ` 前缀。示例：`Authorization: Bearer {API_KEY}`。**强烈建议将 API Key
        存储在服务端，不要在客户端共享或存储，以避免 API Key 泄漏导致严重后果。**缺少或无效的 API Key 会返回 HTTP
        `401`，错误码为 `unauthorized`。

````