Claude Platform Docs
AdministraçãoAPI de Compliance

Recuperar transcrições de sessões

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

Os endpoints desta página expõem aos revisores de conformidade as transcrições das sessões que seus usuários executam em aplicativos e agentes Claude (hoje, Cowork e Claude Code) das suas organizações Claude Enterprise. Cada sessão é uma única conversa com Claude; sua transcrição é a sequência de prompts do usuário, respostas do assistente e chamadas e resultados de ferramentas nessa conversa. Os endpoints oferecem suporte a exportações de "eDiscovery" (descoberta eletrônica) e à aplicação de "data loss prevention" (prevenção contra perda de dados), ou DLP.

A Compliance API agrupa as sessões em duas famílias de endpoints de acordo com onde elas são executadas: endpoints de sessões locais para sessões nas máquinas dos usuários, e endpoints de sessões remotas para sessões executadas na nuvem em ambientes gerenciados pela Anthropic. Ambas as famílias são somente leitura, e nenhuma delas está disponível para chaves da Admin API (sk-ant-admin01-...): chamadas autenticadas com uma chave da Admin API retornam 403 Forbidden.

A tabela a seguir mapeia cada produto, e onde ele é executado, para a família de endpoints que retorna suas sessões e o valor de product_surface que as identifica nas respostas. Produtos são adicionados a esta tabela à medida que a cobertura se expande.

Produto e onde é executadoFamília de endpointsproduct_surface
Cowork no Claude Desktop, executado na máquina do usuárioEndpoints de sessões locais (/v1/compliance/apps/sessions/local)cowork
Claude Code no terminal, no Claude Desktop ou em uma extensão de IDE, executado na máquina do usuárioEndpoints de sessões locaisclaude_code
Sessões do Cowork iniciadas no claude.ai web ou mobile, executadas na nuvem em ambientes gerenciados pela AnthropicEndpoints de sessões remotas (/v1/compliance/apps/sessions/remote)cowork_remote

A captura de sessões locais está vinculada à habilitação da Compliance API para sua organização e se aplica enquanto os usuários estão conectados com sua conta Claude Enterprise. Os endpoints de sessões não retornam o seguinte:

  • Sessões do Claude Code autenticadas com uma chave de API do Claude Console, ou executadas por meio de uma plataforma de nuvem de terceiros, como Amazon Bedrock, Google Cloud ou Microsoft Foundry.
  • Claude Code na web. Ele também é executado na nuvem em ambientes gerenciados pela Anthropic, mas não é uma sessão remota; os endpoints de sessões remotas retornam apenas sessões do Cowork.
  • Sessões locais em organizações com prontidão para HIPAA habilitada. Nenhum dado de sessão local é capturado, portanto os endpoints de sessões locais não retornam sessões para essas organizações.
  • Sessões locais para as quais a retenção zero de dados (ZDR) está em vigor. Essas sessões são excluídas dos resultados de listagem, e os endpoints de recuperação e de mensagens retornam 404 para elas.

A Anthropic recomenda a Compliance API para recuperar o conteúdo de sessões do Cowork e do Claude Code. A tabela a seguir compara sessões locais e sessões remotas com as alternativas baseadas em OpenTelemetry, o registro OpenTelemetry do Cowork e o monitoramento do Claude Code.

Sessões locais (nas máquinas dos usuários)Sessões remotas (na nuvem)Registro OpenTelemetry
EntregaPull: consulta e exportação via HTTPSPull: consulta e exportação via HTTPSPush: enviado por streaming ao seu coletor OTLP
ConfiguraçãoFunciona com sua Compliance Access Key existenteFunciona com sua Compliance Access Key existenteO administrador configura um endpoint OTLP e as configurações de captura de conteúdo
InfraestruturaHospedada pela AnthropicHospedada pela AnthropicVocê executa o coletor e o armazenamento
Prefixo de IDclls_cse_N/A
Valores de product_surfacecowork, claude_codecowork_remoteN/A
Retenção6 anos por padrão, ou o período de retenção de conversas personalizado da sua organização quando um período finito estiver definido; mantida pela Anthropic6 anos, mantida pela AnthropicSua infraestrutura, suas políticas
Prompts do usuário e respostas do assistenteSimSimSim, sujeito às configurações de captura de conteúdo
Entradas de ferramentasTruncadas em 10.000 bytes por entrada por padrão; até cerca de 1 MiB sob solicitaçãoTruncadas em 10.000 bytes por entrada por padrão; até cerca de 1 MiB sob solicitaçãoResumos truncados
Conteúdo de resultados de ferramentasCada entrada de texto truncada em 10.000 bytes por padrão; até cerca de 1 MiB sob solicitaçãoCada entrada de texto truncada em 10.000 bytes por padrão; até cerca de 1 MiB sob solicitaçãoMetadados como tamanho e sucesso; o Claude Code também pode capturar conteúdo com uma configuração opcional com limite de tamanho
Conteúdo de arquivosSim, por meio das chamadas de ferramentas da transcrição (somente texto; outros conteúdos aparecem como um placeholder)Sim, por meio das chamadas de ferramentas da transcrição (somente texto; outros conteúdos são omitidos)Caminhos de arquivos; o Claude Code também pode capturar conteúdos com uma configuração opcional com limite de tamanho
Metadados de host e dispositivo (tipo de terminal, caminhos de workspace)NãoNãoSim
Uso de tokens e custoNão; disponível por meio da Claude Enterprise Analytics APINão; disponível por meio da Claude Enterprise Analytics APISim

Sessões nas máquinas dos usuários (sessões locais)

As sessões locais são executadas nas máquinas dos usuários enquanto eles estão conectados com sua conta Claude Enterprise: hoje, Cowork no Claude Desktop, e Claude Code no terminal, no Claude Desktop ou em uma extensão de IDE.

A Compliance API expõe as sessões locais por meio de três endpoints: GET /v1/compliance/apps/sessions/local lista metadados de sessões, GET /v1/compliance/apps/sessions/local/{session_id} recupera os metadados de uma sessão, e GET /v1/compliance/apps/sessions/local/{session_id}/messages retorna a transcrição de uma sessão. Todos os três exigem o escopo read:compliance_user_data e contam apenas para o "rate limit" (limite de taxa) compartilhado da Compliance API; eles não estão sujeitos ao segundo orçamento de requisições que se aplica aos endpoints de sessões remotas. Consulte 429 Too Many Requests. Se as sessões locais não estiverem disponíveis para sua organização pai, todos os três endpoints retornam 404 com a mensagem Local sessions are not available. (consulte Sessão local não encontrada); enquanto as listagens de sessões ou o conteúdo capturado estiverem temporariamente indisponíveis, eles retornam 503 (consulte Sessões locais temporariamente indisponíveis).

Para sessões locais, a Anthropic registra cada conversa no lado do servidor à medida que suas requisições chegam à Claude API; nada é instalado no dispositivo, e nada é coletado além das requisições que o cliente já envia à Claude API. As transcrições de sessões locais mostram o que foi pedido ao Claude e o que ele retornou, não o que aconteceu no dispositivo. A atividade de arquivos e de rede é visível apenas por meio das chamadas de ferramentas e dos resultados de ferramentas na transcrição, portanto a atividade que nunca chega à API (por exemplo, arquivos locais que a sessão nunca enviou) não é capturada.

Em organizações que usam chaves de criptografia gerenciadas pelo cliente, as sessões locais são listadas e recuperáveis normalmente, mas o conteúdo da transcrição não é retornado atualmente; cada mensagem retorna com seu conteúdo marcado como indisponível (consulte Recuperar a transcrição de uma sessão local para saber como essas mensagens são marcadas).

O endpoint de listagem retorna metadados de sessões, sem conteúdo de transcrição, para cada organização vinculada que sua chave pode ler. Diferentemente da lista de sessões remotas, ele não tem filtros de organização ou de usuário: delimite os resultados no tempo com os parâmetros created_at.gte e created_at.lt. Ambos aceitam timestamps RFC 3339 com um deslocamento UTC obrigatório e, quando ambos são fornecidos, created_at.lt deve ser estritamente posterior a created_at.gte, ou a requisição retorna 400 Bad Request. Um terceiro filtro de tempo, updated_at.gte, delimita pela última atividade em vez da primeira: ele retorna sessões cuja última chamada de inferência ocorreu no horário fornecido ou depois dele e se combina com os filtros created_at sem alterar a ordenação ou a paginação. Use-o para consultar periodicamente sessões ativas desde uma passagem anterior, conforme descrito mais adiante nesta seção. Novas sessões e mensagens aparecem nos resultados após um breve atraso de processamento, normalmente em minutos; uma sessão ausente imediatamente após seu início não significa necessariamente que não foi capturada. A requisição a seguir lista as sessões criadas desde uma determinada data.

cURL
curl --fail-with-body -sS -G \
  "https://api.anthropic.com/v1/compliance/apps/sessions/local" \
  --header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
  --data-urlencode "created_at.gte=2026-07-01T00:00:00Z" \
  --data-urlencode "limit=100"
Response
{
  "data": [
    {
      "type": "compliance_local_session",
      "id": "clls_01HxKpLmNoPqRsTuVwXyZaBc",
      "organization_uuid": "9a1e0000-0000-0000-0000-000000000000",
      "workspace_id": "wrkspc_01SvYKoWVRVHoEbwESNvzYdR",
      "user": {
        "id": "user_01GpKpLmNoPqRsTuVwXyZaBc",
        "email_address": "engineer@example.com"
      },
      "product_surface": "cowork",
      "created_at": "2026-07-09T14:02:11Z",
      "updated_at": "2026-07-09T14:02:38Z"
    },
    {
      "type": "compliance_local_session",
      "id": "clls_01HyLqMnOpQrStUvWxYzAbCd",
      "organization_uuid": "9a1e0000-0000-0000-0000-000000000000",
      "workspace_id": null,
      "user": {
        "id": "user_01HqRsTuVwXyZaBcDeFgHiJk",
        "email_address": null
      },
      "product_surface": "claude_code",
      "created_at": "2026-07-08T09:15:43Z",
      "updated_at": "2026-07-08T09:52:10Z"
    }
  ],
  "next_page": "page_AAEfQx7mPdLkq9Rt2VwHbZk"
}

Os resultados são ordenados em ordem cronológica inversa (mais recentes primeiro) por created_at, com empates resolvidos em uma ordem fixa no lado do servidor, e limitados a limit resultados por resposta (padrão 100, máximo 500). O endpoint pagina apenas para frente com tokens page e next_page (consulte Paginar resultados): passe o valor next_page da resposta de volta como o parâmetro de consulta page na próxima requisição, e pare quando next_page for null. A resposta não tem campo has_more. Conclua um percurso de listagem dentro de 24 horas após iniciá-lo; um cursor de listagem mais antigo ainda é aceito, mas é reavaliado em relação ao limite de retenção atual, portanto sessões cuja atividade retida mais antiga está prestes a sair do período de retenção podem ser ignoradas.

Em cada objeto de sessão, user.id está sempre definido e sobrevive à exclusão da conta; user.email_address é null quando a conta do usuário foi excluída ou o usuário não é mais membro de uma organização que sua chave pode ler. workspace_id é null quando a sessão não estava associada a um workspace. Uma sessão local corresponde a um ID de sessão do cliente: iniciar uma nova conversa no cliente, ou limpar seu contexto, inicia um novo registro de sessão. Trate os valores de id como strings opacas; o formato pode mudar sem aviso prévio.

As sessões locais têm um updated_at, mas não um status: uma sessão local não tem status de ciclo de vida no lado do servidor, e sua visibilidade é regida pela retenção. Uma sessão local é capturada como a série de chamadas à Claude API (chamadas de inferência) que o cliente faz durante a sessão, e a retenção se aplica a cada chamada capturada individualmente. created_at é o timestamp da chamada retida mais antiga da sessão e updated_at, o da chamada mais recente, ambos em UTC. À medida que chamadas mais antigas ultrapassam o período de retenção, created_at avança de acordo e, quando todas as chamadas de uma sessão tiverem expirado, a sessão não é mais retornada; updated_at acompanha a chamada mais recente e não é afetado até então. Como created_at pode mudar entre execuções, deduplique por id ao percorrer novamente a lista ao longo do tempo. Para manter as transcrições atualizadas à medida que as sessões ganham mensagens, consulte periodicamente com o filtro updated_at.gte, sobrepondo janelas consecutivas. No endpoint de listagem, updated_at é um limite inferior: para uma sessão ainda ativa em um limite de página ou de janela created_at.lt, ele pode momentaneamente ficar atrás da verdadeira última atividade da sessão, e uma nova chamada só se torna consultável após o breve atraso de processamento mencionado anteriormente. Por causa desse atraso, defina o updated_at.gte de cada execução alguns minutos antes do horário de início da sua execução anterior, e não exatamente no horário da execução anterior. Um limite definido exatamente no horário anterior descarta silenciosa e permanentemente uma sessão cuja chamada final ainda estava sendo indexada naquele momento, porque, uma vez que o limite avança além dessa chamada, nenhuma execução posterior a retorna. Deduplique as sessões retornadas por id, busque novamente suas transcrições e deduplique as mensagens por id. Recuperar uma sessão, ou suas mensagens, sempre reflete exatamente a última chamada retida, portanto uma passagem periódica de reconciliação sobre uma janela mais antiga é a alternativa mais cautelosa a ampliar a sobreposição.

A lista é construída a partir de metadados de atividade de sessões, portanto pode incluir sessões cujo conteúdo de transcrição não foi capturado, por exemplo sessões executadas antes do início da captura para sua organização (tão antigas quanto seu período de retenção permitir); a transcrição de uma sessão assim retorna cada mensagem com seu conteúdo marcado como indisponível (consulte Recuperar a transcrição de uma sessão local).

O conteúdo capturado de sessões locais é armazenado por 6 anos a partir da captura por padrão. Se a organização que executou a sessão tiver definido um período de retenção de conversas personalizado finito em claude.ai > Configurações da organização > Dados e privacidade, esse período se aplica em vez do padrão, seja ele mais curto ou mais longo; quando a organização tem mais de um período de retenção personalizado configurado, o mais curto se aplica. Uma alteração nessa configuração entra em vigor de duas maneiras diferentes: os endpoints param de retornar atividade mais antiga que o período atual da organização assim que a configuração muda, enquanto cada mensagem capturada é armazenada pelo período que estava em vigor quando foi capturada, portanto aumentar o período posteriormente não restaura conteúdo que já expirou.

Para buscar diretamente os metadados de uma sessão, passe seu ID para GET /v1/compliance/apps/sessions/local/{session_id}. A resposta é o mesmo objeto de sessão que o endpoint de listagem retorna, sem envelope e sem conteúdo de transcrição. Um ID de sessão malformado retorna 400 Bad Request. Um único 404 Not Found cobre quatro casos que a resposta não distingue: a sessão não está em uma organização que sua chave pode ler (incluindo sessões sob outra organização pai), ela não existe, a retenção zero de dados está em vigor para ela, ou todas as chamadas nela ultrapassaram a retenção.

product_surface (string ou null) identifica o produto que criou a sessão: cowork para sessões do Cowork executadas na máquina do usuário no Claude Desktop, e claude_code para sessões do Claude Code. Novos valores aparecem à medida que a cobertura se expande.

Recuperar a transcrição de uma sessão local

O endpoint de mensagens retorna a transcrição da sessão, reconstruída a partir das chamadas capturadas à Claude API: prompts do usuário, texto do assistente, chamadas de ferramentas e as partes de texto dos resultados de ferramentas, todos retornados como foram enviados, exceto pelo truncamento por tamanho. Nada mascara URLs, credenciais ou dados pessoais nesse conteúdo, portanto trate as transcrições como sensíveis. A transcrição omite ou substitui o seguinte:

  • Blocos de pensamento nunca são incluídos.
  • O "system prompt" (prompt do sistema) da requisição nunca é retornado. Uma mensagem marcadora com o texto [system prompt content not shown] o substitui (normalmente uma vez por sessão; uma sessão sem conteúdo capturado não tem marcador).
  • Definições de ferramentas e configuração de servidores MCP não fazem parte da transcrição.
  • Imagens, PDFs e outros blocos binários ou estruturados não são retornados. Cada um aparece como um bloco text com o texto [<block type> content not shown] (por exemplo, [image content not shown]) com truncated definido como true. Itens não textuais dentro de um resultado de ferramenta são substituídos por uma entrada [N non-text item(s) not shown], e o truncated do bloco de resultado de ferramenta é true.
  • Metadados de citação em blocos text são omitidos, e o bloco afetado tem truncated definido como true.

Arquivos de instruções de projeto, como CLAUDE.md, aparecem como conteúdo comum com role de usuário. O conteúdo de skills aparece quando o cliente o envia como conteúdo de mensagem e não é distinguido de outros textos do usuário. Para um resumo da cobertura, consulte as Perguntas frequentes da Compliance API; para uma tabela comparando sessões locais com sessões remotas e o registro OpenTelemetry, consulte a introdução desta página.

cURL
session_id="clls_01HxKpLmNoPqRsTuVwXyZaBc"

curl --fail-with-body -sS \
  "https://api.anthropic.com/v1/compliance/apps/sessions/local/$session_id/messages" \
  --header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY"
Response
{
  "session": {
    "type": "compliance_local_session",
    "id": "clls_01HxKpLmNoPqRsTuVwXyZaBc",
    "organization_uuid": "9a1e0000-0000-0000-0000-000000000000",
    "workspace_id": "wrkspc_01SvYKoWVRVHoEbwESNvzYdR",
    "user": {
      "id": "user_01GpKpLmNoPqRsTuVwXyZaBc",
      "email_address": null
    },
    "product_surface": "cowork",
    "created_at": "2026-07-09T14:02:11Z",
    "updated_at": "2026-07-09T14:02:38Z"
  },
  "data": [
    {
      "type": "compliance_local_session_message",
      "id": "clsm_01J4KpLmNoPqRsTuVwXyZaBa",
      "role": "user",
      "model": null,
      "created_at": "2026-07-09T14:02:11Z",
      "provenance": {
        "type": "synthetic_marker"
      },
      "content": [
        {
          "type": "text",
          "text": "[system prompt content not shown]",
          "truncated": true
        }
      ]
    },
    {
      "type": "compliance_local_session_message",
      "id": "clsm_01J4KpLmNoPqRsTuVwXyZaBc",
      "role": "user",
      "model": null,
      "created_at": "2026-07-09T14:02:11Z",
      "provenance": null,
      "content": [
        {
          "type": "text",
          "text": "Fix the failing test in tests/auth_test.py",
          "truncated": false
        }
      ]
    },
    {
      "type": "compliance_local_session_message",
      "id": "clsm_01J4KpLmNoPqRsTuVwXyZaBd",
      "role": "assistant",
      "model": "claude-opus-5",
      "created_at": "2026-07-09T14:02:11Z",
      "provenance": null,
      "content": [
        {
          "type": "text",
          "text": "I'll read the test file first.",
          "truncated": false
        },
        {
          "type": "tool_use",
          "id": "toolu_01AbCdEfGhIjKlMnOpQrSt",
          "name": "Read",
          "input": "{\"file_path\":\"tests/auth_test.py\"}",
          "truncated": false
        }
      ]
    },
    {
      "type": "compliance_local_session_message",
      "id": "clsm_01J4KpLmNoPqRsTuVwXyZaBe",
      "role": "user",
      "model": null,
      "created_at": "2026-07-09T14:02:38Z",
      "provenance": null,
      "content": [
        {
          "type": "tool_result",
          "tool_use_id": "toolu_01AbCdEfGhIjKlMnOpQrSt",
          "name": "Read",
          "is_error": false,
          "content": [
            {
              "type": "text",
              "text": "def test_login_expiry():\n    ..."
            }
          ],
          "truncated": false
        }
      ]
    },
    {
      "type": "compliance_local_session_message",
      "id": "clsm_01J4KpLmNoPqRsTuVwXyZaBf",
      "role": "assistant",
      "model": "claude-opus-5",
      "created_at": "2026-07-09T14:02:38Z",
      "provenance": null,
      "content": [
        {
          "type": "text",
          "text": "The test was asserting on a stale expiry timestamp. I've updated it.",
          "truncated": false
        }
      ]
    }
  ],
  "next_page": null
}

A resposta incorpora um envelope session ao lado do array data paginado. O primeiro registro neste exemplo é o marcador que substitui o prompt do sistema da requisição; seu provenance é descrito mais adiante nesta seção. Neste endpoint, user.email_address é sempre null: o endpoint de mensagens não resolve endereços de e-mail, portanto um null aqui não significa que a conta do usuário foi excluída. Para atribuir uma sessão a um endereço de e-mail, cruze user.id com o endpoint de listagem ou com o endpoint de recuperação (GET /v1/compliance/apps/sessions/local/{session_id}).

As mensagens são retornadas da mais antiga para a mais recente por padrão; passe order=desc para inverter. A paginação usa o mesmo esquema page/next_page do endpoint de listagem, com um limit padrão de 100 e máximo de 1.000. Uma página pode terminar antes quando a resposta atinge seu limite de tamanho, portanto uma página com menos de limit mensagens não significa que você chegou ao fim; continue paginando até que next_page seja null. Os cursores de página estão vinculados à sessão e à ordem de classificação sob as quais foram emitidos, e os cursores de um percurso expiram 24 horas após sua primeira página: um cursor expirado retorna 400 Bad Request informando que você deve reiniciar sem o parâmetro page, e o percurso reiniciado reflete o limite de retenção atual. Um cursor emitido para uma sessão ou order diferente também retorna 400, como cursor inválido.

Cada mensagem tem um role (user ou assistant) e um array content de blocos text, tool_use e tool_result. Ela também tem um model: em um turno do assistente capturado da Claude API, este é o modelo que atendeu o turno, e é null em mensagens do usuário e em qualquer mensagem do assistente cujo provenance esteja definido, já que o histórico afirmado pelo cliente e os marcadores sintéticos não foram produzidos por um modelo e o modelo que atendeu é desconhecido para conteúdo indisponível. Um bloco text tem text e truncated. Um bloco tool_use tem id, name, input e truncated, onde input é uma string codificada em JSON em vez de um objeto. Um bloco tool_result tem tool_use_id, name, is_error, um array content de entradas text e truncated. Chamadas e resultados de ferramentas MCP, e a maioria das chamadas e resultados de ferramentas de servidor, são normalizados nesses mesmos formatos tool_use e tool_result; qualquer outro tipo de bloco aparece como um placeholder [<block type> content not shown]. O id de uma mensagem é estável enquanto o turno estiver retido. Toda mensagem reconstruída a partir da mesma chamada de inferência tem o timestamp dessa chamada, portanto mensagens consecutivas frequentemente compartilham um valor de created_at; preserve a ordem retornada em vez de reordenar por timestamp.

Cada mensagem também tem um campo provenance que descreve como seu conteúdo foi capturado. provenance é null para conteúdo verificado capturado pela Claude API, que é o caso comum. Caso contrário, é um objeto cujo type marca a exceção:

  • content_unavailable significa que o conteúdo não pode ser retornado. O array content está vazio, e provenance.reason informa o motivo. not_captured significa que nenhum conteúdo está disponível para o turno; isso não prova que nenhum registro foi armazenado, porque conteúdo retido por uma política de acesso no lado do armazenamento é relatado com o mesmo motivo (por exemplo, em organizações que usam chaves de criptografia gerenciadas pelo cliente), e turnos individuais dentro de uma sessão de outra forma capturada podem estar indisponíveis por outros motivos de tratamento de dados e ter o mesmo motivo. client_aborted significa que o cliente fechou a conexão ou cancelou a requisição antes de a resposta ser concluída, portanto a resposta do turno não foi capturada; qualquer saída parcial já enviada por streaming ao cliente não é incluída, e esse motivo se aplica apenas a turnos com role de assistente. cmek_key_revoked é reservado para conteúdo criptografado sob a chave gerenciada pelo cliente da sua organização quando essa chave está indisponível (por exemplo, revogada); ele não é retornado atualmente, portanto trate-o para compatibilidade futura. retention_elapsed significa que o conteúdo ultrapassou a retenção. oversize significa que uma única mensagem excedeu o limite de tamanho por mensagem; a mensagem ainda é retornada, com um array content vazio.
  • client_asserted marca mensagens do assistente que o cliente forneceu como histórico de conversa e que não puderam ser correspondidas a uma resposta capturada; sua autoria não é verificada.
  • synthetic_marker marca registros gerados pelo próprio endpoint, como o marcador que substitui o prompt do sistema. Quando o cliente reescreve ou compacta seu histórico de conversa no meio da sessão (por exemplo, após a compactação de contexto), a transcrição insere uma mensagem marcadora nesse ponto e continua com o novo conteúdo que o cliente enviou; quando sua organização tem um período de retenção finito, o próprio histórico reescrito é retido (um segundo marcador indica isso) e apenas o último turno do usuário e o que vem depois são mostrados.

Mensagens marcadoras e afirmadas pelo cliente começam com um bloco text explicativo entre colchetes sinalizado com truncated: true, por exemplo [system prompt content not shown]. Trate esses registros como presentes, mas indisponíveis ou não verificados, em vez de ausentes, e tolere tipos e motivos de provenance não reconhecidos.

Dois parâmetros limitam quantos bytes de cada bloco de ferramenta são retornados: tool_use_input_max_bytes e tool_result_max_bytes, ambos com padrão de 10.000 bytes. Passe -1 para o máximo do servidor (cerca de 1 MiB por string); 0 retorna 400 Bad Request, e valores acima do máximo são limitados a ele. Uma string cortada por qualquer um dos limites é cortada em um limite de caractere e recebe um sufixo em banda (por exemplo, …[truncated; pass tool_result_max_bytes=-1 for the server max]), e seu bloco tem "truncated": true. Um input de tool_use truncado, portanto, não é mais JSON válido, então analise entradas de ferramentas apenas de blocos não truncados (ou aumente o limite e busque novamente). Blocos do tipo text são sempre limitados ao mesmo máximo do servidor de cerca de 1 MiB; nenhum parâmetro o aumenta, e um bloco text no limite também tem "truncated": true.

O conteúdo da transcrição respeita o período de retenção descrito em Sessões nas máquinas dos usuários. Quando o início de uma sessão ultrapassou esse período, a transcrição começa com um único placeholder content_unavailable com reason igual a retention_elapsed, e as mensagens retidas vêm em seguida. Quando todas as chamadas de uma sessão expiraram, o endpoint de mensagens retorna 404 Not Found, assim como faz para sessões em organizações que sua chave não pode ler, sessões que não existem e sessões para as quais a retenção zero de dados está em vigor. Um ID de sessão malformado retorna 400 Bad Request.

Sessões na nuvem (sessões remotas)

As sessões do Cowork iniciadas no claude.ai web ou mobile são executadas na nuvem em ambientes gerenciados pela Anthropic. A Compliance API expõe essas sessões remotas por meio de dois endpoints: GET /v1/compliance/apps/sessions/remote lista metadados de sessões, e GET /v1/compliance/apps/sessions/remote/{session_id}/messages retorna a transcrição de uma sessão. Ambos exigem o escopo read:compliance_user_data, e ambos contam para o limite de taxa compartilhado da Compliance API mais um segundo orçamento de requisições específico desses endpoints; consulte 429 Too Many Requests.

O endpoint de listagem tem como padrão o escopo de toda a organização: omita organization_ids[] para incluir todas as organizações claude.ai que sua chave pode ler, ou passe até 500 valores para restringir o escopo. Para restringir a lista a usuários específicos, passe de 1 a 10 valores user_ids[] (obtenha os IDs em Listar usuários da organização); o filtro corresponde ao usuário proprietário da sessão, portanto sessões de propriedade de agentes são excluídas sempre que user_ids[] estiver definido. Delimite os resultados no tempo com parâmetros de intervalo de created_at (gte, gt, lt, lte, no formato RFC 3339). Não há filtro de updated_at. A requisição a seguir lista as sessões criadas desde uma determinada data.

cURL
curl --fail-with-body -sS -G \
  "https://api.anthropic.com/v1/compliance/apps/sessions/remote" \
  --header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
  --data-urlencode "created_at.gte=2026-06-01T00:00:00Z" \
  --data-urlencode "limit=100"
Response
{
  "data": [
    {
      "id": "cse_01WpQrStUvXyZaBcDeFgHjK6",
      "organization_uuid": "91012d09-e48b-438e-a489-1bebfd8fa6f9",
      "user": {
        "id": "user_01XyDMpzjS89pFZXqSFUBDr6",
        "email_address": "user@example.com"
      },
      "agent_id": null,
      "started_by_user": null,
      "status": "active",
      "created_at": "2026-07-01T17:04:05Z",
      "updated_at": "2026-07-01T18:00:41Z",
      "product_surface": "cowork_remote",
      "claude_project_id": "claude_proj_01KGp4eZNug9ri4kE35RSppq"
    },
    {
      "id": "cse_01TkNpRsUvWxYzAbCdEfGhJ4",
      "organization_uuid": "91012d09-e48b-438e-a489-1bebfd8fa6f9",
      "user": null,
      "agent_id": "cagt_01MnPqRsTuVwXyZaBcDeFgH8",
      "started_by_user": {
        "id": "user_01XyDMpzjS89pFZXqSFUBDr6",
        "email_address": "user@example.com"
      },
      "status": "archived",
      "created_at": "2026-06-28T09:15:22Z",
      "updated_at": "2026-06-28T09:47:10Z",
      "product_surface": "cowork_remote",
      "claude_project_id": null
    }
  ],
  "next_page": "page_AAEfMk93cXpYdGxrZXk"
}

Os resultados são ordenados em ordem cronológica inversa (mais recentes primeiro) por created_at e limitados a limit resultados por resposta (padrão 100, máximo 500). O endpoint pagina com tokens page e next_page (consulte Paginar resultados): passe o valor next_page da resposta de volta como o parâmetro de consulta page na próxima requisição, e pare quando next_page for null.

Uma sessão é de propriedade de um usuário ou de um agente, nunca de ambos. Para sessões de propriedade de usuários, user tem o ID e o endereço de e-mail do proprietário (email_address é null quando o usuário não é mais membro de uma organização que sua chave pode ler) e agent_id é null. Para sessões de propriedade de agentes (por exemplo, tarefas agendadas), user é null, agent_id tem o ID do agente (prefixo cagt_), e started_by_user identifica o humano que iniciou a execução, por exemplo ao iniciar uma tarefa agendada; em sessões de propriedade de usuários, started_by_user é null.

claude_project_id é o ID do projeto do claude.ai ao qual a sessão pertence (prefixo claude_proj_), ou null quando a sessão não está em um projeto.

status é um de pending, active, paused, archived ou failed. Uma sessão está pending enquanto está sendo provisionada; uma sessão pending ainda não tem transcrição, e o endpoint de mensagens retorna 404 para ela até que o provisionamento seja concluído. Sessões que foram excluídas nunca são retornadas.

product_surface (string ou null) identifica o produto que criou a sessão. O endpoint atualmente retorna apenas sessões com product_surface igual a cowork_remote: sessões do Cowork iniciadas no claude.ai web ou mobile.

Recuperar a transcrição de uma sessão remota

O endpoint de mensagens retorna a transcrição da sessão: prompts do usuário, respostas do assistente e chamadas e resultados de ferramentas. Blocos de pensamento e imagens não são incluídos. Para um resumo da cobertura, consulte as Perguntas frequentes da Compliance API; para uma tabela comparando sessões remotas com sessões locais e o registro OpenTelemetry do Cowork, consulte a introdução desta página.

cURL
session_id="cse_01WpQrStUvXyZaBcDeFgHjK6"

curl --fail-with-body -sS \
  "https://api.anthropic.com/v1/compliance/apps/sessions/remote/$session_id/messages" \
  --header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY"
Response
{
  "session": {
    "id": "cse_01WpQrStUvXyZaBcDeFgHjK6",
    "organization_uuid": "91012d09-e48b-438e-a489-1bebfd8fa6f9",
    "user": {
      "id": "user_01XyDMpzjS89pFZXqSFUBDr6",
      "email_address": null
    },
    "agent_id": null,
    "started_by_user": null,
    "status": "active",
    "created_at": "2026-07-01T17:04:05Z",
    "updated_at": "2026-07-01T18:00:41Z",
    "product_surface": "cowork_remote",
    "claude_project_id": null
  },
  "data": [
    {
      "id": "csev_01HjKmNpQrStUvWxYzAbCdE2",
      "role": "user",
      "created_at": "2026-07-01T17:04:05Z",
      "content": [
        {
          "type": "text",
          "text": "Summarize the customer feedback in the attached spreadsheet.",
          "truncated": false
        }
      ],
      "sent_by_user_id": null,
      "content_unavailable": false
    },
    {
      "id": "csev_01BcDeFgHjKmNpQrStUvWxY4",
      "role": "assistant",
      "created_at": "2026-07-01T17:04:06Z",
      "content": [
        {
          "type": "text",
          "text": "I'll start by reading the spreadsheet...",
          "truncated": false
        }
      ],
      "sent_by_user_id": null,
      "content_unavailable": false
    }
  ],
  "next_page": null
}

A resposta incorpora um envelope session ao lado do array data paginado. Neste endpoint, o envelope sempre tem user.email_address, started_by_user e claude_project_id definidos como null; obtenha esses valores no endpoint de listagem.

As mensagens são retornadas da mais antiga para a mais recente por padrão; passe order=desc para inverter. A paginação usa o mesmo esquema page/next_page do endpoint de listagem, com um limit padrão de 100 e máximo de 1.000. Uma página pode terminar antes quando a resposta atinge seu limite de tamanho, portanto uma página com menos de limit mensagens não significa que você chegou ao fim; continue paginando até que next_page seja null.

Cada mensagem tem um role (user ou assistant) e um array content de blocos text, tool_use e tool_result. Os valores de created_at das mensagens são timestamps de commit: mensagens consecutivas podem compartilhar um timestamp ou se inverter ligeiramente, portanto preserve a ordem retornada em vez de reordenar por created_at. Em sessões de propriedade de agentes, sent_by_user_id registra o usuário que enviou uma determinada mensagem de usuário quando ela é atribuível; caso contrário, é null, inclusive em todas as mensagens do assistente. Quando o conteúdo de uma mensagem não pode ser retornado de forma alguma (por exemplo, excede os limites de tamanho), a mensagem tem content_unavailable definido como true.

Dois parâmetros limitam quantos bytes de cada bloco de ferramenta são retornados: tool_use_input_max_bytes e tool_result_max_bytes, ambos com padrão de 10.000 bytes. Passe -1 para o máximo do servidor (cerca de 1 MiB por string); 0 retorna 400 Bad Request. Um bloco cortado por qualquer um dos limites tem "truncated": true, e uma entrada de tool_use truncada não é mais JSON válido, então analise entradas de ferramentas apenas de blocos não truncados (ou aumente o limite e busque novamente).

O endpoint de mensagens retorna 404 Not Found para sessões pending, sessões que não existem ou foram excluídas, e sessões em organizações que sua chave não pode ler.

Retenção e exclusão

Os endpoints de sessões são somente leitura; sessões locais e remotas não podem ser excluídas por meio da Compliance API. As transcrições de sessões locais são retidas por 6 anos por padrão, ou pelo período de retenção de conversas personalizado da sua organização quando um período finito estiver definido, conforme descrito em Sessões nas máquinas dos usuários. As transcrições de sessões remotas são retidas por 6 anos. Para saber como esses períodos se relacionam com os outros acordos de retenção da Anthropic, consulte API e retenção de dados.

Próximos passos

Acesse o conteúdo de chats do claude.ai, anexos de arquivos e projetos com a mesma Compliance Access Key.

Um resumo campo a campo do que as transcrições de sessões incluem e outras perguntas comuns.

Payloads de erro literais e a correção para cada um.

Caminhos de endpoints, parâmetros e esquemas de resposta da Compliance API.

Was this page helpful?