List Research Task Results
Lists the results a research task has written so far, in ascending sequence.
A task writes at most two results: a retrieval checkpoint when available, followed by a final result. Check the last result for answer. A task that stops early may have no results.
For the plan, create, poll, and read flow, see Run a Research Task.
curl --request GET \
--url https://api.dify.ai/v1/knowledge-fs/spaces/{knowledge_base_id}/research-tasks/{research_task_id}/partials \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.dify.ai/v1/knowledge-fs/spaces/{knowledge_base_id}/research-tasks/{research_task_id}/partials"
headers = {
"Authorization": "Bearer <token>",
}
response = requests.request("GET", url, headers=headers)
print(response.text)const response = await fetch('https://api.dify.ai/v1/knowledge-fs/spaces/{knowledge_base_id}/research-tasks/{research_task_id}/partials', {
method: 'GET',
headers: {
'Authorization': 'Bearer <token>'
}
});
const data = await response.json();
console.log(data);<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.dify.ai/v1/knowledge-fs/spaces/{knowledge_base_id}/research-tasks/{research_task_id}/partials',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer <token>',
],
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;package main
import (
"fmt"
"io"
"net/http"
)
func main() {
url := "https://api.dify.ai/v1/knowledge-fs/spaces/{knowledge_base_id}/research-tasks/{research_task_id}/partials"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.dify.ai/v1/knowledge-fs/spaces/{knowledge_base_id}/research-tasks/{research_task_id}/partials"))
.header("Authorization", "Bearer <token>")
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());require 'uri'
require 'net/http'
url = URI('https://api.dify.ai/v1/knowledge-fs/spaces/{knowledge_base_id}/research-tasks/{research_task_id}/partials')
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = url.scheme == 'https'
request = Net::HTTP::Get.new(url)
request['Authorization'] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"answer": null,
"evidence_bundle": {
"createdAt": "2026-09-06T08:00:10.000Z",
"id": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d",
"items": [
{
"citations": [
{
"documentAssetId": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
"documentVersion": 1,
"pageNumber": 2,
"sectionPath": [
"Policies",
"Refunds"
]
}
],
"conflicts": [],
"freshness": {
"sourceUpdatedAt": "2026-08-30T09:12:00.000Z",
"status": "fresh"
},
"metadata": {},
"nodeId": "5d4c3b2a-1f0e-4d9c-8b7a-6f5e4d3c2b1a",
"score": 0.82,
"scores": {
"final": 0.82,
"rerank": 0.85,
"retrieval": 0.71
},
"text": "From 1 March 2025, refunds are issued within 14 days of the return being received. The previous window was 30 days."
},
{
"citations": [
{
"documentAssetId": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
"documentVersion": 1,
"pageNumber": 3,
"sectionPath": [
"Policies",
"Refunds",
"Regional exceptions"
]
}
],
"conflicts": [],
"freshness": {
"sourceUpdatedAt": "2026-08-30T09:12:00.000Z",
"status": "fresh"
},
"metadata": {},
"nodeId": "c3b2a1f0-e9d8-4c7b-8a6f-5e4d3c2b1a09",
"score": 0.77,
"scores": {
"final": 0.77,
"rerank": 0.8,
"retrieval": 0.66
},
"text": "The 14-day window applies to orders shipped to the EU and the UK. Other regions keep the 30-day window until further notice."
}
],
"missingEvidence": [],
"query": "What changed in the 2025 refund policy, and which regions are affected?",
"state": "partial"
},
"knowledge_space_id": "b2f1d3a4-5e6c-4a7b-8c9d-0e1f2a3b4c5d",
"research_task_job_id": "e4d1b7a2-3c5f-4d8e-9a0b-1c2d3e4f5a6b",
"sequence": 1
},
{
"answer": "The 2025 policy shortened the refund window from 30 days to 14 days after the return is received, effective 1 March 2025. The change applies to orders shipped to the EU and the UK; other regions keep the 30-day window.",
"evidence_bundle": {
"createdAt": "2026-09-06T08:00:41.000Z",
"id": "1f2e3d4c-5b6a-4978-8a7b-6c5d4e3f2a1b",
"items": [
{
"citations": [
{
"artifactHash": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
"documentAssetId": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
"documentVersion": 1,
"endOffset": 1978,
"pageNumber": 2,
"sectionPath": [
"Policies",
"Refunds"
],
"startOffset": 1840
}
],
"conflicts": [
{
"reason": "States a 14-day window while another chunk keeps 30 days for some regions.",
"severity": "info",
"withNodeId": "c3b2a1f0-e9d8-4c7b-8a6f-5e4d3c2b1a09"
}
],
"freshness": {
"observedAt": "2026-09-06T08:00:12.000Z",
"sourceUpdatedAt": "2026-08-30T09:12:00.000Z",
"status": "fresh"
},
"metadata": {},
"nodeId": "5d4c3b2a-1f0e-4d9c-8b7a-6f5e4d3c2b1a",
"score": 0.82,
"scores": {
"final": 0.82,
"freshness": 0.9,
"rerank": 0.85,
"retrieval": 0.71
},
"text": "From 1 March 2025, refunds are issued within 14 days of the return being received. The previous window was 30 days."
},
{
"citations": [
{
"documentAssetId": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
"documentVersion": 1,
"pageNumber": 3,
"sectionPath": [
"Policies",
"Refunds",
"Regional exceptions"
]
}
],
"conflicts": [],
"freshness": {
"observedAt": "2026-09-06T08:00:12.000Z",
"sourceUpdatedAt": "2026-08-30T09:12:00.000Z",
"status": "fresh"
},
"metadata": {},
"nodeId": "c3b2a1f0-e9d8-4c7b-8a6f-5e4d3c2b1a09",
"score": 0.77,
"scores": {
"final": 0.77,
"freshness": 0.9,
"rerank": 0.8,
"retrieval": 0.66
},
"text": "The 14-day window applies to orders shipped to the EU and the UK. Other regions keep the 30-day window until further notice."
}
],
"missingEvidence": [
{
"expectedEvidenceId": "7e6d5c4b-3a29-4180-9f8e-7d6c5b4a3928",
"metadata": {},
"reason": "not-retrieved",
"text": "No chunk lists the effective date for regions outside the EU and the UK."
}
],
"query": "What changed in the 2025 refund policy, and which regions are affected?",
"retrievalQuery": "2025 refund policy changes refund window regions affected",
"state": "answerable"
},
"knowledge_space_id": "b2f1d3a4-5e6c-4a7b-8c9d-0e1f2a3b4c5d",
"research_task_job_id": "e4d1b7a2-3c5f-4d8e-9a0b-1c2d3e4f5a6b",
"sequence": 2
}
],
"next_cursor": null
}{
"code": "knowledge_fs_invalid_request",
"message": "Agent Knowledge Base request is invalid.",
"status": 400,
"violations": [
{
"field": [
"limit"
],
"type": "less_than_equal"
}
]
}{
"code": "knowledge_fs_invalid_request",
"message": "Agent Knowledge Base request is invalid.",
"status": 400
}{
"code": "knowledge_fs_invalid_credential",
"message": "Invalid Agent Knowledge Base service credential.",
"status": 401
}{
"code": "unauthorized",
"message": "Access token is invalid",
"status": 401
}{
"code": "forbidden",
"message": "Sorry, you have reached the knowledge base request rate limit of your subscription.",
"status": 403
}{
"code": "knowledge_fs_access_denied",
"message": "Agent Knowledge Base operation is not allowed.",
"status": 403
}{
"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": "602b9b60-6564-4ba7-8b59-54312d41377c"
},
"message": "You do not have permission to perform this Agent Knowledge Base operation.",
"status": 403
}{
"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": "ca5eb2d9-4242-4950-877c-6c5207b1441e"
},
"message": "The requested Agent Knowledge Base resource was not found.",
"status": 404
}{
"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
}{
"code": "knowledge_fs_upstream_unavailable",
"message": "Agent Knowledge Base is unavailable.",
"status": 502
}{
"code": "knowledge_fs_operation_unavailable",
"message": "Agent Knowledge Base operation is not available.",
"status": 503
}{
"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
}Authorization
Every request authenticates with an API key: Authorization: Bearer {API_KEY}. App endpoints take an app API key; knowledge endpoints take a knowledge base API key (Get Started).
Keep keys server-side; never embed them in client code. Requests with a missing or invalid key fail with HTTP 401 (unauthorized).
Path parameters
…/knowledge-fs/spaces/<knowledge base ID>), and the segment after /datasets/new/ in the address bar.Query parameters
Responses
sequence.Show child attributesHide child attributes
null on the retrieval checkpoint.Retrieved chunks the task had collected when this result was written.
An item whose document file was deleted after retrieval comes back as a placeholder:
textisEvidence deleted or unavailable.citations[]keep onlydocumentAssetId,documentVersion, and an emptysectionPath.conflictsis empty.freshness.statusisunknown.metadata.traceEvidenceAvailabilityis{"status": "unavailable", "reason": "document-deleted-or-unavailable"}.
Show child attributesHide child attributes
Show child attributesHide child attributes
Show child attributesHide child attributes
documentVersion to Get Document by File.version at retrieval time.traceEvidenceAvailability on placeholder items.0 to 1. The same value as scores.final.0 to 1.query. Absent otherwise.partial (the retrieval checkpoint, before analysis runs), answerable, not-enough-evidence, conflict (sources disagree), or permission-limited (permissions kept some chunks out).1.null on the last page. Send it back as cursor.