Dateien
Workspace-Dateien über die Talkturo API hochladen, abrufen und löschen — Dateispeicherung mit signierten URLs und kontobasierter Zugriffskontrolle verwalten.
const formData = new FormData();
formData.append("file", selectedFile);
formData.append("accountId", "acc_7f3a91c2");
formData.append("displayName", "Produktleitfaden.pdf");
const response = await fetch("/api/files", {
method: "POST",
credentials: "include",
body: formData
});
const result = await response.json();
console.log(result);
{
"data": {
"id": "file_8c4d2e91",
"name": "Produktleitfaden.pdf",
"size": 184320,
"file_type": "application/pdf",
"created_at": "2026-09-12T14:32:18.000Z",
"account_id": "acc_7f3a91c2"
}
}
{
"error": "file and accountId are required"
}
{
"error": "File is too large (max 25 MB)."
}
{
"error": "Unauthorized — no access to this workspace"
}
{
"error": "Storage or database operation failed"
}
const params = new URLSearchParams({
fileId: "file_8c4d2e91",
accountId: "acc_7f3a91c2"
});
const response = await fetch(`/api/files?${params}`, {
method: "GET",
credentials: "include"
});
const result = await response.json();
window.open(result.url, "_blank");
{
"url": "https://storage.example.invalid/object/sign/files/account/file_8c4d2e91?token=temporary-signature"
}
{
"error": "fileId and accountId are required"
}
{
"error": "Unauthorized"
}
{
"error": "File not found"
}
{
"error": "Could not sign URL"
}
const params = new URLSearchParams({
fileId: "file_8c4d2e91",
accountId: "acc_7f3a91c2"
});
const response = await fetch(`/api/files?${params}`, {
method: "DELETE",
credentials: "include"
});
const result = await response.json();
console.log(result);
{
"success": true
}
{
"error": "fileId and accountId are required"
}
{
"error": "Unauthorized — no access to this workspace"
}
{
"error": "File not found"
}
{
"error": "Database deletion failed"
}
Dateien verwalten
Laden Sie Dateien für einen Workspace hoch, erzeugen Sie kurzlebige signierte URLs zum Abrufen und löschen Sie Dateien über die Talkturo API.
Alle Endpunkte erfordern eine authentifizierte Supabase-Websitzung. Der authentifizierte Benutzer muss entweder der primäre Eigentümer des Kontos sein oder über einen Eintrag in accounts_memberships Zugriff auf das Konto haben.
Dateien dürfen maximal 25 MB groß sein. Die API gibt weder den internen storage_path noch eine öffentliche URL zurück.
Datei hochladen
POST /api/files lädt eine Datei in den angegebenen Workspace hoch. Senden Sie die Daten als multipart/form-data.
Anforderung
Die hochzuladende Datei. Die maximale Dateigröße beträgt 25 MB.
Die ID des Zielkontos oder Workspace.
Optionaler Anzeigename der Datei. Wenn Sie keinen Wert angeben, verwendet die API den ursprünglichen Dateinamen.
Antwort
Bei erfolgreicher Erstellung gibt die API die Metadaten der Datei zurück.
Eindeutige ID der Datei.
Anzeigename der Datei. Das Feld enthält displayName oder, falls nicht angegeben, den ursprünglichen Dateinamen.
Dateigröße in Bytes.
MIME-Typ der Datei, zum Beispiel application/pdf.
Zeitpunkt der Erstellung als ISO-8601-Zeitstempel.
ID des Kontos, dem die Datei zugeordnet ist.
Fehler
| Status | Ursache |
|---|---|
400 | file oder accountId fehlt, oder die Datei überschreitet 25 MB. |
403 | Die Sitzung hat keinen Zugriff auf den angegebenen Workspace. |
500 | Beim Speichern der Datei oder der Metadaten ist ein Fehler aufgetreten. |
Signierte Datei-URL abrufen
GET /api/files erzeugt eine signierte Supabase-Storage-URL für eine Datei. Die URL ist 10 Minuten gültig.
Abfrageparameter
ID der abzurufenden Datei.
ID des Kontos oder Workspace, dem die Datei zugeordnet ist.
Antwort
Signierte URL zum Abrufen der Datei. Die URL ist 10 Minuten gültig und darf danach nicht weiterverwendet werden.
Speichern Sie die signierte URL nicht dauerhaft. Fordern Sie eine neue URL an, sobald die bestehende URL abgelaufen ist.
Fehler
| Status | Ursache |
|---|---|
400 | fileId oder accountId fehlt. |
403 | Die Sitzung hat keinen Zugriff auf den Workspace. |
404 | Die Datei existiert nicht oder gehört nicht zum angegebenen Konto. |
500 | Die API konnte keine signierte URL erzeugen. |
Datei löschen
DELETE /api/files löscht eine Datei aus dem Storage und entfernt den zugehörigen Datenbankeintrag.
Abfrageparameter
ID der zu löschenden Datei.
ID des Kontos oder Workspace, dem die Datei zugeordnet ist.
Antwort
true, wenn das Storage-Objekt und der Datenbankeintrag gelöscht wurden.
Fehler
| Status | Ursache |
|---|---|
400 | fileId oder accountId fehlt. |
403 | Die Sitzung hat keinen Zugriff auf den Workspace. |
404 | Die Datei existiert nicht oder gehört nicht zum angegebenen Konto. |
500 | Beim Löschen des Datenbankeintrags ist ein Fehler aufgetreten. |