Chats, Dateien und Projekte abrufen und löschen
Greife über die Compliance API auf Chat-Inhalte, Dateianhänge und Projekte für claude.ai-Organisationen zu.
Die Endpunkte auf dieser Seite machen Chat-Inhalte, Datei-Uploads, Projekte und Projektanhänge von Claude Enterprise für Compliance-Prüfer zugänglich. Sie unterstützen eDiscovery-Exporte („electronic discovery“, elektronische Beweissicherung), die Durchsetzung von „data loss prevention“ (Schutz vor Datenverlust), oder DLP, sowie Reaktionen auf Kontolöschungen. Chat-, Datei- und Projektinhalte werden so lange aufbewahrt, wie es die Aufbewahrungsrichtlinie deiner Organisation erlaubt. Wenn ein Benutzer einen Chat in claude.ai löscht, werden dessen Nachrichteninhalte, angehängte Dateien, von Tools generierte Dateien und Artifacts mit ihm gelöscht. Die Compliance API listet den Chat weiterhin auf, mit gesetztem deleted_at und leerem name, und gibt seine Nachrichten ohne deren Inhalt zurück. Chats, die hart gelöscht wurden (über die Compliance API selbst oder nach Ablauf des Aufbewahrungsfensters der Organisation), sind nicht abrufbar.
Beide Scopes werden nur auf Compliance Access Keys (sk-ant-api01-...) gewährt, die in claude.ai erstellt wurden; siehe Die Compliance API einrichten, um einen bereitzustellen. Der Scope read:compliance_user_data deckt den Abruf ab; delete:compliance_user_data ist nur für die Lösch-Endpunkte erforderlich. Die Chat-, Datei-, Projekt- und Anhang-Endpunkte stehen Admin-API-Keys (sk-ant-admin01-...) nicht zur Verfügung; Aufrufe, die mit einem Admin-API-Key authentifiziert sind, geben 403 Forbidden zurück.
Die Endpunkte auf dieser Seite paginieren auf zwei Arten; siehe Ergebnisse paginieren für die vollständige Referenz. Jeder Abschnitt gibt an, welches Schema gilt.
Chats und Nachrichten abrufen
Verwende Chats auflisten, um durch Chat-Metadaten zu blättern, und dann Chat-Nachrichten abrufen, um den vollständigen Nachrichteninhalt eines Chats abzurufen.
Der Chat-Listen-Endpunkt verwendet standardmäßig den organisationsweiten Geltungsbereich: Lass user_ids[] weg, um jeden Chat unter deiner übergeordneten Organisation einzuschließen. Füge order_by=updated_at hinzu, um nach dem Zeitpunkt der letzten Aktualisierung zu sortieren. Diese Kombination ist der empfohlene Weg, um Chats zu exportieren und einen Export aktuell zu halten, da eine einzige paginierte Schleife neue Chats, geänderte Chats und in claude.ai gelöschte Chats für jeden Benutzer erfasst, ohne zuerst Benutzer aufzählen zu müssen. Die folgende Anfrage listet Chats auf, die seit einem bestimmten Datum aktualisiert wurden.
curl --fail-with-body -sS -G \
"https://api.anthropic.com/v1/compliance/apps/chats" \
--header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
--data-urlencode "order_by=updated_at" \
--data-urlencode "updated_at.gte=2025-06-01T00:00:00Z" \
--data-urlencode "limit=100"{
"data": [
{
"id": "claude_chat_01H5CWunD7RpVJ5bHa8RCkja",
"name": "Product Requirements Discussion",
"created_at": "2026-04-10T08:09:10Z",
"updated_at": "2026-04-10T09:10:11Z",
"deleted_at": null,
"href": "https://claude.ai/chat/abcdef01-2345-6789-abcd-ef0123456789",
"model": "claude-opus-5",
"organization_uuid": "91012d09-e48b-438e-a489-1bebfd8fa6f9",
"project_id": "claude_proj_01KGp4eZNug9ri4kE35RSppq",
"user": {
"id": "user_01XyDMpzjS89pFZXqSFUBDr6",
"email_address": "user@example.com"
}
}
],
"has_more": true,
"first_id": "eyJrIjogInVwZGF0ZWRfYXQiLCAidCI6ICIyMDI2LTA0LTEwVDA5OjEwOjExKzAwOjAwIiwgImlkIjogImFiY2RlZjAxLS4uLiJ9",
"last_id": "eyJrIjogInVwZGF0ZWRfYXQiLCAidCI6ICIyMDI2LTA0LTEwVDA5OjEwOjExKzAwOjAwIiwgImlkIjogImFiY2RlZjAxLS4uLiJ9"
}Die Ergebnisse werden aufsteigend nach dem order_by-Feld sortiert, älteste zuerst, wobei Gleichstände nach id aufgelöst werden. Die Paginierung verwendet die standardmäßigen Cursor-Felder first_id/last_id/has_more, die unter Ergebnisse paginieren beschrieben sind. Um vorwärts in Richtung neuerer Chats zu gehen, übergib die last_id der Antwort bei der nächsten Anfrage als after_id zurück.
Dieses Vorwärtsgehen ist auch die Methode, mit der du einen Export über mehrere Läufe hinweg aktuell hältst: Speichere die last_id der letzten Seite dauerhaft und setze beim nächsten Lauf von ihr aus als after_id fort. Da die Liste nach updated_at geordnet ist, erscheint ein Chat, der sich nach deinem gespeicherten Cursor ändert, erneut vor diesem, sodass jeder inkrementelle Lauf sowohl brandneue Chats als auch ältere Chats zurückgibt, die seitdem in claude.ai geändert oder gelöscht wurden. Verarbeite die Ergebnisse idempotent, mit der Chat-id als Schlüssel, um dieses erneute Erscheinen zu handhaben. Ein Chat, der mit gesetztem deleted_at zurückkommt, hat keinen abrufbaren Inhalt mehr; behandle ihn daher als gelöscht und nicht als aktualisiert.
Für diese organisationsweiten Abfragen gelten einige Einschränkungen. Cursor sind opak und an den Sortierschlüssel gebunden, sodass eine after_id, die unter einem order_by-Wert ausgegeben wurde, unter dem anderen mit einem 400-Fehler abgelehnt wird. Die Grenzen von Zeitfiltern müssen ebenfalls zum Sortierschlüssel passen: Kombiniere updated_at.*-Grenzen mit order_by=updated_at und created_at.*-Grenzen mit dem Standardwert order_by=created_at. Rückwärtspaginierung mit before_id wird nicht unterstützt, und der Filter project_ids[] ist nicht verfügbar. Siehe Chats auflisten für die vollständige Filterreferenz.
Um die Liste stattdessen auf bestimmte Benutzer einzugrenzen (zum Beispiel bei einem Legal Hold für namentlich benannte Verwahrer), übergib 1–10 user_ids[]-Werte. Beziehe die IDs aus Organisationsbenutzer auflisten. Benutzergefilterte Abfragen sortieren immer nach created_at (die Übergabe von order_by=updated_at gibt einen 400-Fehler zurück) und unterstützen sowohl after_id als auch before_id. Das Filtern nach project_ids[] ist nur in dieser benutzergefilterten Form verfügbar. Die Kombination von user_ids[] mit einer beliebigen updated_at.*-Grenze ist abgekündigt und wird nach dem 22.09.2026 mit einem 400-Fehler abgelehnt; um eine Verwahrergruppe nach Aktualisierungszeit aktuell zu halten, führe den organisationsweiten order_by=updated_at-Durchlauf ohne user_ids[] aus und wähle die Chats der Verwahrer aus dessen Ergebnissen aus, und behalte die benutzergefilterte Auflistung für nach created_at geordnete Exporte bei.
curl --fail-with-body -sS -G \
"https://api.anthropic.com/v1/compliance/apps/chats" \
--header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
--data-urlencode "user_ids[]=user_01XyDMpzjS89pFZXqSFUBDr6" \
--data-urlencode "created_at.gte=2025-06-01T00:00:00Z" \
--data-urlencode "limit=100"Die Listenantwort enthält nur Chat-Metadaten. Um den eigentlichen Chat-Inhalt, angehängte Dateien und Inline-Artifacts (strukturierte Dokumente, die Claude innerhalb eines Chats generiert) abzurufen, rufe anschließend für jede Chat-ID den Nachrichten-Endpunkt auf:
chat_id="claude_chat_01H5CWunD7RpVJ5bHa8RCkja"
curl --fail-with-body -sS \
"https://api.anthropic.com/v1/compliance/apps/chats/$chat_id/messages" \
--header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY"Der Nachrichten-Endpunkt gibt die Metadaten des Chats sowie ein nach created_at sortiertes chat_messages-Array zurück. Wenn limit weggelassen wird, wird der vollständige Nachrichtensatz in einer Antwort zurückgegeben; übergib limit, after_id oder before_id, um durch sehr lange Chats zu blättern. Der Endpunkt akzeptiert außerdem Bereichsgrenzen für created_at.* und updated_at.* (gt, gte, lt, lte) sowie einen order-Parameter (asc oder desc). Siehe Chat-Nachrichten abrufen für die vollständige Parameterliste. Bei Benutzernachrichten ist created_at der Zeitpunkt, zu dem die Nachricht gesendet wurde; bei Assistentennachrichten ist es der Zeitpunkt, zu dem Claude die Generierung der Nachricht abgeschlossen hat. Jede Nachricht enthält ihren Textinhalt und, sofern vorhanden, alle hochgeladenen Dateien (typischerweise bei Benutzernachrichten), alle von Tools generierten Dateien und alle Artifacts, die der Assistent erstellt oder aktualisiert hat (typischerweise bei Assistentennachrichten):
{
"id": "claude_chat_01H5CWunD7RpVJ5bHa8RCkja",
"name": "Product Requirements Discussion",
"created_at": "2026-04-10T08:09:10Z",
"updated_at": "2026-04-10T09:10:11Z",
"deleted_at": null,
"href": "https://claude.ai/chat/abcdef01-2345-6789-abcd-ef0123456789",
"model": "claude-opus-5",
"organization_uuid": "91012d09-e48b-438e-a489-1bebfd8fa6f9",
"project_id": "claude_proj_01KGp4eZNug9ri4kE35RSppq",
"user": {
"id": "user_01XyDMpzjS89pFZXqSFUBDr6",
"email_address": "user@example.com"
},
"chat_messages": [
{
"id": "claude_chat_msg_01VnBPkLmtj7YdW5QrXKEA8c",
"role": "user",
"created_at": "2026-04-10T08:09:10Z",
"content": [
{
"type": "text",
"text": "Can you help me draft requirements for our new dashboard feature?"
}
],
"files": [
{
"id": "claude_file_01UaT9wBcDfGhJkLmNpQrSv7",
"filename": "dashboard_mockup_v1.pdf",
"mime_type": "application/pdf",
"size_bytes": 482133,
"md5": "56367e4d2705cc9c025ad07424e944f0",
"created_at": "2026-04-10T08:09:10Z"
}
]
},
{
"id": "claude_chat_msg_01M8tFcHwbQ2kY6NpEjRZv4D",
"role": "assistant",
"created_at": "2026-04-10T08:09:11Z",
"content": [
{
"type": "text",
"text": "I'd be happy to help you draft requirements for your dashboard feature..."
}
],
"generated_files": [
{
"id": "claude_gen_file_01TbR8wAcCeFhJkLnPqStUvX",
"filename": "requirements_summary.csv",
"mime_type": "text/csv",
"size_bytes": 2048,
"md5": "89968669461d95416549937168269d6b"
}
],
"artifacts": [
{
"id": "claude_artifact_01HqRsTuVwXyZa2BcDeFgH4J",
"version_id": "claude_artifact_version_01KmNpQrSt3UvWxYz5AbCdEfG",
"title": "Dashboard Requirements Draft",
"artifact_type": "text/markdown"
}
]
}
],
"has_more": false,
"first_id": "eyJtc2dfdXVpZCI6ICIwZjcwYjA2Ni0uLi4ifQ==",
"last_id": "eyJtc2dfdXVpZCI6ICJhNGUwYjE3Mi0uLi4ifQ=="
}files, generated_files und artifacts können bei einer bestimmten Nachricht jeweils null sein. files sind die Dateien und Textanhänge (zum Beispiel PDFs, Bilder, Tabellenkalkulationen, Dokumente und eingefügter Text), die der Benutzer an die Nachricht angehängt hat, so wie claude.ai sie gespeichert hat. generated_files sind Binärdateien, die der Assistent während der Unterhaltung durch Tool-Nutzung erstellt hat (zum Beispiel PDFs, Tabellenkalkulationen oder Foliensätze). artifacts sind versionierte Dokumente (zum Beispiel Code oder Markdown), die der Assistent in seiner Antwort generiert oder aktualisiert hat; ein Artifact kann über mehrere Assistenten-Turns im selben Chat hinweg überarbeitet werden, und jede Überarbeitung erscheint als neue version_id unter derselben Artifact-id. Übergib die id jedes Eintrags (oder version_id bei Artifacts) an den passenden Inhalts-Endpunkt unter Dateien und Artifacts abrufen, um ihn herunterzuladen.
Dateien und Artifacts abrufen
Dateien und Artifacts werden per ID heruntergeladen, nicht unabhängig aufgelistet. Die IDs stammen aus dem Chat-Nachrichten-Endpunkt unter Chats und Nachrichten abrufen (die Arrays files, generated_files und artifacts jeder Nachricht) oder, bei Uploads auf Projektebene, aus dem Projektanhänge-Endpunkt.
Wähle den Endpunkt, der zu deinem ID-Typ und den benötigten Daten passt. Derselbe Dateiinhalts-Endpunkt bedient sowohl Chat-Dateien als auch Projektdateien.
| Du hast | Du möchtest | Verwende diesen Endpunkt |
|---|---|---|
claude_file_*-ID | Den Inhalt der Datei | Dateiinhalt herunterladen |
claude_file_*-ID | Nur die Metadaten der Datei | Datei-Metadaten abrufen |
claude_gen_file_*-ID | Den Binärinhalt einer von Tools generierten Datei | Eine von Claude generierte Datei herunterladen |
claude_gen_file_*-ID | Nur die Metadaten einer von Tools generierten Datei | Metadaten generierter Dateien abrufen |
claude_artifact_version_*-ID | Den Text einer Artifact-Version | Artifact-Inhalt herunterladen |
claude_artifact_version_*-ID | Nur die Metadaten der Artifact-Version | Artifact-Metadaten abrufen |
claude_proj_doc_*-ID | Den Klartextinhalt eines Projektdokuments | Projektdokument-Inhalt abrufen |
claude_proj_doc_*-ID | Nur die Metadaten eines Projektdokuments | Projektdokument-Metadaten abrufen |
Der Dateiinhalts-Endpunkt streamt den Inhalt, den claude.ai für die Datei gespeichert hat, als gechunkte Binärantwort. Dieser Inhalt ist nicht immer identisch mit der Datei, die der Benutzer hochgeladen hat. Bilder können als verarbeitete Kopie statt als die hochgeladenen Bytes ausgeliefert werden. Einige an Chats angehängte Dokumente (zum Beispiel Word-Dateien, PowerPoint-Dateien und einige PDFs) werden als der Text gespeichert, den claude.ai aus ihnen extrahiert hat. Für diese Dokumente gibt der Endpunkt den extrahierten Text unter dem ursprünglichen Dateinamen zurück, und das Originaldokument ist über die Compliance API nicht verfügbar. Die Felder size_bytes und md5 beschreiben den gespeicherten Inhalt und nicht die hochgeladene Datei. Der Dateiname und mime_type können weiterhin das Format des hochgeladenen Dokuments benennen. Bestimme das Format einer Datei anhand der zurückgegebenen Bytes, nicht anhand ihres Namens oder deklarierten Typs.
Die Antwort enthält diese Header:
Content-Disposition: attachment; filename*=utf-8''<percent-encoded filename>enthält den ursprünglichen Upload-Dateinamen in der erweiterten Form nach RFC 5987. Die erweiterte Form wird für jeden Dateinamen verwendet, nicht nur für solche mit Nicht-ASCII-Zeichen.Content-Typeenthält den für den gespeicherten Inhalt erfassten MIME-Typ, der bei einem als extrahierter Text gespeicherten Dokument weiterhin das ursprüngliche Dokumentformat benennen kann.Content-MD5enthält den MD5-Digest der ausgelieferten Bytes, base64-kodiert wie in RFC 1864 spezifiziert.Transfer-Encoding: chunkedist immer gesetzt.
file_id="claude_file_01UaT9wBcDfGhJkLmNpQrSv7"
curl --fail-with-body -sS -OJ \
--header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
"https://api.anthropic.com/v1/compliance/apps/chats/files/$file_id/content"Die Flags -OJ weisen curl an, die Antwort unter dem Dateinamen aus Content-Disposition zu speichern, also dem ursprünglichen Dateinamen, den der Benutzer hochgeladen hat.
Der Artifact-Inhalts-Endpunkt gibt den Textkörper einer Artifact-Version zurück. Übergib die version_id aus einem der Einträge im artifacts-Array einer Assistentennachricht, nicht die stabile id des Artifacts. Jede neue Version eines Artifacts hat ihre eigene version_id, und die Compliance API liefert die exakten Bytes dieser Version aus.
Projekte und Anhänge abrufen
Projekte bündeln zusammengehörige Chats mit benutzerdefinierten Anweisungen, Wissensdatenbank-Inhalten und angehängten Dateien oder Textdokumenten. Die Compliance API stellt Projekt-Metadaten, Projektdetails und die Liste der zu einem Projekt gehörenden Anhänge bereit.
Projektergebnisse werden aufsteigend nach Erstellungsdatum sortiert. Anhangsergebnisse werden aufsteigend nach created_at sortiert, wobei Gleichstände nach id aufgelöst werden. Antworten der Projektliste und der Anhangsliste paginieren mit einem opaken next_page-Seitentoken anstelle der first_id/last_id-Cursor, die von Chats und dem Activity Feed verwendet werden. Übergib das Token bei der nächsten Anfrage als Query-Parameter page zurück.
Projektdateien versus Projektdokumente
Ein Projektanhang hat eine von zwei unterschiedlichen Formen, die durch den type-Diskriminator jedes Eintrags identifiziert werden:
Einträge mit type gleich project_file sind Datei-Uploads (PDFs, Bilder, Tabellenkalkulationen), deren IDs mit claude_file_ beginnen; lade sie mit Dateiinhalt herunterladen herunter. Einträge mit type gleich project_doc sind Klartextdokumente (immer text/plain), deren IDs mit claude_proj_doc_ beginnen, einschließlich Dokumenten wie Word-Dateien, die claude.ai in Text umwandelt, wenn sie einem Projekt hinzugefügt werden; rufe sie mit Projektdokument-Inhalt abrufen ab.
Ein Konsument, der die Anhangsliste durchläuft, muss nach type verzweigen und für jeden Eintrag den passenden Inhalts-Endpunkt aufrufen. Die folgende Anfrage listet eine Seite von Anhängen auf; paginiere, indem du next_page als page-Parameter zurückgibst, bis has_more false ist.
project_id="claude_proj_01KGp4eZNug9ri4kE35RSppq"
curl --fail-with-body -sS -G \
"https://api.anthropic.com/v1/compliance/apps/projects/$project_id/attachments" \
--header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY"{
"data": [
{
"id": "claude_file_01UaT9wBcDfGhJkLmNpQrSv7",
"created_at": "2026-04-10T08:09:10Z",
"filename": "dashboard_mockup_v1.pdf",
"mime_type": "application/pdf",
"size_bytes": 482133,
"md5": "56367e4d2705cc9c025ad07424e944f0",
"type": "project_file"
},
{
"id": "claude_proj_doc_01YnT8sBcWvUtXzQpMkRfDgH",
"created_at": "2026-04-10T08:09:11Z",
"filename": "requirements.md",
"mime_type": "text/plain",
"type": "project_doc"
}
],
"has_more": false,
"next_page": null
}Inhalte löschen
Die Compliance API stellt Endpunkte zum harten Löschen von Chats, Dateien, Projektdokumenten und ganzen Projekten bereit. Ein hart gelöschter Chat kann nicht wiederhergestellt werden und erscheint danach nicht mehr in Listenantworten.
- Chat löschen: entfernt auch die Nachrichten des Chats und alle an diese Nachrichten angehängten Dateien.
- Datei löschen: behandelt sowohl Chat-Dateien als auch Projektdateien.
- Projektdokument löschen: entfernt ein einzelnes Projektdokument per ID.
- Projekt löschen: siehe Chats vor dem Löschen eines Projekts abtrennen.
Alle vier Endpunkte erfordern den Scope delete:compliance_user_data, der bei der Erstellung des Compliance Access Keys getrennt vom Lese-Scope gewährt wird.
Die folgende Anfrage löscht einen Chat. Dasselbe Muster gilt für die anderen Lösch-Endpunkte; nur die URL ändert sich.
# WARNUNG: Dieser Vorgang löscht den Chat, alle seine Nachrichten und alle
# angehängten Dateien DAUERHAFT. Die Löschung erfolgt sofort und ist unwiderruflich. Sie
# erfordert den Scope `delete:compliance_user_data`, der getrennt von
# `read:compliance_user_data` gewährt wird, wenn der Compliance Access Key erstellt wird.
# Stelle sicher, dass du eine ausdrückliche Autorisierung hast, bevor du dies ausführst.
chat_id="claude_chat_01H5CWunD7RpVJ5bHa8RCkja"
curl --fail-with-body -sS -X DELETE \
"https://api.anthropic.com/v1/compliance/apps/chats/$chat_id" \
--header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY"{
"id": "claude_chat_01H5CWunD7RpVJ5bHa8RCkja",
"type": "claude_chat_deleted"
}Jede erfolgreiche Löschung gibt einen kleinen Bestätigungsumschlag mit einer id und einem type-Diskriminator zurück. Der Chat-Endpunkt gibt claude_chat_deleted zurück; prüfe das type-Feld, bevor du die Löschung als bestätigt behandelst. Siehe das Antwortschema auf der API-Referenz-Seite jedes Lösch-Endpunkts für den genauen type-Wert, den die anderen Endpunkte zurückgeben.
Chats vor dem Löschen eines Projekts abtrennen
Ein Projekt kann nicht gelöscht werden, solange noch Chats daran angehängt sind. Die API gibt 409 mit diesem Body zurück:
{
"error": {
"type": "conflict_error",
"message": "The \"claude_proj_01KGp4eZNug9ri4kE35RSppq\" project cannot be deleted as it has chats attached to it. Delete or detach all chats, and try deleting the project again."
}
}Zur Behebung liste die Chats des Projekts mit GET /v1/compliance/apps/chats?user_ids[]={user_id}&project_ids[]={project_id} auf (der Filter project_ids[] erfordert mindestens einen user_ids[]-Wert; zähle die IDs über Organisationsbenutzer auflisten auf), lösche jeden einzelnen mit DELETE /v1/compliance/apps/chats/{claude_chat_id} (oder verschiebe ihn in claude.ai aus dem Projekt heraus) und versuche dann die Projektlöschung erneut.
Nächste Schritte
Das vollständige Anfrage- und Antwortschema für jeden Chat-, Datei-, Projekt- und Artifact-Endpunkt.
Liste die Sitzungen auf, die deine Benutzer in Claude-Apps und -Agenten wie Cowork und Claude Code ausführen, und rufe deren Transkripte ab.
Zähle die Personen und Teams auf, die mit den Chats und Projekten auf dieser Seite verbunden sind.
Was this page helpful?