Die Compliance API wird auf Anfrage aktiviert. Claude Enterprise-Organisationen haben Zugriff auf die vollständige API; Claude Console-Organisationen haben nur Zugriff auf den Activity Feed. Siehe Zugriff auf die Compliance API erhalten.
Erforderlicher Scope: read:compliance_activities auf dem Compliance Access Key oder Admin API-Key.
Eine produktionsreife Compliance API-Integration trifft drei Designentscheidungen: wie sie den Activity Feed konsumiert, wie ihre Ausgabe mit deinem „security information and event management" (Sicherheitsinformations- und Ereignismanagement), oder SIEM, korreliert und wo langfristige Kopien von Aktivitäten und Inhalten gespeichert werden. Diese Entscheidungen sind unabhängig von den Endpunkten selbst; diese Seite hilft dir, die Kompromisse abzuwägen.
Diese Seite setzt voraus, dass du Den Activity Feed abfragen gelesen hast, wo die Parameter und der Paginierungsvertrag definiert sind, auf die hier durchgehend verwiesen wird, sowie Chats, Dateien und Projekte abrufen und löschen, wo die Content-Endpunkte und die deleted_at-Semantik definiert sind, auf die in Content-Aufbewahrung planen verwiesen wird.
Der Activity Feed unterstützt zwei Konsummuster: periodisches „window polling" (Zeitfenster-Polling), begrenzt durch created_at.gte und created_at.lt, sowie cursor-gesteuerte inkrementelle Lesevorgänge, die einen Cursor aus einer Antwort persistieren und ihn bei der nächsten Anfrage übergeben. Beide liefern identische Activity-Objekte zurück; der Unterschied liegt im Zustand, den dein Client zwischen den Aufrufen persistiert.
Beide Muster teilen diese Einschränkungen:
limit pro Seite beträgt 5.000./v1/compliance/*-Endpunkte; siehe 429 Too Many Requests für die Antwort-Header und den Retry-Vertrag.| Muster | Wähle dies, wenn |
|---|---|
| Zeitfenster-Polling | Deine Pipeline nach einem festen Zeitplan läuft, du zustandslose Worker bevorzugst und du das erneute Abspielen oder Überlappen von Zeitfenstern tolerieren kannst |
| Cursor-gesteuerte inkrementelle Lesevorgänge | Du die geringste Latenz zwischen dem Auftreten einer Aktivität und deren Aufnahme in deine Pipeline möchtest, du das erneute Lesen bereits geleerter Seiten vermeiden möchtest und du einen dauerhaften Ort hast, um einen Cursor zwischen den Läufen zu persistieren |
Setze created_at.lt mindestens 1 Minute in die Vergangenheit, damit jede Aktivität im Fenster bereits abfragbar ist. Verwende created_at.gte für die untere Grenze und created_at.lt für die obere Grenze, sodass aufeinanderfolgende Fenster lückenlos und ohne Überlappung aneinandergereiht werden; verwende den lt-Wert des vorherigen Fensters als gte des nächsten Fensters.
curl --fail-with-body -sS -G \
"https://api.anthropic.com/v1/compliance/activities" \
--header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
--data-urlencode "created_at.gte=2026-04-20T07:00:00Z" \
--data-urlencode "created_at.lt=2026-04-20T08:00:00Z" \
--data-urlencode "limit=5000"Wenn die Antwort has_more: true enthält, umfasst das Fenster mehr als eine Seite an Aktivitäten. Paginiere entweder innerhalb des Fensters, indem du die last_id der Antwort als after_id bei der nächsten Anfrage übergibst (und stoppst, wenn has_more false ist), oder wähle ein kleineres Zeitfenster. Siehe Ergebnisse paginieren für den vollständigen Vertrag.
Selbst bei sauberer Aneinanderreihung erscheint eine Aktivität, die erst indiziert wird, nachdem ihr Fenster geschlossen wurde, nie in einem späteren Fenster. Dedupliziere anhand der Aktivitäts-id und erweitere entweder jedes neue Fenster so, dass es das vorherige um einige Minuten überlappt, oder führe einen periodischen Abgleichslauf durch, der ein älteres Fenster erneut abfragt.
Eine created_at.lt-Grenze, die zu nah an der Gegenwart liegt, verwirft spät indizierte Aktivitäten stillschweigend und dauerhaft: Sobald created_at.gte über sie hinaus vorrückt, kann kein späteres Fenster sie wiederherstellen. Behandle die 1-Minuten-Abfragbarkeitsangabe als dokumentierte Indizierungsverzögerung, nicht als weiche Empfehlung.
first_id="activity_01XyDMpzjS89pFZXqSFUBDr6" # first_id from a previous response
curl --fail-with-body -sS -G \
"https://api.anthropic.com/v1/compliance/activities" \
--header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
--data-urlencode "limit=5000" \
--data-urlencode "before_id=$first_id"Paginiere durch, bis has_more false ist, persistiere dann first_id aus der letzten Antwort und übergib sie unverändert als before_id beim nächsten Lauf, um Aktivitäten abzurufen, die neuer sind als der gespeicherte Cursor. Um für einen Backfill in die entgegengesetzte Richtung zu laufen, persistiere stattdessen last_id und übergib sie als after_id. Für die vollständige Referenz zu Cursor vs. Page-Token und die Retry-Semantik siehe Ergebnisse paginieren.
Eine produktionsreife Catch-up-Schleife ruft Aktivitäten ab, die seit deinem letzten Poll aufgezeichnet wurden, indem sie die Iteration über has_more und first_id steuert:
cursor = stored_cursor
loop:
page = GET /v1/compliance/activities?before_id={cursor}&limit=5000
store(page.data)
if page.first_id is not null:
cursor = page.first_id
if not page.has_more: break
persist(cursor)Cursor überleben die Key-Rotation; siehe Keys verwalten und rotieren.
Jede Seite grenzt an den Cursor an, den du übergibst: Die Schleife läuft vorwärts in Richtung Gegenwart, eine Seite nach der anderen. Behandle eine einzelne Antwort nicht als aufgeholt, solange has_more true ist. Persistiere den Cursor erst, nachdem has_more false ist; die nicht abgerufenen Seiten sind die neueren zwischen der first_id dieser Antwort und der Gegenwart, und sie bleiben ungelesen, bis du die Schleife beendest oder erneut ausführst.
Jede Activity enthält Felder, die du mit Ereignissen verknüpfen kannst, die bereits in deinem SIEM (Splunk, Datadog, Microsoft Sentinel, Cribl oder ähnlichen) vorhanden sind:
| Compliance API-Feld | Join-Ziel |
|---|---|
actor.user_id | Die stabile Benutzerkennung deines Identity Providers |
actor.email_address | Verzeichnis-E-Mail, wenn keine stabile ID verfügbar ist |
actor.ip_address | Netzwerk-, VPN- und Endpunkt-Logs |
created_at | Zeitfenster-Korrelation über beliebige Quellen hinweg |
actor.user_id und actor.email_address sind vorhanden, wenn actor.type den Wert user_actor hat; prüfe den Diskriminator, bevor du sie ausliest. user_id ist eine stabile, opake Kennung für das Benutzerkonto: Sie ist über alle Compliance API-Endpunkte und Aktivitäts-Payloads hinweg konsistent und ändert sich nicht, wenn sich die E-Mail oder der Anzeigename des Benutzers ändert. Verwende user_id, nicht email_address, als primären Join-Key.
Aufrufe der Compliance API selbst erzeugen compliance_api_accessed-Aktivitäten. Nimm diese zusammen mit anderen Aktivitätstypen auf, damit dein SIEM aufzeichnet, wer Compliance-Daten abgefragt hat und wann. Übergib activity_types[]=compliance_api_accessed, um die Abfrage einzugrenzen, und lies dann in deinem Client actor.api_key_id aus jeder Aktivität aus, deren actor.type den Wert api_actor hat, um den Zugriff einem bestimmten Compliance Access Key oder Admin API-Key zuzuordnen.
Drei Aufbewahrungshorizonte bestimmen, was du später abrufen kannst:
| Daten | Aufbewahrt für | Gesteuert durch |
|---|---|---|
| Activity Feed-Einträge | 6 Jahre | Anthropic |
| Chat-, Datei- und Projektinhalte | Die claude.ai-Aufbewahrungsrichtlinie deiner Organisation | Deine Organisation |
| Über die Compliance API hart gelöschte Inhalte | Nicht aufbewahrt; Löschung ist sofort und dauerhaft | Der Aufrufer des DELETE-Endpunkts |
Wie der Rest der Claude Platform mit Aufbewahrung umgeht, findest du unter API und Datenaufbewahrung.
Entscheide wie folgt zwischen Export-und-Archivierung und bedarfsgesteuertem API-Abruf:
deleted_at abrufbar, Compliance API-Löschungen jedoch nicht.In allen anderen Fällen verlasse dich auf den direkten API-Abruf und vermeide es, eine parallele Kopie zu pflegen.
Behandle den Activity Feed als at-least-once (mindestens einmal): Eine korrekt paginierte Traversierung liefert jede Aktivität mindestens einmal zurück, aber ein Retry nach einem Teilfehler kann Aktivitäten erneut liefern, die du bereits gespeichert hast. Dedupliziere anhand des Aktivitäts-id-Felds.
Die List-Endpunkte geben kein total_count-Feld und keine Prüfsumme zurück. Um zu bestätigen, dass ein Exportlauf vollständig ist, protokolliere:
last_id.request-id der letzten Seite.Die Content-Endpunkte (Chats, Dateien, Projekte und Projektanhänge) liefern ausschließlich claude.ai-Daten; der Activity Feed zeigt administrative und Ressourcen-Ereignisse organisationsweit an. Die Compliance API umfasst nicht:
Siehe die Compliance API FAQ für weitere Informationen darüber, was die Compliance API erfasst und was nicht.
Für die Chain of Custody speichere die exportierten Datensätze mit Herkunftsmetadaten: Quell-Endpunkt, Abfrageparameter, Zeitstempel des Laufs und einen Content-Hash jedes Datensatzes.
Filterparameter, Paginierung und das Activity-Objektschema.
Die Content- und Hard-Delete-Endpunkte.
Was this page helpful?