Claude Platform Docs
AmministrazioneCompliance API

Recuperare ed eliminare chat, file e progetti

Accedi al contenuto delle chat, agli allegati e ai progetti delle organizzazioni claude.ai tramite la Compliance API.

Gli endpoint di questa pagina espongono ai revisori della conformità il contenuto delle chat, i file caricati, i progetti e gli allegati dei progetti di Claude Enterprise. Supportano le esportazioni di eDiscovery (electronic discovery, ovvero indagine elettronica), l'applicazione delle policy di "data loss prevention" (prevenzione della perdita di dati), o DLP, e le risposte alle richieste di eliminazione degli account. Il contenuto di chat, file e progetti viene conservato per tutto il tempo consentito dalla policy di conservazione della tua organizzazione. Quando un utente elimina una chat in claude.ai, il contenuto dei suoi messaggi, i file allegati, i file generati dagli strumenti e gli artifact vengono eliminati insieme a essa. La Compliance API continua a elencare la chat, con deleted_at popolato e un name vuoto, e restituisce i suoi messaggi senza il loro contenuto. Le chat che sono state eliminate definitivamente (hard-deleted), tramite la Compliance API stessa o dopo la scadenza della finestra di conservazione dell'organizzazione, non sono recuperabili.

Entrambi gli scope vengono concessi solo sulle Compliance Access Key (sk-ant-api01-...) create in claude.ai; consulta Configurare la Compliance API per crearne una. Lo scope read:compliance_user_data copre il recupero; delete:compliance_user_data è richiesto solo per gli endpoint di eliminazione. Gli endpoint per chat, file, progetti e allegati non sono disponibili per le chiavi Admin API (sk-ant-admin01-...); le chiamate autenticate con una chiave Admin API restituiscono 403 Forbidden.

Gli endpoint di questa pagina effettuano la paginazione in due modi; consulta Paginare i risultati per il riferimento completo. Ogni sezione indica quale schema si applica.

Recuperare chat e messaggi

Usa Elencare le chat per scorrere i metadati delle chat, quindi Ottenere i messaggi di una chat per recuperare il contenuto completo dei messaggi di una singola chat.

L'endpoint di elenco delle chat ha per impostazione predefinita un ambito a livello di organizzazione: ometti user_ids[] per includere ogni chat della tua organizzazione principale. Aggiungi order_by=updated_at per ordinare in base all'ora dell'ultimo aggiornamento. Questa combinazione è il modo consigliato per esportare le chat e mantenere aggiornata un'esportazione, perché un unico ciclo paginato raccoglie le chat nuove, le chat modificate e le chat eliminate in claude.ai per ogni utente, senza dover prima enumerare gli utenti. La richiesta seguente elenca le chat aggiornate a partire da una determinata data.

cURL
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"
Response
{
  "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"
}

I risultati sono ordinati in modo crescente in base al campo order_by, dal più vecchio al più recente, con i pareggi risolti tramite id. La paginazione usa i campi cursore standard first_id/last_id/has_more descritti in Paginare i risultati. Per avanzare verso le chat più recenti, passa il last_id della risposta come after_id nella richiesta successiva.

Questo avanzamento è anche il modo in cui mantieni aggiornata un'esportazione tra un'esecuzione e l'altra: salva il last_id dell'ultima pagina e riprendi da esso come after_id nell'esecuzione successiva. Poiché l'elenco è ordinato per updated_at, una chat che cambia dopo il cursore salvato ricompare davanti a esso, quindi ogni esecuzione incrementale restituisce sia le chat completamente nuove sia le chat più vecchie che nel frattempo sono state modificate o eliminate in claude.ai. Elabora i risultati in modo idempotente, usando come chiave l'id della chat, per gestire queste ricomparse. Una chat che ritorna con deleted_at popolato non ha più contenuto da recuperare, quindi trattala come eliminata anziché aggiornata.

A queste query a livello di organizzazione si applicano alcuni vincoli. I cursori sono opachi e legati alla chiave di ordinamento, quindi un after_id emesso con un valore di order_by viene rifiutato con un errore 400 se usato con l'altro. Anche i limiti dei filtri temporali devono corrispondere alla chiave di ordinamento: abbina i limiti updated_at.* a order_by=updated_at e i limiti created_at.* al valore predefinito order_by=created_at. La paginazione all'indietro con before_id non è supportata e il filtro project_ids[] non è disponibile. Consulta Elencare le chat per il riferimento completo dei filtri.

Per limitare invece l'elenco a utenti specifici (ad esempio, un legal hold su custodi nominati), passa da 1 a 10 valori user_ids[]. Ottieni gli ID da Elencare gli utenti dell'organizzazione. Le query filtrate per utente sono sempre ordinate per created_at (passare order_by=updated_at restituisce un errore 400) e supportano sia after_id sia before_id. Il filtro per project_ids[] è disponibile solo in questa forma filtrata per utente. La combinazione di user_ids[] con qualsiasi limite updated_at.* è deprecata e verrà rifiutata con un errore 400 dopo il 2026-09-22; per mantenere aggiornato un insieme di custodi in base all'ora di aggiornamento, esegui la scansione a livello di organizzazione con order_by=updated_at senza user_ids[] e seleziona le chat dei custodi dai suoi risultati, riservando l'elenco filtrato per utente alle esportazioni ordinate per created_at.

cURL
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"

La risposta dell'elenco contiene solo i metadati delle chat. Per estrarre il contenuto effettivo delle chat, i file allegati e gli artifact inline (documenti strutturati che Claude genera all'interno di una chat), prosegui con l'endpoint dei messaggi per ogni ID chat:

cURL
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"

L'endpoint dei messaggi restituisce i metadati della chat più un array chat_messages ordinato per created_at. Quando limit viene omesso, l'intero insieme di messaggi viene restituito in un'unica risposta; passa limit, after_id o before_id per scorrere chat molto lunghe. L'endpoint accetta anche limiti di intervallo created_at.* e updated_at.* (gt, gte, lt, lte) e un parametro order (asc o desc). Consulta Ottenere i messaggi di una chat per l'elenco completo dei parametri. Per i messaggi dell'utente, created_at è il momento in cui il messaggio è stato inviato; per i messaggi dell'assistente, è il momento in cui Claude ha terminato di generare il messaggio. Ogni messaggio contiene il proprio contenuto testuale e, quando presenti, gli eventuali file caricati (tipicamente nei messaggi dell'utente), gli eventuali file generati dagli strumenti e gli eventuali artifact che l'assistente ha prodotto o aggiornato (tipicamente nei messaggi dell'assistente):

Response
{
  "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 e artifacts possono ciascuno essere null in un dato messaggio. files sono i file e gli allegati di testo (ad esempio PDF, immagini, fogli di calcolo, documenti e testo incollato) che l'utente ha allegato al messaggio, così come claude.ai li ha archiviati. generated_files sono file binari che l'assistente ha creato durante la conversazione tramite "tool use" (uso degli strumenti), ad esempio PDF, fogli di calcolo o presentazioni. artifacts sono documenti con versioni (ad esempio codice o markdown) che l'assistente ha generato o aggiornato nella sua risposta; un artifact può essere rivisto in più turni dell'assistente nella stessa chat, e ogni revisione appare come un nuovo version_id sotto lo stesso id dell'artifact. Passa l'id di ciascuna voce (o il version_id per gli artifact) all'endpoint di contenuto corrispondente in Recuperare file e artifact per scaricarlo.

Recuperare file e artifact

I file e gli artifact vengono scaricati per ID, non elencati in modo indipendente. Gli ID provengono dall'endpoint dei messaggi delle chat in Recuperare chat e messaggi (gli array files, generated_files e artifacts di ogni messaggio) oppure, per i caricamenti a livello di progetto, dall'endpoint degli allegati di progetto.

Scegli l'endpoint che corrisponde al tuo tipo di ID e ai dati di cui hai bisogno. Lo stesso endpoint di contenuto dei file serve sia i file delle chat sia i file dei progetti.

HaiVuoiUsa questo endpoint
ID claude_file_*Il contenuto del fileScaricare il contenuto di un file
ID claude_file_*Solo i metadati del fileOttenere i metadati di un file
ID claude_gen_file_*Il contenuto binario di un file generato da uno strumentoScaricare un file generato da Claude
ID claude_gen_file_*Solo i metadati di un file generato da uno strumentoOttenere i metadati di un file generato
ID claude_artifact_version_*Il testo di una versione di artifactScaricare il contenuto di un artifact
ID claude_artifact_version_*Solo i metadati della versione di artifactOttenere i metadati di un artifact
ID claude_proj_doc_*Il contenuto in testo semplice di un documento di progettoOttenere il contenuto di un documento di progetto
ID claude_proj_doc_*Solo i metadati di un documento di progettoOttenere i metadati di un documento di progetto

L'endpoint di contenuto dei file trasmette in streaming il contenuto che claude.ai ha archiviato per il file come risposta binaria a blocchi (chunked). Tale contenuto non è sempre identico al file caricato dall'utente. Le immagini possono essere servite come copia elaborata anziché come byte caricati. Alcuni documenti allegati alle chat (ad esempio file Word, file PowerPoint e alcuni PDF) vengono archiviati come il testo che claude.ai ha estratto da essi. Per questi documenti, l'endpoint restituisce il testo estratto con il nome del file originale, e il documento originale non è disponibile tramite la Compliance API. I campi size_bytes e md5 descrivono il contenuto archiviato anziché il file caricato. Il nome del file e il mime_type possono comunque indicare il formato del documento caricato. Identifica il formato di un file dai byte restituiti, non dal suo nome o dal tipo dichiarato.

La risposta contiene queste intestazioni:

  • Content-Disposition: attachment; filename*=utf-8''<percent-encoded filename> contiene il nome del file caricato originale nella forma estesa RFC 5987. La forma estesa viene usata per ogni nome di file, non solo per quelli non ASCII.
  • Content-Type contiene il tipo MIME registrato per il contenuto archiviato, che per un documento archiviato come testo estratto può comunque indicare il formato del documento originale.
  • Content-MD5 contiene il digest MD5 dei byte serviti, codificato in base64 come specificato nella RFC 1864.
  • Transfer-Encoding: chunked è sempre impostato.
cURL
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"

I flag -OJ indicano a curl di salvare la risposta con il nome di file presente in Content-Disposition, che è il nome del file originale caricato dall'utente.

L'endpoint di contenuto degli artifact restituisce il corpo testuale di una versione di artifact. Passa il version_id di una delle voci nell'array artifacts di un messaggio dell'assistente, non l'id stabile dell'artifact. Ogni nuova versione di un artifact ha il proprio version_id, e la Compliance API serve i byte esatti di quella versione.

Recuperare progetti e allegati

I progetti raggruppano chat correlate insieme a istruzioni personalizzate, contenuti della knowledge base e file o documenti di testo allegati. La Compliance API espone i metadati dei progetti, i dettagli dei progetti e l'elenco degli allegati appartenenti a un progetto.

I risultati dei progetti sono ordinati per data di creazione in modo crescente. I risultati degli allegati sono ordinati per created_at in modo crescente, con i pareggi risolti tramite id. Le risposte dell'elenco dei progetti e dell'elenco degli allegati effettuano la paginazione con un token di pagina opaco next_page invece dei cursori first_id/last_id usati dalle chat e dall'Activity Feed. Passa il token come parametro di query page nella richiesta successiva.

File di progetto e documenti di progetto

Un allegato di progetto ha una di due forme distinte, identificate dal discriminatore type di ogni voce:

Le voci con type uguale a project_file sono file caricati (PDF, immagini, fogli di calcolo) i cui ID iniziano con claude_file_; scaricali con Scaricare il contenuto di un file. Le voci con type uguale a project_doc sono documenti in testo semplice (sempre text/plain) i cui ID iniziano con claude_proj_doc_, inclusi documenti come i file Word che claude.ai converte in testo quando vengono aggiunti a un progetto; recuperali con Ottenere il contenuto di un documento di progetto.

Un consumer che scorre l'elenco degli allegati deve diramare in base a type e chiamare l'endpoint di contenuto corrispondente per ogni voce. La richiesta seguente elenca una pagina di allegati; effettua la paginazione passando next_page come parametro page finché has_more non è false.

cURL
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"
Response
{
  "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
}

Eliminare contenuti

La Compliance API espone endpoint di eliminazione definitiva (hard-delete) per chat, file, documenti di progetto e interi progetti. Una chat eliminata definitivamente non può essere ripristinata e in seguito smette di comparire nelle risposte degli elenchi.

Tutti e quattro gli endpoint richiedono lo scope delete:compliance_user_data, che viene concesso separatamente dallo scope di lettura al momento della creazione della Compliance Access Key.

La richiesta seguente elimina una chat. Lo stesso schema si applica agli altri endpoint di eliminazione; cambia solo l'URL.

cURL
# ATTENZIONE: questa operazione elimina DEFINITIVAMENTE la chat, tutti i suoi messaggi
# e gli eventuali file allegati. L'eliminazione è immediata e irreversibile.
# Richiede lo scope `delete:compliance_user_data`, concesso separatamente
# da `read:compliance_user_data` alla creazione della Compliance Access Key.
# Assicurati di avere un'autorizzazione esplicita prima di eseguirla.

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"
Response
{
  "id": "claude_chat_01H5CWunD7RpVJ5bHa8RCkja",
  "type": "claude_chat_deleted"
}

Ogni eliminazione riuscita restituisce un piccolo involucro di conferma con un id e un discriminatore type. L'endpoint delle chat restituisce claude_chat_deleted; controlla il campo type prima di considerare confermata l'eliminazione. Consulta lo schema di risposta nella pagina di riferimento API di ciascun endpoint di eliminazione per il valore esatto di type restituito dagli altri endpoint.

Scollegare le chat prima di eliminare un progetto

Un progetto non può essere eliminato finché vi rimangono chat collegate. L'API restituisce 409 con questo corpo:

{
  "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."
  }
}

Per risolvere, elenca le chat del progetto con GET /v1/compliance/apps/chats?user_ids[]={user_id}&project_ids[]={project_id} (il filtro project_ids[] richiede almeno un valore user_ids[]; enumera gli ID tramite Elencare gli utenti dell'organizzazione), elimina ciascuna con DELETE /v1/compliance/apps/chats/{claude_chat_id} (oppure spostala fuori dal progetto da claude.ai), quindi riprova l'eliminazione del progetto.

Passaggi successivi

Lo schema completo di richiesta e risposta per ogni endpoint di chat, file, progetti e artifact.

Elenca le sessioni che i tuoi utenti eseguono nelle app e negli agenti Claude, come Cowork e Claude Code, e recupera le loro trascrizioni.

Enumera le persone e i team associati alle chat e ai progetti di questa pagina.

Was this page helpful?