List Knowledge bases accessible to the API key
curl --request GET \
--url https://api.langdock.com/knowledge \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.langdock.com/knowledge"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.langdock.com/knowledge', 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.langdock.com/knowledge",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.langdock.com/knowledge"
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))
}HttpResponse<String> response = Unirest.get("https://api.langdock.com/knowledge")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.langdock.com/knowledge")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_bodyKnowledge Folder API
List Knowledge bases
List Knowledge bases a workspace API key can already use
GET
/
knowledge
List Knowledge bases accessible to the API key
curl --request GET \
--url https://api.langdock.com/knowledge \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.langdock.com/knowledge"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.langdock.com/knowledge', 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.langdock.com/knowledge",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.langdock.com/knowledge"
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))
}HttpResponse<String> response = Unirest.get("https://api.langdock.com/knowledge")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.langdock.com/knowledge")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_bodyLists Knowledge bases the API key can already use. Use this endpoint to discover ids, names, roles, and file counts before you upload, search, or manage access.
This endpoint lists Knowledge bases, not files. To list files inside one Knowledge base, use Retrieve Files.
An unknown
Before You Start
- API key scope: Requires an API key with the
KNOWLEDGE_FOLDER_APIscope. Only workspace API keys receive Knowledge bases in this list. Personal keys return an empty list. See Share Knowledge bases with the API for setup instructions. - Knowledge bases: The Knowledge Folder API manages resources that appear as Knowledge bases in the Library.
Base URL
https://api.langdock.com
Dedicated deploymentsReplace
api.langdock.com with <your-deployment-url>/api/public in all requests.Request Format
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | No | Number of Knowledge bases to return. Default: 50. Minimum: 1. Maximum: 100. |
cursor | string | No | UUID of the last Knowledge base from the previous page. |
Examples
List Knowledge bases with cURL
curl -X GET "https://api.langdock.com/knowledge?limit=50" \
-H "Authorization: Bearer YOUR_API_KEY"
List Knowledge bases with JavaScript
const axios = require("axios");
async function listKnowledgeBases(cursor) {
const response = await axios.get("https://api.langdock.com/knowledge", {
params: {
limit: 50,
cursor,
},
headers: {
Authorization: "Bearer YOUR_API_KEY",
},
});
return response.data;
}
const firstPage = await listKnowledgeBases();
console.log(`Found ${firstPage.result.folders.length} Knowledge bases`);
firstPage.result.folders.forEach((folder) => {
console.log(`- ${folder.name} (${folder.role}, ${folder.fileCount} files)`);
});
Response Format
Success Response (200 OK)
{
status: "success";
result: {
folders: Array<{
id: string; // Knowledge base ID
name: string; // Knowledge base name
description: string | null; // Knowledge base description
createdAt: string; // ISO 8601 timestamp
updatedAt: string; // ISO 8601 timestamp
fileCount: number; // Non-deleted files in the Knowledge base
role: "USER" | "EDITOR"; // This key's role. USER is Viewer.
}>;
nextCursor?: string; // Present when another page remains
};
}
role is EDITOR when the key has an explicit Editor grant. It is USER when the key has an explicit Viewer grant, or when the Knowledge base allows API search without an explicit key grant.
Results are ordered by createdAt descending, then id descending.
Example Response
{
"status": "success",
"result": {
"folders": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Product handbook",
"description": "Internal product documentation",
"createdAt": "2026-08-12T09:15:00.000Z",
"updatedAt": "2026-08-28T14:02:00.000Z",
"fileCount": 12,
"role": "EDITOR"
},
{
"id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"name": "Support articles",
"description": null,
"createdAt": "2026-07-03T11:00:00.000Z",
"updatedAt": "2026-08-01T16:40:00.000Z",
"fileCount": 48,
"role": "USER"
}
],
"nextCursor": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
}
}
Error Handling
| Status | Meaning |
|---|---|
400 | Invalid limit or cursor |
401 | Invalid or missing API key |
403 | Missing KNOWLEDGE_FOLDER_API scope |
429 | Rate limit exceeded |
500 | Unexpected server error |
cursor returns 400 with "Invalid cursor".
There is no public endpoint to create or delete a Knowledge base.
Langdock intentionally blocks browser-origin requests to protect your API key and ensure your applications remain secure. For more information, please see our guide on API Key Best Practices.
Authorizations
API key as Bearer token. Format "Bearer YOUR_API_KEY"
Query Parameters
Number of Knowledge bases to return. Default 50. Maximum 100.
Required range:
1 <= x <= 100UUID of the last Knowledge base from the previous page
Response
200
Knowledge bases retrieved successfully
Was this page helpful?