Retrieve files from a knowledge folder
curl --request GET \
--url https://api.langdock.com/knowledge/{folderId}/list \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.langdock.com/knowledge/{folderId}/list"
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/{folderId}/list', 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/{folderId}/list",
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/{folderId}/list"
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/{folderId}/list")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.langdock.com/knowledge/{folderId}/list")
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
Dateien aus Wissensdatenbank abrufen
Liste alle Dateien in einer Wissensdatenbank auf oder rufe Details für eine bestimmte Datei ab
GET
/
knowledge
/
{folderId}
/
list
Retrieve files from a knowledge folder
curl --request GET \
--url https://api.langdock.com/knowledge/{folderId}/list \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.langdock.com/knowledge/{folderId}/list"
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/{folderId}/list', 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/{folderId}/list",
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/{folderId}/list"
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/{folderId}/list")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.langdock.com/knowledge/{folderId}/list")
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_bodyListet alle Dateien (Attachments) in einer bestimmten Wissensdatenbank auf. Verwende diesen Endpunkt, um zu sehen, welche Dateien verfügbar sind und ihren Verarbeitungsstatus zu prüfen.
Dieser gibt die gleichen Felder wie oben für ein einzelnes Attachment zurück, plus eine Fehlermeldung, falls die Verarbeitung fehlgeschlagen ist:
Bevor du startest
- API-Key-Scope: Erfordert einen API-Schlüssel mit dem
KNOWLEDGE_FOLDER_APIScope. Die Wissensdatenbank muss mit dem API-Schlüssel geteilt sein. Siehe Wissensdatenbank mit der API teilen für die Einrichtung.
Basis-URL
https://api.langdock.com
Dedicated DeploymentsErsetze
api.langdock.com durch <your-deployment-url>/api/public in allen Anfragen.Anforderungsformat
Pfadparameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
folderId | string | Ja | Die ID der Wissensdatenbank |
Beispiele
Dateien mit cURL auflisten
curl -X GET "https://api.langdock.com/knowledge/{folderId}/list" \
-H "Authorization: Bearer YOUR_API_KEY"
Dateien mit JavaScript auflisten
const axios = require("axios");
async function listFiles(folderId) {
const response = await axios.get(
`https://api.langdock.com/knowledge/${folderId}/list`,
{
headers: {
Authorization: "Bearer YOUR_API_KEY",
},
}
);
return response.data;
}
// Beispiel
const files = await listFiles("folder_abc123");
console.log(`${files.result.length} Dateien gefunden`);
files.result.forEach((file) => {
console.log(`- ${file.name} (${file.syncStatus})`);
});
Verarbeitungsstatus prüfen
async function waitForProcessing(folderId, attachmentId, maxAttempts = 30) {
for (let i = 0; i < maxAttempts; i++) {
const files = await listFiles(folderId);
const file = files.result.find((f) => f.id === attachmentId);
if (!file) {
throw new Error("Datei nicht gefunden");
}
if (file.syncStatus === "SYNCED") {
console.log("Dateiverarbeitung abgeschlossen!");
return file;
}
if (
file.syncStatus === "ACTION_FAILED" ||
file.syncStatus === "EXTRACTION_FAILED" ||
file.syncStatus === "EMBEDDING_FAILED" ||
file.syncStatus === "TIMEOUT"
) {
throw new Error(`Verarbeitung fehlgeschlagen: ${file.syncStatus}`);
}
console.log(`Verarbeitung... (${file.syncStatus})`);
await new Promise((resolve) => setTimeout(resolve, 2000));
}
throw new Error("Zeitlimit für Verarbeitung überschritten");
}
Antwortformat
Erfolgreiche Antwort (200 OK)
{
status: "success";
result: Array<{
id: string; // Eindeutige Attachment-ID
name: string; // Originaler Dateiname
mimeType: string; // MIME-Typ der Datei
createdAt: string; // ISO 8601 Zeitstempel
updatedAt: string; // ISO 8601 Zeitstempel
url: string | null; // Quell-URL, falls beim Upload angegeben
path: string | null; // Speicherpfad
syncStatus: string; // Verarbeitungsstatus (siehe unten)
pageCount: number | null; // Seitenanzahl (bei PDFs)
summary: string | null; // Automatisch generierte Zusammenfassung
externalId: string | null; // Externe Referenz-ID
syncParams: object | null; // Synchronisierungskonfiguration aus der Quellintegration
}>;
}
Verarbeitungsstatus-Werte
| Status | Beschreibung |
|---|---|
UPLOADING | Datei wird hochgeladen |
UPLOADED | Datei hochgeladen und in der Warteschlange |
EXTRACTING | Text wird aus der Datei extrahiert |
EMBEDDING | Embeddings werden generiert |
SYNCED | Datei ist bereit für die Suche |
ACTION_FAILED | Verarbeitungsaktion fehlgeschlagen |
EXTRACTION_FAILED | Textextraktion fehlgeschlagen |
EMBEDDING_FAILED | Embedding-Generierung fehlgeschlagen |
TIMEOUT | Verarbeitung hat das Zeitlimit überschritten |
Beispielantwort
{
"status": "success",
"result": [
{
"id": "att_abc123def456",
"name": "quartalsbericht.pdf",
"mimeType": "application/pdf",
"createdAt": "2025-01-15T10:30:00.000Z",
"updatedAt": "2025-01-15T10:35:00.000Z",
"url": "https://example.com/reports/q4",
"path": "/attachments/abc123/quartalsbericht.pdf",
"syncStatus": "SYNCED",
"pageCount": 15,
"summary": "Dieser Quartalsbericht behandelt die Q4 2024 Finanzergebnisse...",
"externalId": null,
"syncParams": null
},
{
"id": "att_new456abc",
"name": "meeting-notizen.txt",
"mimeType": "text/plain",
"createdAt": "2025-01-16T14:00:00.000Z",
"updatedAt": "2025-01-16T14:00:00.000Z",
"url": null,
"path": "/attachments/new456/meeting-notizen.txt",
"syncStatus": "EXTRACTING",
"pageCount": null,
"summary": null,
"externalId": null,
"syncParams": null
}
]
}
Einzelne Datei abrufen
Um Details für eine bestimmte Datei abzurufen, verwende denGET /knowledge/{folderId}/{attachmentId} Endpunkt:
curl -X GET "https://api.langdock.com/knowledge/{folderId}/{attachmentId}" \
-H "Authorization: Bearer YOUR_API_KEY"
{
"status": "error",
"message": "Dateiverarbeitung fehlgeschlagen. Bitte versuche es erneut oder kontaktiere den Support.",
"result": {
"id": "att_failed123",
"name": "beschaedigte-datei.pdf",
"syncStatus": "EXTRACTION_FAILED",
"syncMessage": "Unable to extract text from PDF"
}
}
Fehlerbehandlung
try {
const response = await listFiles(folderId);
} catch (error) {
if (error.response) {
switch (error.response.status) {
case 400:
console.error("Ungültige Anfrage:", error.response.data.message);
break;
case 401:
console.error("Ungültiger oder fehlender API-Schlüssel");
break;
case 403:
console.error("API-Schlüssel hat keinen Zugriff auf diese Wissensdatenbank");
break;
case 404:
console.error("Wissensdatenbank nicht gefunden");
break;
case 429:
console.error("Rate Limit überschritten");
break;
case 500:
console.error("Server-Fehler");
break;
}
}
}
Langdock blockiert bewusst Browser-basierte Anfragen, um deinen API-Schlüssel zu schützen und die Sicherheit deiner Anwendungen zu gewährleisten. Weitere Informationen findest du in unserem Guide zu Best Practices für API-Schlüssel.
War diese Seite hilfreich?