Um die Compliance API zu aktivieren, siehe Compliance API einrichten.
Erforderlicher Scope: read:compliance_activities auf dem Compliance Access Key oder Admin-API-Key.
Eine produktive Compliance-API-Integration trifft drei Designentscheidungen: wie sie den Activity Feed konsumiert, wie ihre Ausgabe mit deinem „security information and event management"-System (System für Sicherheitsinformations- und Ereignisverwaltung), oder SIEM, korreliert, und wo langfristige Kopien von Aktivitäten und Inhalten liegen. 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, das die durchgehend referenzierten Parameter und den Paginierungsvertrag definiert, sowie Chats, Dateien und Projekte abrufen und löschen, das die Inhaltsendpunkte und die deleted_at-Semantik definiert, auf die in Inhaltsaufbewahrung planen verwiesen wird.
Der Activity Feed unterstützt zwei Konsummuster: periodisches Fenster-Polling, begrenzt durch created_at.gte und created_at.lt, und cursorgesteuerte inkrementelle Lesevorgänge, die einen Cursor aus einer Antwort persistieren und ihn bei der nächsten Anfrage übergeben. Beide geben identische Activity-Objekte zurück; der Unterschied liegt im Zustand, den dein Client zwischen den Aufrufen persistiert.
Beide Muster teilen diese Einschränkungen:
limit für jede Seite beträgt 5.000./v1/compliance/*-Endpunkt; siehe 429 Too Many Requests für die Antwort-Header und den Retry-Vertrag.| Muster | Wähle es, wenn |
|---|---|
| Fenster-Polling | Deine Pipeline läuft nach einem festen Zeitplan, du bevorzugst zustandslose Worker und du kannst das Wiederholen oder Überlappen von Fenstern tolerieren |
| Cursorgesteuerte inkrementelle Lesevorgänge | Du willst die niedrigste Latenz zwischen dem Auftreten einer Aktivität und der Aufnahme durch deine Pipeline, du willst vermeiden, bereits ausgelesene Seiten erneut zu lesen, und du hast einen dauerhaften Ort, um einen Cursor zwischen 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, damit aufeinanderfolgende Fenster ohne Lücken oder Überlappungen aneinandergereiht werden; verwende den lt-Wert des vorherigen Fensters als gte-Wert des nächsten Fensters wieder.
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 nach dem Schließen ihres Fensters indexiert wird, 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 indexierte Aktivitäten stillschweigend und dauerhaft: Sobald created_at.gte über sie hinaus vorrückt, kann kein späteres Fenster sie mehr erfassen. Behandle die 1-Minuten-Abfragbarkeitsangabe als die dokumentierte Indexierungsverzö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, 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 als der gespeicherte Cursor sind. 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 produktive 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 eine 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 abschließt oder erneut ausführst.
Jede Activity enthält Felder, die du mit Ereignissen verknüpfen kannst, die bereits in deinem SIEM vorhanden sind (Splunk, Datadog, Microsoft Sentinel, Cribl oder ähnliche):
| Compliance-API-Feld | Join-Ziel |
|---|---|
actor.user_id | Der stabile Benutzeridentifikator 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 jede Quelle hinweg |
actor.user_id und actor.email_address sind vorhanden, wenn actor.type user_actor ist; prüfe den Diskriminator, bevor du sie liest. user_id ist ein stabiler, opaker Identifikator für das Benutzerkonto: Er ist über jeden Compliance-API-Endpunkt und jede Aktivitäts-Payload 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 wann Compliance-Daten abgefragt hat. Übergib activity_types[]=compliance_api_accessed, um die Abfrage einzugrenzen, und lies dann in deinem Client actor.api_key_id aus jeder Aktivität, deren actor.type api_actor ist, 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 | Kontrolliert durch |
|---|---|---|
| Activity-Feed-Datensätze | 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; die Löschung ist sofort und dauerhaft | Der Aufrufer des DELETE-Endpunkts |
Wie der Rest der Claude Platform mit Aufbewahrung umgeht, erfährst du unter API und Datenaufbewahrung.
Entscheide wie folgt zwischen Export-und-Archivierung und On-Demand-API-Abruf:
deleted_at abrufbar, Compliance-API-Löschungen jedoch nicht.In jedem anderen Fall verlasse dich auf den direkten API-Abruf und vermeide es, eine parallele Kopie zu pflegen.
Behandle den Activity Feed als at-least-once: Eine korrekt paginierte Traversierung gibt jede Aktivität mindestens einmal zurück, aber ein Retry nach einem Teilausfall kann Aktivitäten erneut liefern, die du bereits gespeichert hast. Dedupliziere anhand des Aktivitätsfelds id.
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 Inhaltsendpunkte (Chats, Dateien, Projekte und Projektanhänge) liefern ausschließlich claude.ai-Daten; der Activity Feed zeigt administrative und Ressourcen-Ereignisse organisationsweit. 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 Beweiskette speichere die exportierten Datensätze mit Provenienz-Metadaten: Quell-Endpunkt, Abfrageparameter, Zeitstempel des Laufs und ein Inhalts-Hash jedes Datensatzes.
Filterparameter, Paginierung und das Activity-Objektschema.
Die Inhalts- und Hard-Delete-Endpunkte.
Was this page helpful?