La Compliance API viene abilitata su richiesta. Le organizzazioni Claude Enterprise hanno accesso all'API completa; le organizzazioni Claude Console hanno accesso solo all'Activity Feed. Consulta Ottenere l'accesso alla Compliance API.
Scope richiesto: read:compliance_activities sulla Compliance Access Key o sulla chiave Admin API.
Un'integrazione di produzione della Compliance API richiede tre scelte di progettazione: come consuma l'Activity Feed, come il suo output si correla con il tuo sistema di "security information and event management" (gestione delle informazioni e degli eventi di sicurezza), o SIEM, e dove risiedono le copie a lungo termine di attività e contenuti. Queste scelte sono indipendenti dagli endpoint stessi; questa pagina ti aiuta a valutare i compromessi.
Questa pagina presuppone che tu abbia letto Interrogare l'Activity Feed, che definisce i parametri e il contratto di paginazione a cui si fa riferimento in tutto il documento, e Recuperare ed eliminare chat, file e progetti, che definisce gli endpoint dei contenuti e la semantica di deleted_at a cui si fa riferimento in Pianifica la conservazione dei contenuti.
L'Activity Feed supporta due pattern di consumo: il "window polling" (polling periodico a finestre) delimitato da created_at.gte e created_at.lt, e le letture incrementali basate su cursore che persistono un cursore da una risposta e lo passano alla richiesta successiva. Entrambi restituiscono oggetti Activity identici; la differenza è lo stato che il tuo client persiste tra le chiamate.
Entrambi i pattern condividono questi vincoli:
limit massimo per ogni pagina è 5.000./v1/compliance/*; consulta 429 Too Many Requests per gli header di risposta e il contratto di retry.| Pattern | Scegli quando |
|---|---|
| Window polling | La tua pipeline viene eseguita secondo una pianificazione fissa, preferisci worker stateless e puoi tollerare la riproduzione o la sovrapposizione di finestre |
| Letture incrementali basate su cursore | Vuoi la latenza più bassa tra il verificarsi di un'attività e la sua acquisizione da parte della tua pipeline, vuoi evitare di rileggere pagine che hai già esaurito e disponi di un luogo durevole dove persistere un cursore tra le esecuzioni |
Imposta created_at.lt ad almeno 1 minuto nel passato in modo che ogni attività nella finestra sia già interrogabile. Usa created_at.gte per il limite inferiore e created_at.lt per il limite superiore in modo che le finestre consecutive si affianchino senza lacune o sovrapposizioni; riutilizza il valore lt della finestra precedente come gte della finestra successiva.
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"Quando la risposta ha has_more: true, la finestra contiene più di una pagina di attività. Puoi paginare all'interno della finestra passando il last_id della risposta come after_id nella richiesta successiva (fermandoti quando has_more è false), oppure scegliere una finestra temporale più piccola. Consulta Paginare i risultati per il contratto completo.
Anche con un affiancamento pulito, un'attività che viene indicizzata dopo la chiusura della sua finestra non appare mai in una finestra successiva. Deduplica in base all'id dell'attività e amplia ogni nuova finestra in modo che si sovrapponga alla precedente di alcuni minuti, oppure esegui un passaggio di riconciliazione periodico che interroga nuovamente una finestra più vecchia.
Un limite created_at.lt troppo vicino al presente scarta silenziosamente e permanentemente le attività indicizzate in ritardo: una volta che created_at.gte le supera, nessuna finestra successiva può recuperarle. Considera il valore di 1 minuto per l'interrogabilità come il ritardo di indicizzazione documentato, non come una raccomandazione indicativa.
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"Pagina fino a quando has_more è false, quindi persisti first_id dalla risposta finale e passalo invariato come before_id nell'esecuzione successiva per recuperare le attività più recenti del cursore salvato. Per procedere nella direzione opposta per un backfill, persisti invece last_id e passalo come after_id. Per il riferimento completo su cursore vs page token e la semantica di retry, consulta Paginare i risultati.
Un ciclo di catch-up (recupero) di produzione recupera le attività registrate dall'ultimo polling guidando l'iterazione tramite has_more e first_id:
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)I cursori sopravvivono alla rotazione delle chiavi; consulta Gestire e ruotare le chiavi.
Ogni pagina è adiacente al cursore che passi: il ciclo avanza verso il presente, una pagina alla volta. Non considerare una singola risposta come aggiornata mentre has_more è true. Persisti il cursore solo dopo che has_more è false; le pagine non recuperate sono quelle più recenti tra il first_id di questa risposta e il presente, e rimangono non lette finché non completi il ciclo o esegui di nuovo.
Ogni Activity contiene campi che puoi unire in join con eventi già presenti nel tuo SIEM (Splunk, Datadog, Microsoft Sentinel, Cribl o simili):
| Campo della Compliance API | Target di join |
|---|---|
actor.user_id | L'identificatore utente stabile del tuo identity provider |
actor.email_address | Email di directory quando un ID stabile non è disponibile |
actor.ip_address | Log di rete, VPN ed endpoint |
created_at | Correlazione per finestra temporale tra qualsiasi sorgente |
actor.user_id e actor.email_address sono presenti quando actor.type è user_actor; verifica il discriminatore prima di leggerli. user_id è un identificatore stabile e opaco per l'account utente: è coerente in ogni endpoint della Compliance API e in ogni payload di attività, e non cambia quando l'email o il nome visualizzato dell'utente cambiano. Usa user_id, non email_address, come chiave di join primaria.
Le chiamate alla Compliance API stessa emettono attività compliance_api_accessed. Acquisisci queste insieme agli altri tipi di attività in modo che il tuo SIEM registri chi ha interrogato i dati di conformità e quando. Passa activity_types[]=compliance_api_accessed per limitare l'ambito della query, quindi nel tuo client leggi actor.api_key_id da ogni attività il cui actor.type è api_actor per attribuire l'accesso a una specifica Compliance Access Key o chiave Admin API.
Tre orizzonti di conservazione determinano cosa puoi recuperare in seguito:
| Dati | Conservati per | Controllati da |
|---|---|---|
| Record dell'Activity Feed | 6 anni | Anthropic |
| Contenuti di chat, file e progetti | La policy di conservazione claude.ai della tua organizzazione | La tua organizzazione |
| Contenuti eliminati definitivamente tramite la Compliance API | Non conservati; l'eliminazione è immediata e permanente | Il chiamante dell'endpoint DELETE |
Per come il resto della Claude Platform gestisce la conservazione, consulta API e conservazione dei dati.
Decidi tra esportazione-e-archiviazione e recupero API on-demand come segue:
deleted_at popolato, ma le eliminazioni tramite la Compliance API no.In ogni altro caso, affidati al recupero diretto tramite API ed evita di mantenere una copia parallela.
Considera l'Activity Feed come at-least-once (almeno una volta): un attraversamento correttamente paginato restituisce ogni attività almeno una volta, ma un retry dopo un fallimento parziale può riconsegnare attività che hai già memorizzato. Deduplica in base al campo id dell'attività.
Gli endpoint di elenco non restituiscono un campo total_count o un checksum. Per attestare che un'esecuzione di esportazione è completa, registra:
last_id terminale.request-id della pagina finale.Gli endpoint dei contenuti (chat, file, progetti e allegati di progetto) servono solo dati di claude.ai; l'Activity Feed espone eventi amministrativi e di risorsa a livello di organizzazione. La Compliance API non include:
Consulta le FAQ della Compliance API per maggiori informazioni su cosa la Compliance API cattura e cosa no.
Per la catena di custodia, memorizza i record esportati con metadati di provenienza: endpoint sorgente, parametri di query, timestamp dell'esecuzione e un hash del contenuto di ogni record.
Parametri di filtro, paginazione e schema dell'oggetto Activity.
Gli endpoint dei contenuti e di eliminazione definitiva.
Was this page helpful?