Documentation Index
Fetch the complete documentation index at: https://docs.langdock.com/llms.txt
Use this file to discover all available pages before exploring further.
Du nutzt unsere API in einem Dedicated Deployment? Ersetze einfach api.langdock.com durch die Base URL deines Deployments: <deployment-url>/api/public
Lädt eine neue Datei in einen bestimmten Wissensordner hoch. Die Datei wird verarbeitet, eingebettet und für die semantische Suche verfügbar gemacht.
Erfordert einen API-Schlüssel mit dem KNOWLEDGE_FOLDER_API Scope. Der Wissensordner muss mit dem API-Schlüssel geteilt sein. Siehe Wissensordner mit der API teilen für die Einrichtung.
Dieser Endpunkt akzeptiert multipart/form-data Anfragen mit der angehängten Datei.
Pfadparameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|
folderId | string | Ja | Die ID des Wissensordners |
| Feld | Typ | Erforderlich | Beschreibung |
|---|
file | file | Ja | Die hochzuladende Datei (max. 256MB) |
url | string | Nein | Optionale Quell-URL, die mit der Datei verknüpft wird |
Unterstützte Dateitypen
Wissensordner unterstützen folgende Dokumenttypen:
- PDF (
.pdf)
- Word-Dokumente (
.doc, .docx)
- Textdateien (
.txt)
- Markdown (
.md)
- HTML (
.html)
- PowerPoint (
.pptx, .ppt)
Ausführbare Dateien und andere potenziell gefährliche Dateitypen werden aus Sicherheitsgründen blockiert.
Beispiele
Datei mit cURL hochladen
curl -X POST "https://api.langdock.com/knowledge/{folderId}" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@/pfad/zu/dokument.pdf"
Datei mit JavaScript hochladen
const FormData = require("form-data");
const fs = require("fs");
const axios = require("axios");
async function uploadFile(folderId, filePath) {
const form = new FormData();
form.append("file", fs.createReadStream(filePath));
const response = await axios.post(
`https://api.langdock.com/knowledge/${folderId}`,
form,
{
headers: {
Authorization: "Bearer YOUR_API_KEY",
...form.getHeaders(),
},
}
);
return response.data;
}
Upload mit Quell-URL
const FormData = require("form-data");
const fs = require("fs");
const axios = require("axios");
async function uploadFileWithUrl(folderId, filePath, sourceUrl) {
const form = new FormData();
form.append("file", fs.createReadStream(filePath));
form.append("url", sourceUrl);
const response = await axios.post(
`https://api.langdock.com/knowledge/${folderId}`,
form,
{
headers: {
Authorization: "Bearer YOUR_API_KEY",
...form.getHeaders(),
},
}
);
return response.data;
}
Erfolgreiche Antwort (200 OK)
{
status: "success";
result: {
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 angegeben
};
}
Beispielantwort
{
"status": "success",
"result": {
"id": "att_abc123def456",
"name": "quartalsbericht.pdf",
"mimeType": "application/pdf",
"createdAt": "2025-01-15T10:30:00.000Z",
"updatedAt": "2025-01-15T10:30:00.000Z",
"url": null
}
}
Fehlerbehandlung
try {
const response = await uploadFile(folderId, filePath);
} 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 diesen Wissensordner");
break;
case 404:
console.error("Wissensordner nicht gefunden");
break;
case 408:
console.error("Upload-Anfrage hat das Zeitlimit überschritten");
break;
case 413:
console.error("Dateigröße überschreitet das 256MB-Limit");
break;
case 429:
console.error("Rate Limit überschritten");
break;
case 500:
console.error("Server-Fehler");
break;
}
}
}
Verarbeitungsstatus
Nach dem Upload wird die Datei asynchron verarbeitet. Verwende den Dateien abrufen Endpunkt, um den Verarbeitungsstatus zu prüfen. Das syncStatus Feld zeigt den aktuellen Zustand:
UPLOADING - Datei wird hochgeladen
UPLOADED - Datei ist 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, EXTRACTION_FAILED, EMBEDDING_FAILED, TIMEOUT - Verarbeitung fehlgeschlagen
Asynchrone Upload-Variante
Für große Dateien oder wenn du nicht auf die Upload-Antwort warten musst, kannst du den asynchronen Upload-Endpunkt verwenden:
POST /knowledge/{folderId}/upload-async
Dieser Endpunkt akzeptiert die gleichen Parameter, gibt aber sofort nach dem Empfang der Datei eine Antwort zurück, ohne auf die erste Verarbeitung zu warten. Nutze dies beim Hochladen vieler Dateien im Batch oder wenn die Upload-Latenz kritisch ist.
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. API key as Bearer token. Format "Bearer YOUR_API_KEY"
The ID of the knowledge folder
File uploaded successfully