Recuperar transcripciones de sesiones
Lista las sesiones que tus usuarios ejecutan en las aplicaciones y agentes de Claude, como Claude Cowork y Claude Code, y recupera sus transcripciones a través de la Compliance API.
Los endpoints de esta página exponen a los revisores de cumplimiento las transcripciones de las sesiones que tus usuarios ejecutan en las aplicaciones y agentes de Claude (hoy: Cowork, Claude Code, Claude Science y Claude for Microsoft 365) desde tus organizaciones de Claude Enterprise. Cada sesión es una única conversación con Claude; su transcripción es la secuencia de prompts del usuario, respuestas del asistente, y llamadas a herramientas y resultados de esa conversación. Los endpoints admiten exportaciones de "eDiscovery" (descubrimiento electrónico) y la aplicación de "data loss prevention" (prevención de pérdida de datos), o DLP.
La Compliance API agrupa las sesiones en dos familias de endpoints según dónde se ejecutan: endpoints de sesiones locales para las sesiones en las máquinas de los usuarios, y endpoints de sesiones remotas para las sesiones que se ejecutan en la nube en entornos administrados por Anthropic. Ambas familias son de solo lectura, y ninguna está disponible para las claves de Admin API (sk-ant-admin01-...): las llamadas autenticadas con una clave de Admin API devuelven 403 Forbidden.
La siguiente tabla relaciona cada producto, y dónde se ejecuta, con la familia de endpoints que devuelve sus sesiones y el valor de product_surface que las identifica en las respuestas. Los productos se agregan a esta tabla a medida que se amplía la cobertura.
| Producto y dónde se ejecuta | Familia de endpoints | product_surface |
|---|---|---|
| Cowork en Claude Desktop, ejecutándose en la máquina del usuario | Endpoints de sesiones locales (/v1/compliance/apps/sessions/local) | cowork |
| Claude Code en la terminal, en Claude Desktop o en una extensión de IDE, ejecutándose en la máquina del usuario | Endpoints de sesiones locales | claude_code |
| Aplicación de escritorio Claude Science, ejecutándose en la máquina del usuario | Endpoints de sesiones locales | claude_science |
| Claude for Microsoft 365 (los complementos de Claude para Excel, PowerPoint, Word y Outlook), ejecutándose en las aplicaciones de escritorio o web de Microsoft 365 | Endpoints de sesiones locales | office_agents/excel, office_agents/powerpoint, office_agents/word u office_agents/outlook (office_agents cuando la aplicación no está identificada) |
| Sesiones de Cowork iniciadas en claude.ai web o móvil, ejecutándose en la nube en entornos administrados por Anthropic | Endpoints de sesiones remotas (/v1/compliance/apps/sessions/remote) | cowork_remote |
La captura de sesiones locales está vinculada a que la Compliance API esté habilitada para tu organización y se aplica mientras los usuarios tienen la sesión iniciada con su cuenta de Claude Enterprise. Los endpoints de sesiones no devuelven lo siguiente:
- Sesiones de Claude Code autenticadas con una clave de API de Claude Console, o ejecutadas a través de una plataforma en la nube de terceros como Amazon Bedrock, Google Cloud o Microsoft Foundry.
- Claude Code en la web. También se ejecuta en la nube en entornos administrados por Anthropic, pero no es una sesión remota; los endpoints de sesiones remotas devuelven únicamente sesiones de Cowork.
- Sesiones locales en organizaciones con preparación para HIPAA habilitada. No se captura ningún dato de sesiones locales, por lo que los endpoints de sesiones locales no devuelven sesiones para esas organizaciones.
- Sesiones locales para las que está vigente la retención cero de datos (ZDR). Estas sesiones se excluyen de los resultados de la lista, y los endpoints de recuperación y de mensajes devuelven 404 para ellas.
Anthropic recomienda la Compliance API para recuperar el contenido de las sesiones. La siguiente tabla compara las sesiones locales y las sesiones remotas con las alternativas basadas en OpenTelemetry disponibles para Cowork y Claude Code, el registro OpenTelemetry de Cowork y el monitoreo de Claude Code.
| Sesiones locales (en las máquinas de los usuarios) | Sesiones remotas (en la nube) | Registro OpenTelemetry | |
|---|---|---|---|
| Entrega | Pull: consulta y exportación por HTTPS | Pull: consulta y exportación por HTTPS | Push: enviado por streaming a tu recolector OTLP |
| Configuración | Funciona con tu Compliance Access Key existente | Funciona con tu Compliance Access Key existente | Un administrador configura un endpoint OTLP y los ajustes de captura de contenido |
| Infraestructura | Alojada por Anthropic | Alojada por Anthropic | Tú ejecutas el recolector y el almacenamiento |
| Prefijo de ID | clls_ | cse_ | N/A |
Valores de product_surface | cowork, claude_code, claude_science y valores que comienzan con office_agents | cowork_remote | N/A |
| Retención | 6 años de forma predeterminada, o el período de retención de conversaciones personalizado de tu organización cuando se establece uno finito; conservado por Anthropic | 6 años, conservado por Anthropic | Tu infraestructura, tus políticas |
| Prompts del usuario y respuestas del asistente | Sí | Sí | Sí, sujeto a los ajustes de captura de contenido |
| Entradas de herramientas | Truncadas a 10,000 bytes por entrada de forma predeterminada; hasta aproximadamente 1 MiB a solicitud | Truncadas a 10,000 bytes por entrada de forma predeterminada; hasta aproximadamente 1 MiB a solicitud | Resúmenes truncados |
| Contenido de resultados de herramientas | Cada entrada de texto truncada a 10,000 bytes de forma predeterminada; hasta aproximadamente 1 MiB a solicitud | Cada entrada de texto truncada a 10,000 bytes de forma predeterminada; hasta aproximadamente 1 MiB a solicitud | Metadatos como tamaño y éxito; Claude Code también puede capturar contenido con un ajuste opcional con límite de tamaño |
| Contenido de archivos | Sí, a través de las llamadas a herramientas de la transcripción (solo texto; el resto del contenido aparece como un marcador de posición) | Sí, a través de las llamadas a herramientas de la transcripción (solo texto; el resto del contenido se omite) | Rutas de archivos; Claude Code también puede capturar contenido con un ajuste opcional con límite de tamaño |
| Metadatos de host y dispositivo (tipo de terminal, rutas de espacio de trabajo) | No | No | Sí |
| Uso de tokens y costo | No; disponible a través de la Claude Enterprise Analytics API | No; disponible a través de la Claude Enterprise Analytics API | Sí |
Sesiones en las máquinas de los usuarios (sesiones locales)
Las sesiones locales se ejecutan en las máquinas de los usuarios mientras tienen la sesión iniciada con su cuenta de Claude Enterprise: hoy, Cowork en Claude Desktop, Claude Code (en la terminal, en Claude Desktop o en una extensión de IDE), la aplicación de escritorio Claude Science, y Claude for Microsoft 365 en Excel, PowerPoint, Word y Outlook.
La Compliance API expone las sesiones locales a través de tres endpoints: GET /v1/compliance/apps/sessions/local lista los metadatos de las sesiones, GET /v1/compliance/apps/sessions/local/{session_id} recupera los metadatos de una sesión, y GET /v1/compliance/apps/sessions/local/{session_id}/messages devuelve la transcripción de una sesión. Los tres requieren el alcance read:compliance_user_data y cuentan únicamente contra el "rate limit" (límite de velocidad) compartido de la Compliance API; no están sujetos al segundo presupuesto de solicitudes que se aplica a los endpoints de sesiones remotas. Consulta 429 Too Many Requests. Si las sesiones locales no están disponibles para tu organización principal, los tres endpoints devuelven 404 con el mensaje Local sessions are not available. (consulta Sesión local no encontrada); mientras los listados de sesiones o el contenido capturado no estén disponibles temporalmente, devuelven 503 (consulta Sesiones locales temporalmente no disponibles).
Para las sesiones locales, Anthropic registra cada conversación del lado del servidor a medida que sus solicitudes llegan a la Claude API; no se instala nada en el dispositivo, y no se recopila nada más allá de las solicitudes que el cliente ya envía a la Claude API. Las transcripciones de sesiones locales muestran lo que se le pidió a Claude que hiciera y lo que devolvió, no lo que ocurrió en el dispositivo. La actividad de archivos y de red es visible únicamente a través de las llamadas a herramientas y los resultados de herramientas en la transcripción, por lo que la actividad que nunca llega a la API (por ejemplo, archivos locales que la sesión nunca envió) no se captura.
En las organizaciones que usan claves de cifrado administradas por el cliente, las transcripciones de sesiones locales se cifran con tu clave y se devuelven como de costumbre. Mientras tu clave no pueda usarse (por ejemplo, porque la deshabilitaste o revocaste, o porque no se puede acceder a ella), el endpoint de mensajes devuelve 503 Service Unavailable para las páginas afectadas en lugar del contenido de la transcripción. Esos mensajes nunca se reportan como not_captured (consulta Recuperar la transcripción de una sesión local). Listar sesiones y recuperar metadatos de sesiones no se ven afectados.
El endpoint de lista devuelve metadatos de sesiones, sin contenido de transcripción, para cada organización vinculada que tu clave puede leer. A diferencia de la lista de sesiones remotas, no tiene filtros de organización ni de usuario: delimita los resultados en el tiempo con los parámetros created_at.gte y created_at.lt. Ambos aceptan marcas de tiempo RFC 3339 con un desplazamiento UTC obligatorio, y cuando se proporcionan ambos, created_at.lt debe ser estrictamente posterior a created_at.gte o la solicitud devuelve 400 Bad Request. Un tercer filtro de tiempo, updated_at.gte, delimita por la última actividad en lugar de la primera: devuelve las sesiones cuya última llamada de inferencia es igual o posterior al momento dado y se combina con los filtros created_at sin cambiar el orden ni la paginación. Úsalo para consultar periódicamente las sesiones activas desde una pasada anterior, como se describe más adelante en esta sección. Las sesiones y mensajes nuevos aparecen en los resultados tras un breve retraso de procesamiento, normalmente en cuestión de minutos; una sesión que falta inmediatamente después de iniciarse no necesariamente está sin capturar. La siguiente solicitud lista las sesiones creadas desde una fecha dada.
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"{
"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"
}Los resultados se ordenan en orden cronológico inverso (los más recientes primero) por created_at, con los empates resueltos en un orden fijo del lado del servidor, y se limitan a limit resultados por respuesta (predeterminado 100, máximo 500). El endpoint pagina únicamente hacia adelante con tokens page y next_page (consulta Paginar resultados): pasa el valor next_page de la respuesta como el parámetro de consulta page en la siguiente solicitud, y detente cuando next_page sea null. La respuesta no tiene campo has_more. Completa un recorrido de la lista dentro de las 24 horas posteriores a iniciarlo; un cursor de lista más antiguo todavía se acepta, pero se reevalúa contra el límite de retención actual, por lo que pueden omitirse las sesiones cuya actividad retenida más antigua está a punto de superar el período de retención.
En cada objeto de sesión, user.id siempre está establecido y sobrevive a la eliminación de la cuenta; user.email_address es null cuando la cuenta del usuario ha sido eliminada o el usuario ya no es miembro de una organización que tu clave puede leer. workspace_id es null cuando la sesión no estaba asociada a un espacio de trabajo. Una sesión local corresponde a un ID de sesión de cliente: iniciar una nueva conversación en el cliente, o limpiar su contexto, comienza un nuevo registro de sesión. Para Claude Science, la lista también puede incluir sesiones separadas para el trabajo en segundo plano propio de la aplicación (por ejemplo, nombrar la conversación; en versiones más recientes de la aplicación también sus pistas de revisor y delegación), y en versiones más antiguas de la aplicación parte de ese trabajo en segundo plano aparece como mensajes adicionales dentro de la propia transcripción de la conversación. Una conversación de Claude Science que continúa a través de algunas actualizaciones de la aplicación aparece como dos sesiones. Estos comportamientos son esperados. Trata los valores de id como cadenas opacas; el formato puede cambiar sin previo aviso.
Para Claude for Microsoft 365, eliminar una conversación en el complemento ocurre únicamente en el cliente, por lo que no se refleja en la API: las sesiones locales no tienen campo deleted_at, y la sesión permanece listada hasta que la retención la elimina.
Las sesiones locales tienen un updated_at pero no un status: una sesión local no tiene un estado de ciclo de vida del lado del servidor, y su visibilidad se rige en cambio por la retención. Una sesión local se captura como la serie de llamadas a la Claude API (llamadas de inferencia) que el cliente realiza durante la sesión, y la retención se aplica a cada llamada capturada individualmente. created_at es la marca de tiempo de la llamada retenida más antigua de la sesión y updated_at la marca de tiempo de la última, ambas en UTC. A medida que las llamadas más antiguas superan el período de retención, created_at avanza en consecuencia, y una vez que todas las llamadas de una sesión han expirado, la sesión ya no se devuelve; updated_at sigue la llamada más reciente y no se ve afectado hasta entonces. Dado que created_at puede cambiar entre ejecuciones, deduplica por id cuando vuelvas a recorrer la lista a lo largo del tiempo. Para mantener las transcripciones actualizadas a medida que las sesiones ganan mensajes, consulta periódicamente con el filtro updated_at.gte, superponiendo ventanas consecutivas. En el endpoint de lista, updated_at es un límite inferior: para una sesión todavía activa en el límite de una página o de una ventana created_at.lt, puede quedar momentáneamente por detrás de la verdadera última actividad de la sesión, y una nueva llamada solo se vuelve consultable después del breve retraso de procesamiento mencionado anteriormente. Debido a ese retraso, establece el updated_at.gte de cada ejecución unos minutos antes de la hora de inicio de tu ejecución anterior, no exactamente en la hora de la ejecución anterior. Un límite establecido en la hora anterior exacta descarta de forma silenciosa y permanente una sesión cuya llamada final todavía se estaba indexando en ese momento, porque una vez que el límite avanza más allá de esa llamada, ninguna ejecución posterior la devuelve. Deduplica las sesiones devueltas por id, vuelve a obtener sus transcripciones y deduplica los mensajes por id. Recuperar una sesión, o sus mensajes, siempre refleja la última llamada retenida exacta, por lo que una pasada de conciliación periódica sobre una ventana más antigua es una alternativa más exhaustiva que ampliar la superposición.
La lista se construye a partir de metadatos de actividad de las sesiones, por lo que puede incluir sesiones cuyo contenido de transcripción no fue capturado, por ejemplo sesiones que se ejecutaron antes de que comenzara la captura para tu organización (tan atrás como lo permita tu período de retención); la transcripción de una sesión así devuelve cada mensaje con su contenido marcado como no disponible (consulta Recuperar la transcripción de una sesión local).
El contenido capturado de las sesiones locales se almacena durante 6 años desde la captura de forma predeterminada. Si la organización que ejecutó la sesión ha establecido un período de retención de conversaciones personalizado finito en claude.ai > Organization settings > Data and privacy, se aplica ese período en su lugar, ya sea más corto o más largo que el predeterminado; cuando la organización tiene más de un período de retención personalizado configurado, se aplica el más corto. Un cambio en esa configuración surte efecto de dos maneras diferentes: los endpoints dejan de devolver actividad más antigua que el período actual de la organización tan pronto como cambia la configuración, mientras que cada mensaje capturado se almacena durante el período que estaba vigente cuando fue capturado, por lo que alargar el período más tarde no restaura el contenido que ya ha expirado.
Para obtener directamente los metadatos de una sesión, pasa su ID a GET /v1/compliance/apps/sessions/local/{session_id}. La respuesta es el mismo objeto de sesión que devuelve el endpoint de lista, sin envoltura y sin contenido de transcripción. Un ID de sesión mal formado devuelve 400 Bad Request. Un único 404 Not Found cubre cuatro casos que la respuesta no distingue: la sesión no está en una organización que tu clave puede leer (incluidas las sesiones bajo otra organización principal), no existe, la retención cero de datos está vigente para ella, o todas sus llamadas han superado la retención.
product_surface (cadena o null) identifica el producto que creó la sesión: cowork (Cowork en Claude Desktop en la máquina del usuario), claude_code (Claude Code), claude_science (Claude Science), o uno de office_agents/excel, office_agents/powerpoint, office_agents/word y office_agents/outlook (Claude for Microsoft 365, por aplicación; office_agents solo cuando la aplicación no está identificada). Aparecen nuevos valores a medida que se amplía la cobertura.
Recuperar la transcripción de una sesión local
El endpoint de mensajes devuelve la transcripción de la sesión, reconstruida a partir de las llamadas capturadas a la Claude API: prompts del usuario, texto del asistente, llamadas a herramientas y las porciones de texto de los resultados de herramientas, todo devuelto tal como se envió salvo por el truncamiento por tamaño. Nada enmascara URLs, credenciales ni datos personales en ese contenido, así que trata las transcripciones como sensibles. La transcripción omite o reemplaza lo siguiente:
- Los bloques de pensamiento nunca se incluyen.
- La "system prompt" (indicación del sistema) de la solicitud nunca se devuelve. Un mensaje marcador que dice
[system prompt content not shown]la sustituye (normalmente una vez por sesión; una sesión sin contenido capturado no tiene marcador). - Las definiciones de herramientas y la configuración de servidores MCP no forman parte de la transcripción.
- Las imágenes, PDFs y otros bloques binarios o estructurados no se devuelven. Cada uno aparece como un bloque
textque dice[<block type> content not shown](por ejemplo,[image content not shown]) contruncatedestablecido entrue. Los elementos que no son texto dentro de un resultado de herramienta, como los resultados de búsqueda web o la salida de la herramienta de ejecución de código, se reemplazan por una entrada[N non-text item(s) not shown], y eltruncateddel bloque de resultado de herramienta estrue. La llamada a herramienta correspondiente, con la consulta de búsqueda o el código en suinput, sí se devuelve. - Los metadatos de citas en los bloques
text, como las citas de fuentes en una respuesta que se basa en resultados de búsqueda web, se omiten. El texto en sí se devuelve, y el bloque tienetruncatedestablecido entrue.
Los archivos de instrucciones de proyecto como CLAUDE.md aparecen como contenido ordinario con rol de usuario. El contenido de skills aparece cuando el cliente lo envía como contenido de mensaje y no se distingue de otro texto del usuario. Para un resumen de la cobertura, consulta las Preguntas frecuentes de la Compliance API; para una tabla que compara las sesiones locales con las sesiones remotas y el registro OpenTelemetry, consulta la introducción de esta página.
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"{
"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
}La respuesta incluye una envoltura session junto con el arreglo paginado data. El primer registro de este ejemplo es el marcador que sustituye a la indicación del sistema de la solicitud; su provenance se describe más adelante en esta sección. En este endpoint user.email_address siempre es null: el endpoint de mensajes no resuelve direcciones de correo electrónico, por lo que un null aquí no significa que la cuenta del usuario haya sido eliminada. Para atribuir una sesión a una dirección de correo electrónico, cruza user.id con el endpoint de lista o el endpoint de recuperación (GET /v1/compliance/apps/sessions/local/{session_id}).
Los mensajes se devuelven del más antiguo al más reciente de forma predeterminada; pasa order=desc para invertir el orden. La paginación usa el mismo esquema page/next_page que el endpoint de lista, con un limit predeterminado de 100 y un máximo de 1,000. Una página puede terminar antes cuando la respuesta alcanza su límite de tamaño, por lo que una página con menos de limit mensajes no significa que hayas llegado al final; sigue paginando hasta que next_page sea null. Los cursores de página están vinculados a la sesión y al orden bajo los que se emitieron, y los cursores de un recorrido expiran 24 horas después de su primera página: un cursor expirado devuelve 400 Bad Request indicándote que reinicies sin el parámetro page, y el recorrido reiniciado refleja el límite de retención actual. Un cursor emitido para una sesión u order diferente también devuelve 400, como cursor inválido.
Cada mensaje tiene un role (user o assistant) y un arreglo content de bloques text, tool_use y tool_result. También tiene un model: en un turno del asistente capturado desde la Claude API, este es el modelo que atendió el turno, y es null en los mensajes del usuario y en cualquier mensaje del asistente cuyo provenance esté establecido, porque el historial afirmado por el cliente y los marcadores sintéticos no fueron producidos por un modelo y el modelo que atendió es desconocido para el contenido no disponible. Un bloque text tiene text y truncated. Un bloque tool_use tiene id, name, input y truncated, donde input es una cadena codificada en JSON en lugar de un objeto. Un bloque tool_result tiene tool_use_id, name, is_error, un arreglo content de entradas text, y truncated. Las llamadas y resultados de herramientas MCP, y la mayoría de las llamadas y resultados de herramientas de servidor, se normalizan en estas mismas formas tool_use y tool_result; cualquier otro tipo de bloque aparece como un marcador de posición [<block type> content not shown]. El id de un mensaje es estable mientras el turno esté retenido. Cada mensaje reconstruido a partir de la misma llamada de inferencia tiene la marca de tiempo de esa llamada, por lo que los mensajes consecutivos a menudo comparten un valor de created_at; conserva el orden devuelto en lugar de reordenar por marca de tiempo.
Cada mensaje también tiene un campo provenance que describe cómo se capturó su contenido. provenance es null para el contenido verificado capturado por la Claude API, que es el caso común. De lo contrario, es un objeto cuyo type marca la excepción:
content_unavailablesignifica que el contenido no puede devolverse. El arreglocontentestá vacío, yprovenance.reasonindica por qué.not_capturedsignifica que no hay contenido disponible para el turno. No prueba que no se haya almacenado ningún registro: el contenido que las políticas de manejo de datos de Anthropic retienen de la Compliance API se reporta con la misma razón, al igual que los turnos individuales dentro de una sesión por lo demás capturada que no están disponibles por tales razones. Una clave administrada por el cliente inutilizable es la única excepción y devuelve 503 Service Unavailable en su lugar.client_abortedsignifica que el cliente cerró la conexión o canceló la solicitud antes de que la respuesta se completara, por lo que la respuesta del turno no se capturó; cualquier salida parcial ya enviada por streaming al cliente no se incluye, y esta razón se aplica únicamente a los turnos con rol de asistente.cmek_key_revokedestá reservado para el contenido cifrado con la clave administrada por el cliente de tu organización cuando esa clave no está disponible (por ejemplo, revocada). Actualmente no se devuelve, porque una clave inutilizable produce un 503 en su lugar, pero manéjalo para compatibilidad con versiones futuras.retention_elapsedsignifica que el contenido superó la retención.oversizesignifica que un único mensaje excedió el límite de tamaño por mensaje; el mensaje se devuelve de todos modos, con un arreglocontentvacío.client_assertedmarca los mensajes del asistente que el cliente proporcionó como historial de conversación y que no pudieron asociarse a una respuesta capturada; su autoría no está verificada.synthetic_markermarca los registros generados por el propio endpoint, como el marcador que sustituye a la indicación del sistema. Cuando el cliente reescribe o compacta su historial de conversación a mitad de sesión (por ejemplo, después de la compactación de contexto), la transcripción inserta un mensaje marcador en ese punto y continúa con el nuevo contenido que envió el cliente; cuando tu organización tiene un período de retención finito, el historial reescrito en sí se retiene (un segundo marcador lo indica) y solo se muestran el último turno del usuario y lo que sigue.
Los mensajes marcadores y afirmados por el cliente comienzan con un bloque text explicativo entre corchetes marcado con truncated: true, por ejemplo [system prompt content not shown]. Trata estos registros como presentes pero no disponibles o no verificados en lugar de faltantes, y tolera los tipos y razones de provenance no reconocidos.
Dos parámetros limitan cuántos bytes de cada bloque de herramienta se devuelven: tool_use_input_max_bytes y tool_result_max_bytes, ambos con un valor predeterminado de 10,000 bytes. Pasa -1 para el máximo del servidor (aproximadamente 1 MiB por cadena); 0 devuelve 400 Bad Request, y los valores por encima del máximo se ajustan a él. Una cadena cortada por cualquiera de los límites se corta en un límite de carácter y se le añade un sufijo en banda (por ejemplo, …[truncated; pass tool_result_max_bytes=-1 for the server max]), y su bloque tiene "truncated": true. Un input de tool_use truncado, por lo tanto, ya no es JSON válido, así que analiza las entradas de herramientas únicamente a partir de bloques no truncados (o aumenta el límite y vuelve a obtenerlos). Los bloques de tipo text siempre están limitados al mismo máximo del servidor de aproximadamente 1 MiB; ningún parámetro lo aumenta, y un bloque text en el límite también tiene "truncated": true.
El contenido de la transcripción respeta el período de retención descrito en Sesiones en las máquinas de los usuarios. Cuando el inicio de una sesión lo ha superado, la transcripción comienza con un único marcador de posición content_unavailable con reason de retention_elapsed, y le siguen los mensajes retenidos. Cuando todas las llamadas de una sesión han expirado, el endpoint de mensajes devuelve 404 Not Found, como lo hace para las sesiones en organizaciones que tu clave no puede leer, las sesiones que no existen y las sesiones para las que está vigente la retención cero de datos. Un ID de sesión mal formado devuelve 400 Bad Request.
Sesiones en la nube (sesiones remotas)
Las sesiones de Cowork iniciadas en claude.ai web o móvil se ejecutan en la nube en entornos administrados por Anthropic. La Compliance API expone estas sesiones remotas a través de dos endpoints: GET /v1/compliance/apps/sessions/remote lista los metadatos de las sesiones, y GET /v1/compliance/apps/sessions/remote/{session_id}/messages devuelve la transcripción de una sesión. Ambos requieren el alcance read:compliance_user_data, y ambos cuentan contra el límite de velocidad compartido de la Compliance API más un segundo presupuesto de solicitudes específico de estos endpoints; consulta 429 Too Many Requests.
El endpoint de lista tiene de forma predeterminada un alcance de toda la organización: omite organization_ids[] para incluir todas las organizaciones de claude.ai que tu clave puede leer, o pasa hasta 500 valores para reducir el alcance. Para limitar la lista a usuarios específicos en su lugar, pasa de 1 a 10 valores de user_ids[] (obtén los IDs de Listar usuarios de la organización); el filtro coincide con el usuario propietario de la sesión, por lo que las sesiones propiedad de agentes se excluyen siempre que user_ids[] esté establecido. Delimita los resultados en el tiempo con los parámetros de rango created_at (gte, gt, lt, lte, en formato RFC 3339). No hay filtro updated_at. La siguiente solicitud lista las sesiones creadas desde una fecha dada.
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"{
"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"
}Los resultados se ordenan en orden cronológico inverso (los más recientes primero) por created_at y se limitan a limit resultados por respuesta (predeterminado 100, máximo 500). El endpoint pagina con tokens page y next_page (consulta Paginar resultados): pasa el valor next_page de la respuesta como el parámetro de consulta page en la siguiente solicitud, y detente cuando next_page sea null.
Una sesión es propiedad de un usuario o de un agente, nunca de ambos. Para las sesiones propiedad de usuarios, user tiene el ID y la dirección de correo electrónico del propietario (email_address es null cuando el usuario ya no es miembro de una organización que tu clave puede leer) y agent_id es null. Para las sesiones propiedad de agentes (por ejemplo, tareas programadas), user es null, agent_id tiene el ID del agente (prefijo cagt_), y started_by_user identifica al humano que inició la ejecución, por ejemplo al iniciar una tarea programada; en las sesiones propiedad de usuarios, started_by_user es null.
claude_project_id es el ID del proyecto de claude.ai al que pertenece la sesión (prefijo claude_proj_), o null cuando la sesión no está en un proyecto.
status es uno de pending, active, paused, archived o failed. Una sesión está pending mientras se está aprovisionando; una sesión pending aún no tiene transcripción, y el endpoint de mensajes devuelve 404 para ella hasta que se completa el aprovisionamiento. Las sesiones que han sido eliminadas nunca se devuelven.
product_surface (cadena o null) identifica el producto que creó la sesión. El endpoint actualmente devuelve únicamente sesiones con product_surface de cowork_remote: sesiones de Cowork iniciadas en claude.ai web o móvil.
Recuperar la transcripción de una sesión remota
El endpoint de mensajes devuelve la transcripción de la sesión: prompts del usuario, respuestas del asistente, y llamadas a herramientas y resultados. Los bloques de pensamiento y las imágenes no se incluyen. Para un resumen de la cobertura, consulta las Preguntas frecuentes de la Compliance API; para una tabla que compara las sesiones remotas con las sesiones locales y el registro OpenTelemetry de Cowork, consulta la introducción de esta página.
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"{
"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
}La respuesta incluye una envoltura session junto con el arreglo paginado data. En este endpoint la envoltura siempre tiene user.email_address, started_by_user y claude_project_id establecidos en null; obtén esos valores del endpoint de lista en su lugar.
Los mensajes se devuelven del más antiguo al más reciente de forma predeterminada; pasa order=desc para invertir el orden. La paginación usa el mismo esquema page/next_page que el endpoint de lista, con un limit predeterminado de 100 y un máximo de 1,000. Una página puede terminar antes cuando la respuesta alcanza su límite de tamaño, por lo que una página con menos de limit mensajes no significa que hayas llegado al final; sigue paginando hasta que next_page sea null.
Cada mensaje tiene un role (user o assistant) y un arreglo content de bloques text, tool_use y tool_result. Los valores created_at de los mensajes son marcas de tiempo de confirmación: los mensajes consecutivos pueden compartir una marca de tiempo o invertirse ligeramente, así que conserva el orden devuelto en lugar de reordenar por created_at. En las sesiones propiedad de agentes, sent_by_user_id registra el usuario que envió un mensaje de usuario dado cuando es atribuible; es null en caso contrario, incluso en todos los mensajes del asistente. Cuando el contenido de un mensaje no puede devolverse en absoluto (por ejemplo, excede los límites de tamaño), el mensaje tiene content_unavailable establecido en true.
Dos parámetros limitan cuántos bytes de cada bloque de herramienta se devuelven: tool_use_input_max_bytes y tool_result_max_bytes, ambos con un valor predeterminado de 10,000 bytes. Pasa -1 para el máximo del servidor (aproximadamente 1 MiB por cadena); 0 devuelve 400 Bad Request. Un bloque cortado por cualquiera de los límites tiene "truncated": true, y una entrada de tool_use truncada ya no es JSON válido, así que analiza las entradas de herramientas únicamente a partir de bloques no truncados (o aumenta el límite y vuelve a obtenerlos).
El endpoint de mensajes devuelve 404 Not Found para las sesiones pending, las sesiones que no existen o han sido eliminadas, y las sesiones en organizaciones que tu clave no puede leer.
Retención y eliminación
Los endpoints de sesiones son de solo lectura; las sesiones locales y remotas no se pueden eliminar a través de la Compliance API. Las transcripciones de sesiones locales se retienen durante 6 años de forma predeterminada, o durante el período de retención de conversaciones personalizado de tu organización cuando se establece uno finito, como se describe en Sesiones en las máquinas de los usuarios. Las transcripciones de sesiones remotas se retienen durante 6 años. Para saber cómo estos períodos se relacionan con los demás acuerdos de retención de Anthropic, consulta API y retención de datos.
Próximos pasos
Accede al contenido de chats de claude.ai, archivos adjuntos y proyectos con la misma Compliance Access Key.
Un resumen campo por campo de lo que incluyen las transcripciones de sesiones, y otras preguntas comunes.
Cargas de error textuales y la solución para cada una.
Rutas de endpoints, parámetros y esquemas de respuesta para la Compliance API.
Was this page helpful?