Update a file in a knowledge folder
curl --request PATCH \
--url https://api.langdock.com/knowledge/{folderId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form file='@example-file' \
--form 'url=<string>' \
--form 'attachmentId=<string>'import requests
url = "https://api.langdock.com/knowledge/{folderId}"
files = { "file": ("example-file", open("example-file", "rb")) }
payload = {
"url": "<string>",
"attachmentId": "<string>"
}
headers = {"Authorization": "Bearer <token>"}
response = requests.patch(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('file', '<string>');
form.append('url', '<string>');
form.append('attachmentId', '<string>');
const options = {method: 'PATCH', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://api.langdock.com/knowledge/{folderId}', 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}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"url\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"attachmentId\"\r\n\r\n<string>\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data"
],
]);
$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.langdock.com/knowledge/{folderId}"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"url\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"attachmentId\"\r\n\r\n<string>\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("PATCH", url, payload)
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.patch("https://api.langdock.com/knowledge/{folderId}")
.header("Authorization", "Bearer <token>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"url\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"attachmentId\"\r\n\r\n<string>\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.langdock.com/knowledge/{folderId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"url\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"attachmentId\"\r\n\r\n<string>\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"message": "The file \"updated-report.pdf\" is declared as a PDF but its content does not start with the expected PDF header.",
"code": "BAD_REQUEST"
}{
"message": "The provided API key is invalid."
}{
"message": "Knowledge folder not shared with this API key. Please share the folder with the API key in the Langdock App to upload or update files.",
"code": "FORBIDDEN"
}{
"message": "Attachment with ID '550e8400-e29b-41d4-a716-446655440000' not found in this knowledge folder.",
"code": "NOT_FOUND"
}{
"message": "Upload request timed out. Please try again with a smaller file or check your connection.",
"code": "REQUEST_TIMEOUT"
}{
"message": "File size exceeds the maximum allowed size of 256MB. Please upload a smaller file.",
"code": "PAYLOAD_TOO_LARGE"
}{
"message": "You have exceeded the maximum number of requests per minute (50)",
"code": "TOO_MANY_REQUESTS"
}{
"message": "Internal server error"
}{
"message": "Storage capacity exceeded. Please contact your administrator.",
"code": "SERVICE_UNAVAILABLE"
}Knowledge Folder API
Attachment in einer Wissensdatenbank aktualisieren
Ersetze eine bestehende Datei in einer Wissensdatenbank durch eine neue Version
PATCH
/
knowledge
/
{folderId}
Update a file in a knowledge folder
curl --request PATCH \
--url https://api.langdock.com/knowledge/{folderId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form file='@example-file' \
--form 'url=<string>' \
--form 'attachmentId=<string>'import requests
url = "https://api.langdock.com/knowledge/{folderId}"
files = { "file": ("example-file", open("example-file", "rb")) }
payload = {
"url": "<string>",
"attachmentId": "<string>"
}
headers = {"Authorization": "Bearer <token>"}
response = requests.patch(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('file', '<string>');
form.append('url', '<string>');
form.append('attachmentId', '<string>');
const options = {method: 'PATCH', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://api.langdock.com/knowledge/{folderId}', 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}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"url\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"attachmentId\"\r\n\r\n<string>\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data"
],
]);
$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.langdock.com/knowledge/{folderId}"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"url\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"attachmentId\"\r\n\r\n<string>\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("PATCH", url, payload)
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.patch("https://api.langdock.com/knowledge/{folderId}")
.header("Authorization", "Bearer <token>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"url\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"attachmentId\"\r\n\r\n<string>\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.langdock.com/knowledge/{folderId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"url\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"attachmentId\"\r\n\r\n<string>\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"message": "The file \"updated-report.pdf\" is declared as a PDF but its content does not start with the expected PDF header.",
"code": "BAD_REQUEST"
}{
"message": "The provided API key is invalid."
}{
"message": "Knowledge folder not shared with this API key. Please share the folder with the API key in the Langdock App to upload or update files.",
"code": "FORBIDDEN"
}{
"message": "Attachment with ID '550e8400-e29b-41d4-a716-446655440000' not found in this knowledge folder.",
"code": "NOT_FOUND"
}{
"message": "Upload request timed out. Please try again with a smaller file or check your connection.",
"code": "REQUEST_TIMEOUT"
}{
"message": "File size exceeds the maximum allowed size of 256MB. Please upload a smaller file.",
"code": "PAYLOAD_TOO_LARGE"
}{
"message": "You have exceeded the maximum number of requests per minute (50)",
"code": "TOO_MANY_REQUESTS"
}{
"message": "Internal server error"
}{
"message": "Storage capacity exceeded. Please contact your administrator.",
"code": "SERVICE_UNAVAILABLE"
}Aktualisiert eine bestehende Datei (Attachment) in einer Wissensdatenbank, indem sie durch eine neue Version ersetzt wird. Die alte Datei wird entfernt und die neue Datei wird verarbeitet und eingebettet.
Die Größenlimits hängen vom Dateityp ab: 10 MB für reinen Text, Markdown, JSON und VTT-Dateien, 30 MB für XML-Dateien und 256 MB für andere unterstützte Dokumenttypen. Eine Übersicht der unterstützten Formate findest du in der Referenz unterstützter Dateitypen.
Bevor du startest
- API-Key-Scope: Erfordert einen API-Schlüssel mit dem
KNOWLEDGE_FOLDER_APIScope. Der API-Schlüssel selbst benötigt die Rolle Bearbeiter für die Wissensdatenbank. 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
Dieser Endpunkt akzeptiertmultipart/form-data Anfragen mit der angehängten Datei.
Pfadparameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
folderId | string | Ja | Die ID der Wissensdatenbank |
Formularfelder
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
attachmentId | string | Ja | Die ID des zu aktualisierenden Attachments |
file | file | Ja | Die neue Datei zum Hochladen. Siehe die Größenlimits unten. |
url | string | Nein | URL, die Nutzern angezeigt wird, wenn diese Datei in einer Antwort verwendet wird |
Beispiele
Aktualisieren mit cURL
curl -X PATCH "https://api.langdock.com/knowledge/{folderId}" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "attachmentId=att_abc123def456" \
-F "file=@/pfad/zu/neues-dokument.pdf"
Aktualisieren mit JavaScript
const FormData = require("form-data");
const fs = require("fs");
const axios = require("axios");
async function updateAttachment(folderId, attachmentId, filePath) {
const form = new FormData();
form.append("attachmentId", attachmentId);
form.append("file", fs.createReadStream(filePath));
const response = await axios.patch(
`https://api.langdock.com/knowledge/${folderId}`,
form,
{
headers: {
Authorization: "Bearer YOUR_API_KEY",
...form.getHeaders(),
},
}
);
return response.data;
}
// Beispiel
try {
const result = await updateAttachment(
"folder_abc123",
"att_xyz789",
"/pfad/zu/aktualisierter-bericht.pdf"
);
console.log("Attachment aktualisiert:", result);
} catch (error) {
console.error("Aktualisierung fehlgeschlagen:", error.response?.data?.message);
}
Aktualisieren mit Quell-URL
const FormData = require("form-data");
const fs = require("fs");
const axios = require("axios");
async function updateAttachmentWithUrl(folderId, attachmentId, filePath, sourceUrl) {
const form = new FormData();
form.append("attachmentId", attachmentId);
form.append("file", fs.createReadStream(filePath));
form.append("url", sourceUrl);
const response = await axios.patch(
`https://api.langdock.com/knowledge/${folderId}`,
form,
{
headers: {
Authorization: "Bearer YOUR_API_KEY",
...form.getHeaders(),
},
}
);
return response.data;
}
Antwortformat
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": "aktualisierter-bericht.pdf",
"mimeType": "application/pdf",
"createdAt": "2025-01-15T10:30:00.000Z",
"updatedAt": "2025-01-20T14:45:00.000Z",
"url": null
}
}
Antwort bei fehlgeschlagener Dateivalidierung (400 Bad Request)
Wenn die Validierung der Ersatzdatei fehlschlägt, findest du den Grund inmessage:
{
"message": "The file \"aktualisierter-bericht.pdf\" is declared as a PDF but its content does not start with the expected PDF header.",
"code": "BAD_REQUEST"
}
Fehlerbehandlung
try {
const response = await updateAttachment(folderId, attachmentId, filePath);
} catch (error) {
if (error.response) {
console.error(error.response.data.message ?? "Aktualisierung fehlgeschlagen");
}
}
| Status | Bedeutung |
|---|---|
400 | Ungültige Anfrage oder Fehler bei der Dateivalidierung |
401 | Ungültiger oder fehlender API-Schlüssel |
403 | API-Schlüssel hat keinen Zugriff auf die Wissensdatenbank |
404 | Wissensdatenbank oder Attachment nicht gefunden |
408 | Zeitüberschreitung beim Upload |
413 | Datei überschreitet das Größenlimit |
429 | Rate Limit überschritten |
500 | Unerwarteter Server-Fehler |
503 | Speicherkapazität überschritten |
Verarbeitungsstatus
Nach der Aktualisierung wird die neue Datei asynchron verarbeitet. Verwende den Dateien abrufen Endpunkt, um den Verarbeitungsstatus zu prüfen. DassyncStatus Feld zeigt den aktuellen Zustand:
UPLOADING- Datei wird hochgeladenUPLOADED- Datei hochgeladen und in der WarteschlangeEXTRACTING- Text wird aus der Datei extrahiertEMBEDDING- Embeddings werden generiertSYNCED- Datei ist bereit für die SucheACTION_FAILED,EXTRACTION_FAILED,EMBEDDING_FAILED,TIMEOUT- Verarbeitung fehlgeschlagen
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.
Autorisierungen
API key as Bearer token. Format "Bearer YOUR_API_KEY"
Pfadparameter
The ID of the knowledge folder
Body
multipart/form-data
Antwort
Attachment updated successfully
War diese Seite hilfreich?