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

# 获取研究任务

> 返回研究任务的当前状态：`stage`、目前为止的花费、限制、时间戳，以及失败时的错误详情。

轮询直到 `stage` 为 `completed`、`failed` 或 `canceled`。此对象不包含回答。规划、创建、轮询和读取结果的完整流程，详见 [运行研究任务](/zh/api-reference/guides/knowledge-base#run-a-research-task)。



## OpenAPI

````yaml /zh/api-reference/openapi_service.json get /knowledge-fs/spaces/{knowledge_base_id}/research-tasks/{research_task_id}
openapi: 3.0.1
info:
  description: 用于 Dify 应用与知识库的 REST API。应用类接口使用应用 API 密钥认证，知识库类接口使用知识库 API 密钥认证。
  title: Dify 服务 API
  version: 1.0.0
servers:
  - description: Dify 服务 API 的基础 URL。自部署时，替换为你的 API 基础 URL。
    url: https://{api_base_url}
    variables:
      api_base_url:
        default: api.dify.ai/v1
        description: API 基础 URL 的主机与路径，不含 `https://` 前缀。
security:
  - ApiKeyAuth: []
tags:
  - 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: 用于管理和运行知识流水线的操作，包括数据源插件和流水线执行。
    name: 知识流水线
  - description: 向知识库提问，并流式返回回答。
    name: 查询
  - description: 查看一次查询检索到了什么，以及原因。
    name: 查询记录
  - description: 在后台运行研究问题，并获取其结果。
    name: 研究任务
  - description: 读取知识库中的文档及其文件、修订版本和分段，并用元数据标注文档。
    name: 文档与分段
  - description: 跟踪、取消或重试索引，并列出知识库的后台任务。
    name: 索引任务
  - description: 跟踪文档文件、一批文件或数据源的删除，直到完成。
    name: 删除作业
  - description: 管理为知识库提供内容的数据源，以及它们的定时同步设置和连接。
    name: 数据源
  - description: 立即同步数据源，导入网站页面或提供商条目，并跟踪、取消或重试运行。
    name: 数据源同步与导入
  - description: 读取和更改知识库的模型与检索设置，并跟踪更改触发的迁移。
    name: 设置
paths:
  /knowledge-fs/spaces/{knowledge_base_id}/research-tasks/{research_task_id}:
    get:
      tags:
        - Research Tasks
      summary: 获取研究任务
      description: >-
        返回研究任务的当前状态：`stage`、目前为止的花费、限制、时间戳，以及失败时的错误详情。


        轮询直到 `stage` 为 `completed`、`failed` 或
        `canceled`。此对象不包含回答。规划、创建、轮询和读取结果的完整流程，详见
        [运行研究任务](/zh/api-reference/guides/knowledge-base#run-a-research-task)。
      operationId: getResearchTask
      parameters:
        - description: >-
            知识库 ID：即知识库 **API 访问** 对话框中所示服务 API
            端点的最后一段（`…/knowledge-fs/spaces/<knowledge base ID>`），也是地址栏中
            `/datasets/new/` 之后的那一段。
          in: path
          name: knowledge_base_id
          required: true
          schema:
            format: uuid
            type: string
        - description: >-
            研究任务 ID，来自
            [创建研究任务](/zh/api-reference/research-tasks/create-research-task)。
          in: path
          name: research_task_id
          required: true
          schema:
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              examples:
                budget_canceled:
                  summary: 响应示例 - 因预算取消
                  value:
                    budget_usd: 0.01
                    completed_at: 1788681618000
                    cost:
                      budgetExceeded: true
                      budgetUsd: 0.01
                      entries:
                        - costUsd: 0.0011
                          provider: openai
                          recordedAt: 1788681603000
                          step: research.plan
                          usage:
                            completionTokens: 58
                            estimated: false
                            promptTokens: 310
                            researchModelCallId: attempt:1:call-4
                            reserved: false
                            status: succeeded
                            totalTokens: 368
                        - costUsd: 0.0096
                          provider: openai
                          recordedAt: 1788681618000
                          step: research.judge
                          usage:
                            completionTokens: 190
                            estimated: false
                            promptTokens: 2640
                            researchModelCallId: attempt:1:call-5
                            reserved: false
                            status: succeeded
                            totalTokens: 2830
                      totalUsd: 0.0107
                    created_at: 1788681600000
                    error: null
                    failure: null
                    id: e4d1b7a2-3c5f-4d8e-9a0b-1c2d3e4f5a6b
                    knowledge_space_id: b2f1d3a4-5e6c-4a7b-8c9d-0e1f2a3b4c5d
                    limits:
                      max_retrieval_steps: 8
                      max_scanned_resources: 800
                      max_tool_calls: 12
                      timeout_ms: 120000
                    metadata:
                      client_request_id: client-20260907-0001
                      ticket: SUP-1042
                    mode: research
                    query: >-
                      What changed in the 2025 refund policy, and which regions
                      are affected?
                    stage: canceled
                    top_k: 10
                    updated_at: 1788681618000
                running:
                  summary: 响应示例 - 运行中
                  value:
                    budget_usd: 1.5
                    completed_at: null
                    cost:
                      budgetUsd: 1.5
                      entries:
                        - costUsd: 0.0011
                          provider: openai
                          recordedAt: 1788681603000
                          step: research.plan
                          usage:
                            completionTokens: 58
                            estimated: false
                            promptTokens: 310
                            researchModelCallId: attempt:1:call-6
                            reserved: false
                            status: succeeded
                            totalTokens: 368
                      totalUsd: 0.0011
                    created_at: 1788681600000
                    error: null
                    failure: null
                    id: e4d1b7a2-3c5f-4d8e-9a0b-1c2d3e4f5a6b
                    knowledge_space_id: b2f1d3a4-5e6c-4a7b-8c9d-0e1f2a3b4c5d
                    limits:
                      max_retrieval_steps: 8
                      max_scanned_resources: 800
                      max_tool_calls: 12
                      timeout_ms: 120000
                    metadata:
                      client_request_id: client-20260907-0001
                      ticket: SUP-1042
                    mode: research
                    query: >-
                      What changed in the 2025 refund policy, and which regions
                      are affected?
                    stage: retrieving
                    top_k: 10
                    updated_at: 1788681610000
              schema:
                $ref: '#/components/schemas/KnowledgeBaseResearchTask'
          description: 研究任务。
        '400':
          content:
            application/json:
              examples:
                knowledge_fs_invalid_request_path:
                  summary: knowledge_fs_invalid_request (path ID)
                  value:
                    code: knowledge_fs_invalid_request
                    message: Agent Knowledge Base request is invalid.
                    status: 400
          description: '- `knowledge_fs_invalid_request`：`research_task_id` 格式不正确。'
        '401':
          content:
            application/json:
              examples:
                knowledge_fs_invalid_credential:
                  summary: knowledge_fs_invalid_credential
                  value:
                    code: knowledge_fs_invalid_credential
                    message: Invalid Agent Knowledge Base service credential.
                    status: 401
                unauthorized:
                  summary: unauthorized
                  value:
                    code: unauthorized
                    message: Access token is invalid
                    status: 401
          description: >-
            - `unauthorized`：缺少 `Authorization` 请求头，或密钥无法识别、不是知识库 API 密钥。

            - `knowledge_fs_invalid_credential`：密钥有效，但其所属工作空间中没有此 ID
            的知识库，或该密钥未关联任何工作空间。
        '403':
          content:
            application/json:
              examples:
                forbidden:
                  summary: forbidden (rate limit)
                  value:
                    code: forbidden
                    message: >-
                      Sorry, you have reached the knowledge base request rate
                      limit of your subscription.
                    status: 403
                knowledge_fs_access_denied:
                  summary: knowledge_fs_access_denied (key scope)
                  value:
                    code: knowledge_fs_access_denied
                    message: Agent Knowledge Base operation is not allowed.
                    status: 403
                knowledge_fs_access_denied_2:
                  summary: knowledge_fs_access_denied (other knowledge base)
                  value:
                    code: knowledge_fs_access_denied
                    failure:
                      action: contact_admin
                      category: authorization
                      code: KNOWLEDGE_FS_ACCESS_DENIED
                      message: >-
                        You do not have permission to perform this Agent
                        Knowledge Base operation.
                      retryPolicy: never
                      traceId: 2a4d92fd-f0a6-4a39-abca-8944fc1b87b5
                    message: >-
                      You do not have permission to perform this Agent Knowledge
                      Base operation.
                    status: 403
          description: >-
            - `knowledge_fs_access_denied`：该密钥的访问范围限定为其他知识库、此知识库已关闭 **API
            访问**，或知识库未处于活动状态。

            - `knowledge_fs_access_denied`：该任务所属的知识库与路径中的知识库不同。

            - `forbidden`：在 Dify Cloud
            上，工作空间已达到其订阅套餐的知识库请求频率限制。所有调用都计入，读取操作也不例外。
        '404':
          content:
            application/json:
              examples:
                knowledge_fs_resource_not_found:
                  summary: knowledge_fs_resource_not_found
                  value:
                    code: knowledge_fs_resource_not_found
                    failure:
                      category: not_found
                      code: KNOWLEDGE_FS_NOT_FOUND
                      message: >-
                        The requested Agent Knowledge Base resource was not
                        found.
                      retryPolicy: never
                      traceId: e533c301-cd9c-48b7-a546-3bdce751dc31
                    message: The requested Agent Knowledge Base resource was not found.
                    status: 404
                not_found:
                  summary: not_found (feature off)
                  value:
                    code: not_found
                    message: >-
                      The requested URL was not found on the server. If you
                      entered the URL manually please check your spelling and
                      try again.
                    status: 404
          description: |-
            - `knowledge_fs_resource_not_found`：任务不存在、属于其他工作空间，或其所在知识库正在删除。
            - `not_found`：当前部署已关闭 Agent 知识库功能。
        '502':
          content:
            application/json:
              examples:
                knowledge_fs_upstream_unavailable:
                  summary: knowledge_fs_upstream_unavailable
                  value:
                    code: knowledge_fs_upstream_unavailable
                    message: Agent Knowledge Base is unavailable.
                    status: 502
          description: '- `knowledge_fs_upstream_unavailable`：未能及时收到响应，或无法读取响应。稍候重试。'
        '503':
          content:
            application/json:
              examples:
                knowledge_fs_operation_unavailable:
                  summary: knowledge_fs_operation_unavailable
                  value:
                    code: knowledge_fs_operation_unavailable
                    message: Agent Knowledge Base operation is not available.
                    status: 503
                knowledge_fs_operation_unavailable_upstream:
                  summary: knowledge_fs_operation_unavailable (temporary)
                  value:
                    code: knowledge_fs_operation_unavailable
                    failure:
                      action: retry
                      category: dependency
                      code: KNOWLEDGE_FS_UNAVAILABLE
                      message: >-
                        A service required by Agent Knowledge Base is
                        temporarily unavailable.
                      retryPolicy: manual
                      traceId: 5e2a9c17-3b4d-4f60-8a1b-2c3d4e5f6a7b
                    message: >-
                      A service required by Agent Knowledge Base is temporarily
                      unavailable.
                    status: 503
          description: >-
            - `knowledge_fs_operation_unavailable`：此工作空间尚未配置 Agent
            知识库功能、当前部署不提供此操作，或在请求鉴权期间该密钥对此知识库的访问权限发生了变化。

            - `knowledge_fs_operation_unavailable`：暂时无法处理该请求。按
            `failure.retryPolicy` 处理。

            -
            `knowledge_fs_operation_unavailable`：该知识库由经典知识库升级而来，仍在禁用原先已禁用或已归档的文档。稍后重试。
components:
  schemas:
    KnowledgeBaseResearchTask:
      properties:
        budget_usd:
          description: 请求中设置的花费上限，单位为 USD。未设置时为 `null`。
          nullable: true
          type: number
        completed_at:
          description: 任务到达 `completed`、`failed` 或 `canceled` 的时间，Unix 纪元毫秒。任务运行期间为 `null`。
          nullable: true
          type: number
        cost:
          description: 目前已记录的花费。
          properties:
            budgetExceeded:
              description: 花费超出 `budgetUsd` 并因此取消任务时为 `true`，否则不返回此字段。
              type: boolean
            budgetUsd:
              description: 请求中的 `budgetUsd`。未设置预算时不返回此字段。
              type: number
            entries:
              description: 每次已记录的模型调用对应一项，最早的在前。
              items:
                properties:
                  costUsd:
                    description: 该次调用的花费，单位为 USD。
                    type: number
                  provider:
                    description: 处理该次调用的模型供应商。
                    type: string
                  recordedAt:
                    description: 记录该花费的时间，Unix 纪元毫秒。
                    type: number
                  step:
                    description: >-
                      发起该调用的步骤：`pageindex.layer`、`pageindex.semantic`、`pageindex.whole-tree`、`research.judge`、`research.plan`、`graph.plan`、`query.answer`
                      或 `query.image-expand`。
                    type: string
                  usage:
                    description: >-
                      该次调用的 token
                      用量：`promptTokens`、`completionTokens`、`totalTokens`、`estimated`、`reserved`、`status`（`reserved`、`succeeded`
                      或 `failed`）和 `researchModelCallId`。仍在进行中的调用所预留的额度也算作一项，并计入
                      `totalUsd`。
                    type: object
                type: object
              type: array
            totalUsd:
              description: '`entries[].costUsd` 的总和，单位为 USD。记录第一次模型调用之前为 `0`。'
              type: number
          type: object
        created_at:
          description: 任务创建时间，Unix 纪元毫秒。
          type: number
        error:
          description: >-
            错误码，与 `failure.code` 的值相同。仅当 `stage` 为 `failed` 时有值，其他情况下为
            `null`，已取消的任务也是如此。


            研究任务失败时，`failure.code`
            为以下之一：`RESEARCH_TASK_CAPABILITY_REVOKED`、`RESEARCH_TASK_DISPATCH_DEAD`、`RESEARCH_TASK_EXECUTION_ATTEMPTS_EXHAUSTED`、`RESEARCH_TASK_FAILED`、`RESEARCH_TASK_PERMISSION_SNAPSHOT_INVALID`
            或 `RESEARCH_TASK_RUNTIME_SNAPSHOT_INVALID`。
          nullable: true
          type: string
        failure:
          description: >-
            错误详情。仅当 `stage` 为 `failed` 时有值，其他情况下为 `null`。此处没有值的成员为
            `null`。`traceId` 为任务 ID。


            当 `action` 为 `retry` 时，使用
            [创建研究任务](/zh/api-reference/research-tasks/create-research-task)
            创建新任务。
          nullable: true
          properties:
            action:
              description: >-
                建议的下一步操作（如有）：`configure_model`、`configure_parser`、`configure_source`、`contact_admin`、`reupload`
                或 `retry`。不适用时为 `null`。
              nullable: true
              type: string
            category:
              description: >-
                失败类别：`authorization`、`canceled`、`configuration`、`conflict`、`dependency`、`internal`、`not_found`、`rate_limit`、`timeout`
                或 `validation`。
              type: string
            code:
              description: 研究任务的错误码，与此任务的 `error` 一致。
              type: string
            message:
              description: 任务失败的公开消息。不会暴露提供商的错误详情。
              type: string
            parameters:
              additionalProperties: true
              description: >-
                描述失败细节的值，最多 8 个，键取自
                `attempt`、`currentRowVersion`、`documentCount`、`expectedRowVersion`、`fileSizeBytes`、`limit`、`maxFileSizeBytes`、`maxItems`、`modelType`、`providerKind`、`retryAfterSeconds`
                和 `status`。没有时为 `null`。
              nullable: true
              type: object
            retryPolicy:
              description: >-
                重试是否有用：`automatic`（服务会自动重试）、`manual`（需自行重试）、`after_configuration`（先在
                Dify 中修正知识库配置）或 `never`（需修改请求）。
              type: string
            stage:
              description: 始终为 `research`。
              nullable: true
              type: string
            traceId:
              description: 研究任务 ID。联系管理员时提供此 ID。
              nullable: true
              type: string
          type: object
        id:
          description: 研究任务 ID。在研究任务的各项操作中用作 `research_task_id`。
          type: string
        knowledge_space_id:
          description: 知识库的内部 ID，并非路径中的知识库 ID。
          type: string
        limits:
          description: >-
            请求中的限制项，键名为 snake_case。请求未携带 `limits` 时为 `null`，未发送的成员为 `null`。再次发送给
            [创建研究任务](/zh/api-reference/research-tasks/create-research-task)
            前，需将键名转换回 camelCase。
          nullable: true
          properties:
            max_retrieval_steps:
              description: 请求中 `limits.maxRetrievalSteps` 的值。
              nullable: true
              type: integer
            max_scanned_resources:
              description: 请求中 `limits.maxScannedResources` 的值。
              nullable: true
              type: integer
            max_tool_calls:
              description: 请求中 `limits.maxToolCalls` 的值。
              nullable: true
              type: integer
            timeout_ms:
              description: 请求中 `limits.timeoutMs` 的值。
              nullable: true
              type: integer
          type: object
        metadata:
          description: 创建时发送的 `metadata` 对象，不含以 `__knowledgeFs` 开头的键。
          type: object
        mode:
          description: 任务的检索深度：`fast`、`deep` 或 `research`。
          nullable: true
          type: string
        query:
          description: 存储的研究问题。
          type: string
        query_images:
          description: 原始查询中使用的图片。纯文本查询不返回此字段。
          items:
            properties:
              byte_size:
                description: 在此 API 中始终为 `null`。
                minimum: 0
                nullable: true
                type: integer
              mime_type:
                description: 在此 API 中始终为 `null`。
                nullable: true
                type: string
              name:
                description: 在此 API 中始终为 `null`。
                nullable: true
                type: string
              preview_url:
                description: 在此 API 中始终为 `null`。
                nullable: true
                type: string
              upload_file_id:
                description: 原始查询中所用图片文件的 ID。
                type: string
            required:
              - upload_file_id
            type: object
          type: array
        stage:
          description: >-
            任务在生命周期中所处的阶段。任务每次前进一个阶段：


            - `queued`：已受理，等待工作进程处理。

            - `planning`：正在确定检索计划。

            - `retrieving`：正在检索知识库，可能会写入检索检查点。

            - `analyzing`：正在阅读和权衡检索到的分段。

            - `generating`：正在撰写回答，最终结果在此阶段写入。

            - `completed`：已完成。可用
            [获取研究任务结果列表](/zh/api-reference/research-tasks/list-research-task-results)
            读取结果。

            - `failed`：因错误停止。详见 `error` 和 `failure`。

            - `canceled`：因
            [取消研究任务](/zh/api-reference/research-tasks/cancel-research-task)
            或超出预算而停止。

            - `paused`：任务已暂停。可向部署的运维人员确认失败详情（如有），或取消该任务。


            `completed`、`failed` 和 `canceled` 为终态。
          type: string
        top_k:
          description: 检索结果合并并重排序后最多保留的分段数：取请求中的 `topK`，未传时取知识库的 **Top K**。
          nullable: true
          type: integer
        updated_at:
          description: 任务记录最后更新的时间（Unix 纪元毫秒），包括内部检查点和重试调度产生的更新。
          type: number
      type: object
  securitySchemes:
    ApiKeyAuth:
      bearerFormat: API_KEY
      description: >-
        每个请求都通过 API Key 认证：`Authorization: Bearer {API_KEY}`。应用接口使用应用 API
        Key，知识库接口使用知识库 API Key（[快速开始](/zh/api-reference/guides/get-started)）。


        API Key 应保存在服务端，切勿嵌入客户端代码。缺失或无效的 Key 会返回 HTTP `401`（`unauthorized`）。
      scheme: bearer
      type: http

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.