curl --request POST \
--url https://api.example.com/api/v1/business/knowledge/search \
--header 'Content-Type: application/json' \
--header 'x-project-id: <x-project-id>' \
--data '
{
"source_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"folder_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"tag_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"workflow_status": [
"<string>"
]
}
'import requests
url = "https://api.example.com/api/v1/business/knowledge/search"
payload = {
"source_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"folder_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"tag_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"workflow_status": ["<string>"]
}
headers = {
"x-project-id": "<x-project-id>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-project-id': '<x-project-id>', 'Content-Type': 'application/json'},
body: JSON.stringify({
source_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
folder_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
tag_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
workflow_status: ['<string>']
})
};
fetch('https://api.example.com/api/v1/business/knowledge/search', 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.example.com/api/v1/business/knowledge/search",
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([
'source_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'folder_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'tag_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'workflow_status' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-project-id: <x-project-id>"
],
]);
$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.example.com/api/v1/business/knowledge/search"
payload := strings.NewReader("{\n \"source_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"folder_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"tag_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"workflow_status\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-project-id", "<x-project-id>")
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.example.com/api/v1/business/knowledge/search")
.header("x-project-id", "<x-project-id>")
.header("Content-Type", "application/json")
.body("{\n \"source_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"folder_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"tag_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"workflow_status\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/business/knowledge/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-project-id"] = '<x-project-id>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"source_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"folder_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"tag_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"workflow_status\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"query_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"chunks": [],
"citations": [],
"answer": "<string>",
"reasoning": "",
"usage_instruction": "",
"strategy": "SIMPLE",
"leafmerger_rolled_up": false,
"bm25_fired": false,
"cache_hit": false
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Search knowledge sources
Semantic search over the project’s knowledge sources (kih-hub RAG).
Returns the matched chunks and, when generate_answer is True, a generated answer; set it False to get raw chunks only. Optionally scope the search to specific source_ids/folder_ids/tag_ids or workflow_status; omit all to search the whole project. A source is only indexed here once it finishes syncing, so an unscoped query already excludes sources still queued, syncing, or failed - no source_ids scoping needed to search “synced only”.
curl --request POST \
--url https://api.example.com/api/v1/business/knowledge/search \
--header 'Content-Type: application/json' \
--header 'x-project-id: <x-project-id>' \
--data '
{
"source_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"folder_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"tag_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"workflow_status": [
"<string>"
]
}
'import requests
url = "https://api.example.com/api/v1/business/knowledge/search"
payload = {
"source_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"folder_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"tag_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"workflow_status": ["<string>"]
}
headers = {
"x-project-id": "<x-project-id>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-project-id': '<x-project-id>', 'Content-Type': 'application/json'},
body: JSON.stringify({
source_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
folder_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
tag_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
workflow_status: ['<string>']
})
};
fetch('https://api.example.com/api/v1/business/knowledge/search', 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.example.com/api/v1/business/knowledge/search",
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([
'source_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'folder_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'tag_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'workflow_status' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-project-id: <x-project-id>"
],
]);
$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.example.com/api/v1/business/knowledge/search"
payload := strings.NewReader("{\n \"source_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"folder_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"tag_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"workflow_status\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-project-id", "<x-project-id>")
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.example.com/api/v1/business/knowledge/search")
.header("x-project-id", "<x-project-id>")
.header("Content-Type", "application/json")
.body("{\n \"source_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"folder_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"tag_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"workflow_status\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/business/knowledge/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-project-id"] = '<x-project-id>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"source_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"folder_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"tag_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"workflow_status\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"query_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"chunks": [],
"citations": [],
"answer": "<string>",
"reasoning": "",
"usage_instruction": "",
"strategy": "SIMPLE",
"leafmerger_rolled_up": false,
"bm25_fired": false,
"cache_hit": false
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Headers
Project ID for tenant scoping
Overrides the key's workspace
User API key
Query Parameters
Search text to match against knowledge source content.
Maximum number of matched chunks to return.
If True, also return a generated answer; if False, return raw matched chunks only.
Body
Response
Successful Response
Retrieval response. answer is null in chunks-only mode.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Was this page helpful?