Projete sua integração de conformidade
Escolha entre polling e consumo do Activity Feed orientado por cursor, correlacione eventos da Compliance API com seu SIEM e planeje a retenção.
Uma integração de produção com a Compliance API faz três escolhas de design: como ela consome o Activity Feed, como sua saída se correlaciona com seu sistema de "security information and event management" (gerenciamento de informações e eventos de segurança), ou SIEM, e onde ficam as cópias de longo prazo de atividades e conteúdo. Essas escolhas são independentes dos próprios endpoints; esta página ajuda você a avaliar os tradeoffs.
Esta página pressupõe que você leu as seguintes páginas:
- Consultar o Activity Feed, que define os parâmetros e o contrato de paginação referenciados ao longo deste documento.
- Recuperar e excluir chats, arquivos e projetos, que define os endpoints de chat, arquivo e projeto e a semântica de
deleted_atreferenciada em Planejar a retenção de conteúdo. - Recuperar transcrições de sessões, que define os endpoints de sessões locais e remotas.
Escolha um padrão de consumo do feed
O Activity Feed oferece suporte a dois padrões de consumo: "window polling" (polling por janela) periódico delimitado por created_at.gte e created_at.lt, e leituras incrementais orientadas por cursor que persistem um cursor de uma resposta e o passam na próxima requisição. Ambos retornam objetos Activity idênticos; a diferença é o estado que seu cliente persiste entre as chamadas.
Ambos os padrões compartilham estas restrições:
- As atividades ficam consultáveis dentro de 1 minuto após ocorrerem e são retidas por 6 anos. O registro não é retroativo: ele começa quando a Compliance API é habilitada pela primeira vez para sua organização, e a atividade anterior à habilitação não é preenchida retroativamente.
- O
limitmáximo para cada página é 5.000. - Os valores de cursor são strings opacas que você não deve analisar.
- As requisições são limitadas a 600 por minuto por organização pai, compartilhadas entre todas as chaves, todas as organizações vinculadas e todos os endpoints
/v1/compliance/*; diferentemente dos endpoints de sessões locais, os endpoints de sessões remotas têm um segundo orçamento de requisições adicional. Consulte 429 Too Many Requests para os cabeçalhos de resposta e o contrato de retentativa.
| Padrão | Escolha quando |
|---|---|
| Window polling | Seu pipeline é executado em um cronograma fixo, você prefere workers sem estado e pode tolerar a repetição ou sobreposição de janelas |
| Leituras incrementais orientadas por cursor | Você quer a menor latência entre a ocorrência de uma atividade e a ingestão pelo seu pipeline, quer evitar reler páginas que já esgotou e tem um local durável para persistir um cursor entre execuções |
Window polling
Defina created_at.lt pelo menos 1 minuto no passado para que todas as atividades na janela já estejam consultáveis. Use created_at.gte para o limite inferior e created_at.lt para o limite superior, de modo que janelas consecutivas se encaixem sem lacunas ou sobreposição; reutilize o valor lt da janela anterior como o gte da próxima janela.
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 a resposta tem has_more: true, a janela contém mais de uma página de atividades. Pagine dentro da janela passando o last_id da resposta como after_id na próxima requisição (parando quando has_more for false) ou escolha uma janela de tempo menor. Consulte Paginar resultados para o contrato completo.
Mesmo com um encaixe limpo, uma atividade que é indexada depois que sua janela foi fechada nunca aparece em uma janela posterior. Deduplique pelo id da atividade e amplie cada nova janela para que ela se sobreponha à anterior por alguns minutos ou execute uma passagem periódica de reconciliação que consulte novamente uma janela mais antiga.
Leituras incrementais orientadas por cursor
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"Pagine até que has_more seja false, então persista o first_id da resposta final e passe-o inalterado como before_id na próxima execução para recuperar atividades mais recentes que o cursor salvo. Para percorrer na direção oposta em um backfill, persista o last_id e passe-o como after_id. Para a referência completa de cursor versus token de página e a semântica de retentativa, consulte Paginar resultados.
Um loop de catch-up de produção busca as atividades registradas desde seu último polling conduzindo a iteração a partir de 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)Os cursores sobrevivem à rotação de chaves; consulte Gerenciar e rotacionar chaves.
Correlacione com seu SIEM
Cada Activity carrega campos que você pode cruzar com eventos já presentes no seu SIEM (Splunk, Datadog, Microsoft Sentinel, Cribl ou similar):
| Campo da Compliance API | Alvo do cruzamento |
|---|---|
actor.user_id | O identificador de usuário estável do seu provedor de identidade |
actor.email_address | E-mail do diretório quando um ID estável não está disponível |
actor.ip_address | Logs de rede, VPN e endpoint |
actor.user_agent | Inventário de endpoints e dispositivos, e o aplicativo cliente que fez a requisição |
created_at | Correlação por janela de tempo em qualquer fonte |
actor.user_id e actor.email_address estão presentes quando actor.type é user_actor. actor.ip_address e actor.user_agent estão ausentes em alguns tipos de ator, como anthropic_actor e scim_directory_sync_actor. Verifique o discriminador antes de ler qualquer um desses campos. user_id é um identificador estável e opaco para a conta do usuário: ele é consistente em todos os endpoints da Compliance API e payloads de atividade, e não muda quando o e-mail ou o nome de exibição do usuário muda. Use user_id, não email_address, como a chave primária de cruzamento.
As chamadas à própria Compliance API emitem atividades compliance_api_accessed. Ingira-as junto com os outros tipos de atividade para que seu SIEM registre quem consultou dados de conformidade e quando. Passe activity_types[]=compliance_api_accessed para delimitar a consulta e, em seguida, no seu cliente, leia actor.api_key_id de cada atividade cujo actor.type seja api_actor para atribuir o acesso a uma Compliance Access Key ou chave de Admin API específica.
Planeje a retenção de conteúdo
Cinco horizontes de retenção governam o que você pode recuperar posteriormente:
| Dados | Retidos por | Controlado por |
|---|---|---|
| Registros do Activity Feed | 6 anos | Anthropic |
| Conteúdo de chats, arquivos e projetos | A política de retenção do claude.ai da sua organização, a menos que um usuário o exclua antes | Sua organização |
| Transcrições de sessões locais (sessões nas máquinas dos usuários) | 6 anos por padrão, ou o período personalizado de retenção de conversas da sua organização quando um período finito está definido | Anthropic por padrão; sua organização quando ela define um período personalizado |
| Transcrições de sessões remotas (sessões na nuvem) | 6 anos | Anthropic |
| Conteúdo excluído permanentemente (hard-delete) por meio da Compliance API | Não retido; a exclusão é imediata e permanente | Quem chama o endpoint DELETE |
Para saber como o restante da Claude Platform lida com retenção, consulte API e retenção de dados.
Decida entre exportar e arquivar e a recuperação sob demanda via API da seguinte forma:
- Se seu horizonte de retenção legal (legal hold) ou de auditoria exceder 6 anos para metadados de atividade ou transcrições de sessões, exporte as páginas do Activity Feed e as transcrições de sessões para seu próprio arquivo à medida que as ingere.
- Se sua política de retenção de conteúdo for mais curta que seu horizonte de eDiscovery, exporte o conteúdo de chats e arquivos antes que a janela de retenção expire; a Compliance API não pode retornar conteúdo que a retenção já removeu. O mesmo se aplica às transcrições de sessões locais, que seguem o período personalizado de retenção de conversas da sua organização quando um período finito está definido, mesmo quando esse período é menor que 6 anos. Os endpoints de sessões locais param de retornar mensagens mais antigas que o período atual da sua organização assim que a configuração muda, e aumentar o período posteriormente não restaura transcrições que já expiraram, portanto exporte qualquer transcrição que você precise manter além dele.
- Se você precisar reter o conteúdo de chats depois que os usuários o excluírem no claude.ai (por exemplo, sob uma retenção legal), exporte o conteúdo de chats, arquivos e artefatos para seu próprio arquivo à medida que o ingere; a Compliance API não pode retornar conteúdo que um usuário já excluiu.
- Se um fluxo de trabalho puder emitir um hard-delete da Compliance API (por exemplo, aplicação de DLP), recupere e arquive o conteúdo alvo primeiro. Não há janela de recuperação após um hard-delete.
Em todos os outros casos, confie na recuperação direta via API e evite manter uma cópia paralela.
Garantias de entrega e completude
Trate o Activity Feed como at-least-once (pelo menos uma vez): uma travessia paginada corretamente retorna cada atividade pelo menos uma vez, mas uma retentativa após uma falha parcial pode reentregar atividades que você já armazenou. Deduplique pelo campo id da atividade.
Os endpoints de listagem não retornam um campo total_count nem um checksum. Para atestar que uma execução de exportação está completa, registre:
- O cursor inicial e o
last_idterminal. - O número de registros exportados.
- O timestamp da execução e o
request-idda página final.
O volume de atividades não é uma verificação de completude. Os tipos de atividade claude_*_viewed, como claude_chat_viewed, seguem o padrão de carregamento de cada aplicativo (consulte Entenda o objeto Activity). Um período com mensagens de chat, mas sem atividades claude_chat_viewed, não indica por si só dados ausentes. Em vez disso, confie na travessia e na passagem de sobreposição ou reconciliação descrita em Window polling.
Os endpoints de conteúdo (chats, arquivos, projetos, anexos de projetos e transcrições de sessões locais e remotas) servem apenas dados do Claude Enterprise. O Activity Feed expõe eventos administrativos e de recursos em toda a organização. A Compliance API não inclui:
- Texto de prompts ou respostas do modelo do Claude Console, ou de cargas de trabalho da Claude API autenticadas com uma chave de API.
- Atividade no dispositivo em sessões locais que nunca é enviada à Anthropic, como arquivos locais que o Claude não leu.
- Uso do Claude Code autenticado com uma chave de API do Claude Console, executado por meio de uma plataforma de nuvem de terceiros (Amazon Bedrock, Google Cloud ou Microsoft Foundry) ou executado no Claude Code na web.
- Sessões locais de organizações com prontidão para HIPAA habilitada e sessões locais para as quais a retenção zero de dados está em vigor.
- Blocos de pensamento, e imagens ou outro conteúdo binário, dentro de transcrições de sessões (as transcrições carregam apenas prompts do usuário, respostas do assistente e atividade de ferramentas; as transcrições de sessões locais mostram um bloco
textde placeholder onde o conteúdo binário foi omitido). - O arquivo original de um anexo de chat que o claude.ai armazenou como texto extraído, como alguns uploads de Word, PowerPoint e PDF (o endpoint de conteúdo de arquivo retorna o texto extraído; consulte Recuperar arquivos e artefatos).
- O prompt do sistema de sessões locais (uma mensagem marcadora o substitui).
- Definições de ferramentas e configuração de servidores MCP em transcrições de sessões (locais ou remotas), e metadados de citação em blocos
textem transcrições de sessões locais. - Conteúdo de transcrições de sessões locais em uma organização cuja chave de criptografia gerenciada pelo cliente não pode ser usada no momento. Essas requisições retornam 503 Service Unavailable, e os metadados das sessões ainda são listados.
- Conteúdo removido pela política de retenção da sua organização.
- Conteúdo de chats que os usuários excluem no claude.ai (os chats ainda são listados, com
deleted_atpreenchido). - Conteúdo excluído permanentemente (hard-delete) por meio da Compliance API.
Consulte as Perguntas frequentes da Compliance API para saber mais sobre o que a Compliance API captura e não captura.
Para a cadeia de custódia, armazene os registros exportados com metadados de proveniência: endpoint de origem, parâmetros de consulta, timestamp da execução e um hash de conteúdo de cada registro.
Próximos passos
Parâmetros de filtro, paginação e o esquema do objeto Activity.
Os endpoints de chat, arquivo e projeto, incluindo hard delete.
Liste as sessões que seus usuários executam em aplicativos e agentes Claude, como Cowork e Claude Code, e recupere suas transcrições.
Was this page helpful?