Run Datasource Node
Runs a single datasource node in the knowledge pipeline and streams its execution events.
curl --request POST \
--url https://{api_base_url}/datasets/{dataset_id}/pipeline/datasource/nodes/{node_id}/run \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"inputs": {},
"is_published": true,
"credential_id": "<string>"
}
'import requests
url = "https://{api_base_url}/datasets/{dataset_id}/pipeline/datasource/nodes/{node_id}/run"
payload = {
"inputs": {},
"is_published": True,
"credential_id": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({inputs: {}, is_published: true, credential_id: '<string>'})
};
fetch('https://{api_base_url}/datasets/{dataset_id}/pipeline/datasource/nodes/{node_id}/run', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{api_base_url}/datasets/{dataset_id}/pipeline/datasource/nodes/{node_id}/run",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'inputs' => [
],
'is_published' => true,
'credential_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{api_base_url}/datasets/{dataset_id}/pipeline/datasource/nodes/{node_id}/run"
payload := strings.NewReader("{\n \"inputs\": {},\n \"is_published\": true,\n \"credential_id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://{api_base_url}/datasets/{dataset_id}/pipeline/datasource/nodes/{node_id}/run")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"inputs\": {},\n \"is_published\": true,\n \"credential_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{api_base_url}/datasets/{dataset_id}/pipeline/datasource/nodes/{node_id}/run")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"inputs\": {},\n \"is_published\": true,\n \"credential_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyAuthorizations
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 base ID, from List Knowledge Bases. For a scoped key, copy the ID from the Dify URL.
ID of the datasource node to run, from List Datasource Plugins.
Body
Type of the datasource.
online_document, local_file, website_crawl, online_drive Input variables for the datasource node.
Whether to run the published version of the node instead of the draft.
ID of the credential to authenticate with the datasource, from the credentials array of List Datasource Plugins.
Response
Streaming response with node execution events.
Server-Sent Events stream of node execution progress and results. See SSE Streaming for parsing.
Was this page helpful?
curl --request POST \
--url https://{api_base_url}/datasets/{dataset_id}/pipeline/datasource/nodes/{node_id}/run \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"inputs": {},
"is_published": true,
"credential_id": "<string>"
}
'import requests
url = "https://{api_base_url}/datasets/{dataset_id}/pipeline/datasource/nodes/{node_id}/run"
payload = {
"inputs": {},
"is_published": True,
"credential_id": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({inputs: {}, is_published: true, credential_id: '<string>'})
};
fetch('https://{api_base_url}/datasets/{dataset_id}/pipeline/datasource/nodes/{node_id}/run', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{api_base_url}/datasets/{dataset_id}/pipeline/datasource/nodes/{node_id}/run",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'inputs' => [
],
'is_published' => true,
'credential_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{api_base_url}/datasets/{dataset_id}/pipeline/datasource/nodes/{node_id}/run"
payload := strings.NewReader("{\n \"inputs\": {},\n \"is_published\": true,\n \"credential_id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://{api_base_url}/datasets/{dataset_id}/pipeline/datasource/nodes/{node_id}/run")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"inputs\": {},\n \"is_published\": true,\n \"credential_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{api_base_url}/datasets/{dataset_id}/pipeline/datasource/nodes/{node_id}/run")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"inputs\": {},\n \"is_published\": true,\n \"credential_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body