Claude Platform Docs
AdministraçãoAPI de Compliance

Recuperar e excluir chats, arquivos e projetos

Acesse conteúdo de chats, anexos de arquivos e projetos de organizações do claude.ai por meio da Compliance API.

Os endpoints desta página expõem conteúdo de chats, uploads de arquivos, projetos e anexos de projetos do Claude Enterprise para revisores de conformidade. Eles oferecem suporte a exportações de "eDiscovery" (descoberta eletrônica), aplicação de "data loss prevention" (prevenção contra perda de dados), ou DLP, e respostas a solicitações de exclusão de conta. O conteúdo de chats, arquivos e projetos é retido pelo tempo que a política de retenção da sua organização permitir. Quando um usuário exclui um chat no claude.ai, o conteúdo das mensagens, os arquivos anexados, os arquivos gerados por ferramentas e os artefatos são excluídos junto com ele. A Compliance API ainda lista o chat, com deleted_at preenchido e um name vazio, e retorna suas mensagens sem o conteúdo. Chats que foram excluídos permanentemente (por meio da própria Compliance API ou após o término da janela de retenção da organização) não podem ser recuperados.

Ambos os escopos são concedidos apenas em Compliance Access Keys (sk-ant-api01-...) criadas no claude.ai; consulte Configurar a Compliance API para provisionar uma. O escopo read:compliance_user_data cobre a recuperação; delete:compliance_user_data é necessário apenas para os endpoints de exclusão. Os endpoints de chat, arquivo, projeto e anexo não estão disponíveis para chaves da Admin API (sk-ant-admin01-...); chamadas autenticadas com uma chave da Admin API retornam 403 Forbidden.

Os endpoints desta página paginam de duas maneiras; consulte Paginar resultados para a referência completa. Cada seção indica qual esquema se aplica.

Recuperar chats e mensagens

Use Listar chats para percorrer os metadados dos chats e, em seguida, Obter mensagens do chat para buscar o conteúdo completo das mensagens de um chat.

O endpoint de listagem de chats tem como padrão o escopo de toda a organização: omita user_ids[] para incluir todos os chats da sua organização pai. Adicione order_by=updated_at para ordenar pelo horário da última atualização. Essa combinação é a forma recomendada de exportar chats e manter uma exportação atualizada, porque um único loop paginado captura chats novos, chats modificados e chats excluídos no claude.ai de todos os usuários, sem precisar enumerar os usuários primeiro. A requisição a seguir lista os chats atualizados desde uma determinada 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"
}

Os resultados são ordenados de forma ascendente pelo campo order_by, do mais antigo para o mais recente, com empates resolvidos por id. A paginação usa os campos de cursor padrão first_id/last_id/has_more descritos em Paginar resultados. Para avançar em direção aos chats mais recentes, passe o last_id da resposta de volta como after_id na próxima requisição.

Esse avanço também é a forma de manter uma exportação atualizada entre execuções: persista o last_id da página final e retome a partir dele como after_id na próxima execução. Como a lista é ordenada por updated_at, um chat que muda depois do seu cursor salvo reaparece à frente dele, de modo que cada execução incremental retorna tanto chats totalmente novos quanto chats mais antigos que foram modificados ou excluídos no claude.ai desde então. Processe os resultados de forma idempotente, usando o id do chat como chave, para lidar com essas reaparições. Um chat que retorna com deleted_at preenchido não tem mais conteúdo para buscar, portanto trate-o como excluído e não como atualizado.

Algumas restrições se aplicam a essas consultas em toda a organização. Os cursores são opacos e vinculados à chave de ordenação, portanto um after_id emitido sob um valor de order_by é rejeitado com um erro 400 sob o outro. Os limites de filtro de tempo também devem corresponder à chave de ordenação: combine limites updated_at.* com order_by=updated_at, e limites created_at.* com o padrão order_by=created_at. A paginação reversa com before_id não é suportada, e o filtro project_ids[] não está disponível. Consulte Listar chats para a referência completa de filtros.

Para restringir a lista a usuários específicos (por exemplo, uma retenção legal sobre custodiantes nomeados), passe de 1 a 10 valores user_ids[]. Obtenha os IDs em Listar usuários da organização. Consultas filtradas por usuário sempre ordenam por created_at (passar order_by=updated_at retorna um erro 400) e suportam tanto after_id quanto before_id. A filtragem por project_ids[] só está disponível nessa forma filtrada por usuário. Combinar user_ids[] com qualquer limite updated_at.* está descontinuado e será rejeitado com um erro 400 após 2026-09-22; para manter um conjunto de custodiantes atualizado por horário de atualização, execute o percurso de toda a organização com order_by=updated_at sem user_ids[] e selecione os chats dos custodiantes a partir dos resultados, e mantenha a listagem filtrada por usuário para exportações ordenadas por 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"

A resposta da listagem contém apenas metadados dos chats. Para obter o conteúdo real do chat, os arquivos anexados e os artefatos inline (documentos estruturados que o Claude gera dentro de um chat), prossiga com o endpoint de mensagens para cada ID de 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"

O endpoint de mensagens retorna os metadados do chat mais um array chat_messages ordenado por created_at. Quando limit é omitido, o conjunto completo de mensagens é retornado em uma única resposta; passe limit, after_id ou before_id para paginar chats muito longos. O endpoint também aceita limites de intervalo created_at.* e updated_at.* (gt, gte, lt, lte) e um parâmetro order (asc ou desc). Consulte Obter mensagens do chat para a lista completa de parâmetros. Para mensagens do usuário, created_at é quando a mensagem foi enviada; para mensagens do assistente, é quando o Claude terminou de gerar a mensagem. Cada mensagem contém seu conteúdo de texto e, quando presentes, quaisquer arquivos enviados (normalmente em mensagens do usuário), quaisquer arquivos gerados por ferramentas e quaisquer artefatos que o assistente produziu ou atualizou (normalmente em mensagens do 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 podem, cada um, ser null em uma determinada mensagem. files são os arquivos e anexos de texto (por exemplo, PDFs, imagens, planilhas, documentos e texto colado) que o usuário anexou à mensagem, conforme o claude.ai os armazenou. generated_files são arquivos binários que o assistente criou durante a conversa por meio do uso de ferramentas (por exemplo, PDFs, planilhas ou apresentações de slides). artifacts são documentos versionados (por exemplo, código ou markdown) que o assistente gerou ou atualizou em sua resposta; um artefato pode ser revisado ao longo de vários turnos do assistente no mesmo chat, e cada revisão aparece como um novo version_id sob o mesmo id de artefato. Passe o id de cada entrada (ou version_id para artefatos) ao endpoint de conteúdo correspondente em Recuperar arquivos e artefatos para baixá-lo.

Recuperar arquivos e artefatos

Arquivos e artefatos são baixados por ID, não listados de forma independente. Os IDs vêm do endpoint de mensagens do chat em Recuperar chats e mensagens (os arrays files, generated_files e artifacts em cada mensagem) ou, para uploads em nível de projeto, do endpoint de anexos de projeto.

Escolha o endpoint que corresponde ao seu tipo de ID e aos dados de que você precisa. O mesmo endpoint de conteúdo de arquivo atende tanto arquivos de chat quanto arquivos de projeto.

Você temVocê querUse este endpoint
ID claude_file_*O conteúdo do arquivoBaixar conteúdo do arquivo
ID claude_file_*Apenas os metadados do arquivoObter metadados do arquivo
ID claude_gen_file_*O conteúdo binário de um arquivo gerado por ferramentaBaixar um arquivo gerado pelo Claude
ID claude_gen_file_*Apenas os metadados de um arquivo gerado por ferramentaObter metadados de arquivo gerado
ID claude_artifact_version_*O texto de uma versão de artefatoBaixar conteúdo do artefato
ID claude_artifact_version_*Apenas os metadados da versão do artefatoObter metadados do artefato
ID claude_proj_doc_*O conteúdo em texto simples de um documento de projetoObter conteúdo de documento de projeto
ID claude_proj_doc_*Apenas os metadados de um documento de projetoObter metadados de documento de projeto

O endpoint de conteúdo de arquivo transmite via streaming o conteúdo que o claude.ai armazenou para o arquivo como uma resposta binária em chunks. Esse conteúdo nem sempre é idêntico ao arquivo que o usuário enviou. Imagens podem ser servidas como uma cópia processada em vez dos bytes enviados. Alguns documentos anexados a chats (por exemplo, arquivos do Word, arquivos do PowerPoint e alguns PDFs) são armazenados como o texto que o claude.ai extraiu deles. Para esses documentos, o endpoint retorna o texto extraído sob o nome de arquivo original, e o documento original não está disponível por meio da Compliance API. Os campos size_bytes e md5 descrevem o conteúdo armazenado e não o arquivo enviado. O nome do arquivo e o mime_type ainda podem indicar o formato do documento enviado. Identifique o formato de um arquivo a partir dos bytes retornados, não a partir do nome ou do tipo declarado.

A resposta contém estes cabeçalhos:

  • Content-Disposition: attachment; filename*=utf-8''<percent-encoded filename> contém o nome de arquivo original do upload na forma estendida da RFC 5987. A forma estendida é usada para todos os nomes de arquivo, não apenas os não ASCII.
  • Content-Type contém o tipo MIME registrado para o conteúdo armazenado, que, para um documento armazenado como texto extraído, ainda pode indicar o formato do documento original.
  • Content-MD5 contém o digest MD5 dos bytes servidos, codificado em base64 conforme especificado na RFC 1864.
  • Transfer-Encoding: chunked está sempre definido.
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"

As flags -OJ instruem o curl a salvar a resposta com o nome de arquivo de Content-Disposition, que é o nome de arquivo original que o usuário enviou.

O endpoint de conteúdo de artefato retorna o corpo de texto de uma versão de artefato. Passe o version_id de uma das entradas no array artifacts de uma mensagem do assistente, não o id estável do artefato. Cada nova versão de um artefato tem seu próprio version_id, e a Compliance API serve os bytes exatos dessa versão.

Recuperar projetos e anexos

Projetos agrupam chats relacionados junto com instruções personalizadas, conteúdo de base de conhecimento e arquivos ou documentos de texto anexados. A Compliance API expõe metadados de projetos, detalhes de projetos e a lista de anexos pertencentes a um projeto.

Os resultados de projetos são ordenados por data de criação de forma ascendente. Os resultados de anexos são ordenados por created_at de forma ascendente, com empates resolvidos por id. As respostas de listagem de projetos e de listagem de anexos paginam com um token de página opaco next_page em vez dos cursores first_id/last_id usados pelos chats e pelo Activity Feed. Passe o token de volta como o parâmetro de consulta page na próxima requisição.

Arquivos de projeto versus documentos de projeto

Um anexo de projeto tem uma de duas formas distintas, identificadas pelo discriminador type em cada entrada:

Entradas com type igual a project_file são uploads de arquivos (PDFs, imagens, planilhas) cujos IDs começam com claude_file_; baixe-os com Baixar conteúdo do arquivo. Entradas com type igual a project_doc são documentos de texto simples (sempre text/plain) cujos IDs começam com claude_proj_doc_, incluindo documentos como arquivos do Word que o claude.ai converte em texto quando são adicionados a um projeto; busque-os com Obter conteúdo de documento de projeto.

Um consumidor que percorre a lista de anexos deve ramificar com base em type e chamar o endpoint de conteúdo correspondente para cada entrada. A requisição a seguir lista uma página de anexos; pagine passando next_page de volta como o parâmetro page até que has_more seja 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
}

Excluir conteúdo

A Compliance API expõe endpoints de exclusão permanente para chats, arquivos, documentos de projeto e projetos inteiros. Um chat excluído permanentemente não pode ser restaurado e deixa de aparecer nas respostas de listagem depois disso.

Todos os quatro endpoints exigem o escopo delete:compliance_user_data, que é concedido separadamente do escopo de leitura quando a Compliance Access Key é criada.

A requisição a seguir exclui um chat. O mesmo padrão se aplica aos outros endpoints de exclusão; apenas a URL muda.

cURL
# AVISO: Esta operação exclui PERMANENTEMENTE o chat, todas as suas mensagens
# e quaisquer arquivos anexados. A exclusão é imediata e não pode ser desfeita. Ela
# requer o escopo `delete:compliance_user_data`, que é concedido separadamente
# de `read:compliance_user_data` quando a Compliance Access Key é criada.
# Certifique-se de ter autorização explícita antes de executar isto.

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

Cada exclusão bem-sucedida retorna um pequeno envelope de confirmação com um id e um discriminador type. O endpoint de chat retorna claude_chat_deleted; verifique o campo type antes de considerar a exclusão confirmada. Consulte o esquema de resposta na página de referência da API de cada endpoint de exclusão para o valor exato de type que os outros endpoints retornam.

Desvincular chats antes de excluir um projeto

Um projeto não pode ser excluído enquanto houver chats vinculados a ele. A API retorna 409 com este 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."
  }
}

Para resolver, liste os chats do projeto com GET /v1/compliance/apps/chats?user_ids[]={user_id}&project_ids[]={project_id} (o filtro project_ids[] exige pelo menos um valor user_ids[]; enumere os IDs por meio de Listar usuários da organização), exclua cada um com DELETE /v1/compliance/apps/chats/{claude_chat_id} (ou mova-o para fora do projeto a partir do claude.ai) e, em seguida, tente novamente a exclusão do projeto.

Próximos passos

O esquema completo de requisição e resposta para cada endpoint de chat, arquivo, projeto e artefato.

Liste as sessões que seus usuários executam em aplicativos e agentes do Claude, como Cowork e Claude Code, e recupere suas transcrições.

Enumere as pessoas e equipes associadas aos chats e projetos desta página.

Was this page helpful?