ソース一覧を取得
ナレッジベースのソースを、ソース ID の昇順で一覧表示します。各ソースには、同期スケジュール、最後に完了した同期またはインポート、現在の実行が含まれます。実行中のものがない場合は、現在の実行の代わりに最新の同期が含まれます。
ソースの削除が受け付けられた時点で、そのソースはこの一覧に表示されなくなります。
同期の開始と追跡の方法については、ソースの同期とスケジュール設定 を参照してください。
curl --request GET \
--url https://api.dify.ai/v1/knowledge-fs/spaces/{knowledge_base_id}/sources \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.dify.ai/v1/knowledge-fs/spaces/{knowledge_base_id}/sources"
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}/sources', {
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}/sources',
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}/sources"
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}/sources"))
.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}/sources')
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": [
{
"connection_id": "c3d4e5f6-7a8b-4c9d-8e0f-1a2b3c4d5e6f",
"created_at": "2026-09-01T08:00:00Z",
"credential_configured": null,
"id": "6f1c2b0e-3d0b-4a5e-9f4c-1c0e6a7b8d90",
"knowledge_space_id": "0a9d3c2e-5b6f-4e1a-8c7d-2f3e4a5b6c7d",
"last_synced_at": "2026-09-05T10:12:00Z",
"metadata": {
"client_request_id": "source-20260907-0001",
"providerKind": "website",
"tenantId": "2f1e0d9c-8b7a-4695-8473-2a1b0c9d8e7f"
},
"name": "Docs site",
"permission_scope": [],
"status": "active",
"sync_policy": {
"created_at": "2026-09-01T08:05:00Z",
"custom_interval_seconds": null,
"enabled": true,
"expected_source_version": 7,
"id": "8e7d6c5b-4a39-4f28-9e17-0d1c2b3a4f5e",
"knowledge_space_id": "0a9d3c2e-5b6f-4e1a-8c7d-2f3e4a5b6c7d",
"mode": "interval",
"next_run_at": "2026-09-06T10:00:00Z",
"revision": 2,
"source_id": "6f1c2b0e-3d0b-4a5e-9f4c-1c0e6a7b8d90",
"updated_at": "2026-09-05T10:00:00Z"
},
"sync_workflow": {
"canceled_at": null,
"checkpoint": "source-committed",
"completed_at": "2026-09-05T10:12:00Z",
"created_at": "2026-09-05T10:00:00Z",
"cursor": "ss1:eyJmaW5nZXJwcmludCI6IjgxZDk5OWY4YjI4ZDZhMGFlMTVmNjQxYzE2NjE3ZWNlMTBjYTcxMzE3OWU1MmVhMTYwODYyMzExMDcyYmQ4YmUiLCJraW5kIjoid2Vic2l0ZSIsIm9mZnNldCI6MCwicGhhc2UiOiJlb2YiLCJwcm9ncmVzc0NvbXBsZXRlZCI6NDUsInByb2dyZXNzVG90YWwiOjQ1fQ",
"execution_attempts": 1,
"failure": null,
"id": "d4c3b2a1-6f5e-4d7c-8b9a-0f1e2d3c4b5a",
"kind": "sync",
"knowledge_space_id": "0a9d3c2e-5b6f-4e1a-8c7d-2f3e4a5b6c7d",
"last_error_code": null,
"max_execution_attempts": 5,
"progress_completed": 45,
"progress_failed": 0,
"progress_skipped": 0,
"progress_total": 45,
"source_id": "6f1c2b0e-3d0b-4a5e-9f4c-1c0e6a7b8d90",
"state": "completed",
"updated_at": "2026-09-05T10:12:00Z"
},
"type": "web",
"updated_at": "2026-09-03T09:20:00Z",
"uri": "https://docs.example.com",
"version": 7
}
],
"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_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"
},
"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"
},
"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
すべてのリクエストは API キーで認証します:Authorization: Bearer {API_KEY}。アプリのエンドポイントにはアプリの API キーを、ナレッジのエンドポイントにはナレッジベースの API キーを使用します(Dify API クイックスタート)。
キーはサーバーサイドで保管し、クライアントコードには決して埋め込まないでください。キーが欠落または無効なリクエストは HTTP 401(unauthorized)で失敗します。
Path parameters
…/knowledge-fs/spaces/<knowledge base ID>)です。アドレスバーでは /datasets/new/ の後のセグメントです。Query parameters
Responses
Show child attributesHide child attributes
connectionId として渡します。紐付けられていない場合は null です。true です。接続に紐付けられたソースのように参照を保持していない場合は null です。completed または zero_results)またはインポートの完了日時です。ソース一覧を取得 でのみ設定されます。それ以外の操作、およびソースが一度も同期されていない場合は null です。parameters が含まれる場合があります。接続側で管理される設定は、ここに含まれるとは限りません。認証情報に類するキーは除去されます。別のソースを作成する際に、このオブジェクト全体をコピーしないでください。active、syncing、error、disabled のいずれかです。ほとんどの操作は保存されている値を返します。ソース一覧を取得 は、直近の同期の実行から値を導き出します:
failedまたはcanceledの実行:errorcompletedまたはzero_resultsの実行:active- 進行中の実行:
syncing
disabled が上書きされることはありません。
null です。単独で取得するには 同期ポリシーを取得、変更するには 同期ポリシーを更新 を使用します。Show child attributesHide child attributes
mode: custom の場合の間隔(秒)です。ほかのモードでは null です。mode: manual では常に false です。version です。manual(スケジュールなし)、interval(24 時間ごと)、custom(custom_interval_seconds ごと)のいずれかです。null です。expectedRevision として送信します。更新のたび、およびスケジュール同期が開始されるたびに増加します。Show child attributesHide child attributes
state が canceled でない場合は null です。queued、provider-read、preview-staged、selection-frozen、materialized、cleanup-staging、source-committed のいずれかです。ソースの実行を再試行 は、チェックポイントにかかわらず実行を最初からやり直します。completed、zero_results、failed、canceled のいずれかで終了した日時(ISO 8601)です。実行中は null です。null です。state が failed の場合のエラー詳細です。stage は失敗時点の実行の checkpoint、traceId は実行 ID です。それ以外の場合は null です。Show child attributesHide child attributes
configure_model、configure_parser、configure_source、contact_admin、reupload、retry のいずれかです。該当しない場合は null で、HTTP エラーのボディでは省略されます。authorization、canceled、configuration、conflict、dependency、internal、not_found、rate_limit、timeout、validation のいずれかです。KNOWLEDGE_FS_CONFLICT、SOURCE_CREDENTIAL_TEST_FAILED)。attempt、currentRowVersion、documentCount、expectedRowVersion、fileSizeBytes、limit、maxFileSizeBytes、maxItems、modelType、providerKind、retryAfterSeconds、status のいずれかです。値がない場合は null で、HTTP エラーのボディでは省略されます。automatic(サービスが自動で再試行)、manual(呼び出し側で再試行)、after_configuration(先に Dify でナレッジベースの設定を修正)、never(リクエストを変更)のいずれかです。query_generation、credential-test)。該当しない場合は null で、HTTP エラーのボディでは省略されます。null になることがあり、HTTP エラーのボディでは省略されることがあります。実行の処理内容です:
sync:ソースを同期、ソースを更新、スケジュール、または Dify によって開始されます。crawl-preview:ウェブサイトのクロールをプレビュー によって開始されます。選択したページをインポート がこの実行からインポートしている間も、種類は変わりません。crawl-import:ウェブサイトのページをインポート によって開始されます。online-document-import、online-drive-import:ソースのアイテムをインポート によって開始されます。
Dify でソースを追加または編集した場合も、Dify がプレビューとインポートを開始します。
state が failed の場合は failure.code の値です。それ以外の場合は null です。0 です。1 つのアイテムが失敗すると、実行全体が失敗するためです。0 です。実行が処理する予定のアイテム数です。インポートではリクエストされたページまたはアイテム、クロールプレビューではこれまでに一時保存されたページ、同期では一覧の取得後のソースのアイテムを数えます。判明するまでは null です。
ウェブサイトのページをインポート の実行が URL をクロールしている間は、progress_completed と progress_total のどちらも、それまでにクロールしたページ数を数えます。すべての URL のクロールが終わると、URL の数を総数として 0 から数え直します。
実行の進行状況です。
進行中の状態:
queued:ワーカー待ちcrawling:クロールプレビューによるページの取得中preview_ready:クロールプレビューが 選択したページをインポート または ソースの実行をキャンセル を待機中importing:アイテムのインポートとインデックス処理中syncing:ソースのドキュメントを更新中
最終状態:
completed:すべてのアイテムのインポートまたは更新、インデックス処理、アクティブ化が完了zero_results:クロールプレビューで見つかったページが 0 件failed:failureを参照canceled
failed または canceled の後は、ソースの実行を再試行 で再実行でき、ソースを同期 で新しい同期を開始できます。
web(ウェブサイトのクロール)、connector(オンラインドキュメントまたはオンラインドライブ)、upload、object-storage のいずれかです。
connector ソースでは、metadata.providerKind は online-document または online-drive です。web ソースでは website です。
upload と object-storage のソースには、Dify が内容を追加します。
web ソースでは、クロールのルート URL です。Dify で作成されたコネクタソースでは connector://<connection_id> です。null です。cursor として送り返してください。