Los endpoints de esta página recuperan y eliminan contenido de claude.ai y están disponibles solo para organizaciones de Claude Enterprise, que tienen acceso de autoservicio a la Compliance API. Consulta Configurar la Compliance API.
Alcance requerido: read:compliance_user_data en la Compliance Access Key. Los endpoints de eliminación también requieren delete:compliance_user_data.
Requisito previo: Ninguno para listar chats en toda la organización. Para filtrar la lista de chats a usuarios específicos, necesitas los IDs de usuario de Listar usuarios de la organización. Los demás endpoints de esta página reciben IDs de recursos directamente.
Los endpoints de esta página exponen el contenido de chats de claude.ai, las cargas de archivos, los proyectos y los adjuntos de proyectos a los revisores de cumplimiento. Admiten exportaciones de "eDiscovery" (descubrimiento electrónico), la aplicación de "data loss prevention" (prevención de pérdida de datos), o DLP, y las respuestas a eliminaciones de cuentas. El contenido se conserva durante el tiempo que permita la política de retención de tu organización. Los chats que un usuario ha eliminado de forma reversible (soft-delete) en claude.ai siguen siendo visibles a través de la Compliance API con deleted_at poblado; los chats que han sido eliminados de forma permanente (hard-delete, a través de la propia Compliance API, o después de que expire la ventana de retención de la organización) no son recuperables.
Ambos alcances se otorgan solo en Compliance Access Keys (sk-ant-api01-...) creadas en claude.ai; consulta Configurar la Compliance API para aprovisionar una. El alcance read:compliance_user_data cubre la recuperación; delete:compliance_user_data se requiere solo para los endpoints de eliminación. Los endpoints de chats, archivos, proyectos y adjuntos no están disponibles para las claves de Admin API (sk-ant-admin01-...); las llamadas autenticadas con una clave de Admin API devuelven 403 Forbidden.
Los endpoints de esta página paginan de dos maneras; consulta Paginar resultados para la referencia completa. Cada sección indica qué esquema aplica.
Usa Listar chats para recorrer las páginas de metadatos de chats, y luego Obtener mensajes de chat para obtener el contenido completo de los mensajes de un chat.
El endpoint de lista de chats tiene por defecto un alcance de toda la organización: omite user_ids[] para incluir todos los chats bajo tu organización principal. Agrega order_by=updated_at para ordenar por la hora de la última actualización. Esta combinación es la forma recomendada de exportar chats y mantener una exportación actualizada, porque un solo bucle paginado recoge tanto los chats nuevos como los modificados de todos los usuarios sin tener que enumerar primero a los usuarios. La siguiente solicitud lista los chats actualizados desde una fecha determinada.
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"{
"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": "[email protected]"
}
}
],
"has_more": true,
"first_id": "eyJrIjogInVwZGF0ZWRfYXQiLCAidCI6ICIyMDI2LTA0LTEwVDA5OjEwOjExKzAwOjAwIiwgImlkIjogImFiY2RlZjAxLS4uLiJ9",
"last_id": "eyJrIjogInVwZGF0ZWRfYXQiLCAidCI6ICIyMDI2LTA0LTEwVDA5OjEwOjExKzAwOjAwIiwgImlkIjogImFiY2RlZjAxLS4uLiJ9"
}Los resultados se ordenan de forma ascendente por el campo order_by, los más antiguos primero, y los empates se resuelven por id. La paginación usa los campos de cursor estándar first_id/last_id/has_more descritos en Paginar resultados. Para avanzar hacia los chats más recientes, pasa el last_id de la respuesta como after_id en la siguiente solicitud.
Ese recorrido hacia adelante también es la forma de mantener una exportación actualizada entre ejecuciones: persiste el last_id de la página final y reanuda desde él como after_id en la siguiente ejecución. Como la lista está ordenada por updated_at, un chat que cambia después de tu cursor guardado reaparece por delante de él, de modo que cada ejecución incremental devuelve tanto chats completamente nuevos como chats más antiguos que han sido modificados desde entonces. Procesa los resultados de forma idempotente, usando el id del chat como clave, para manejar esas reapariciones.
Algunas restricciones aplican a estas consultas de toda la organización. Los cursores son opacos y están vinculados a la clave de ordenamiento, por lo que un after_id emitido bajo un valor de order_by se rechaza con un error 400 bajo el otro. Los límites de los filtros de tiempo también deben coincidir con la clave de ordenamiento: empareja los límites updated_at.* con order_by=updated_at, y los límites created_at.* con el valor predeterminado order_by=created_at. La paginación hacia atrás con before_id no es compatible, y el filtro project_ids[] no está disponible. Consulta Listar chats para la referencia completa de filtros.
Para limitar la lista a usuarios específicos en su lugar (por ejemplo, una retención legal sobre custodios designados), pasa de 1 a 10 valores de user_ids[]. Obtén los IDs de Listar usuarios de la organización. Las consultas filtradas por usuario siempre se ordenan por created_at (pasar order_by=updated_at devuelve un error 400) y admiten tanto after_id como before_id. El filtrado por project_ids[] solo está disponible en esta forma filtrada por usuario.
curl --fail-with-body -sS -G \
"https://api.anthropic.com/v1/compliance/apps/chats" \
--header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
--data-urlencode "user_ids[]=user_01XyDMpzjS89pFZXqSFUBDr6" \
--data-urlencode "created_at.gte=2025-06-01T00:00:00Z" \
--data-urlencode "limit=100"La respuesta de la lista contiene solo metadatos de los chats. Para obtener el contenido real del chat, los archivos adjuntos y los artifacts en línea (documentos estructurados que Claude genera dentro de un chat), continúa con el endpoint de mensajes para cada ID de chat:
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"El endpoint de mensajes devuelve los metadatos del chat más un arreglo chat_messages ordenado por created_at. Cuando se omite limit, el conjunto completo de mensajes se devuelve en una sola respuesta; pasa limit, after_id o before_id para paginar chats muy largos. El endpoint también acepta límites de rango created_at.* y updated_at.* (gt, gte, lt, lte) y un parámetro order (asc o desc). Consulta Obtener mensajes de chat para la lista completa de parámetros. Para los mensajes del usuario, created_at es el momento en que se envió el mensaje; para los mensajes del asistente, es el momento en que Claude terminó de generar el mensaje. Cada mensaje contiene su contenido de texto y, cuando están presentes, los archivos cargados (normalmente en los mensajes del usuario), los archivos generados por herramientas y los artifacts que el asistente produjo o actualizó (normalmente en los mensajes del asistente):
{
"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": "[email protected]"
},
"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"
}
]
},
{
"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"
}
],
"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 y artifacts pueden ser cada uno null en un mensaje determinado. files son cargas binarias (PDFs, imágenes, hojas de cálculo) que el usuario adjuntó al mensaje. generated_files son archivos binarios que el asistente creó durante la conversación mediante el uso de herramientas (por ejemplo, PDFs, hojas de cálculo o presentaciones de diapositivas). artifacts son documentos versionados (por ejemplo, código o markdown) que el asistente generó o actualizó en su respuesta; un artifact puede revisarse a lo largo de varios turnos del asistente en el mismo chat, y cada revisión aparece como un nuevo version_id bajo el mismo id de artifact. Pasa el id de cada entrada (o el version_id para los artifacts) al endpoint de contenido correspondiente en Recuperar archivos y artifacts para descargarlo.
Los archivos y artifacts se descargan por ID, no se listan de forma independiente. Los IDs provienen del endpoint de mensajes de chat en Recuperar chats y mensajes (los arreglos files, generated_files y artifacts de cada mensaje) o, para las cargas a nivel de proyecto, del endpoint de adjuntos de proyecto.
Elige el endpoint que coincida con tu tipo de ID y los datos que necesitas. El mismo endpoint de contenido de archivos sirve tanto para archivos de chat como para archivos de proyecto.
| Tienes | Quieres | Usa este endpoint |
|---|---|---|
ID claude_file_* | El contenido binario del archivo | Descargar contenido de archivo |
ID claude_file_* | Solo los metadatos del archivo | Obtener metadatos de archivo |
ID claude_gen_file_* | El contenido binario de un archivo generado por herramientas | Descargar un archivo generado por Claude |
ID claude_gen_file_* | Solo los metadatos de un archivo generado por herramientas | Obtener metadatos de archivo generado |
ID claude_artifact_version_* | El texto de una versión de artifact | Descargar contenido de artifact |
ID claude_artifact_version_* | Solo los metadatos de la versión del artifact | Obtener metadatos de artifact |
ID claude_proj_doc_* | El contenido en texto plano de un documento de proyecto | Obtener contenido de documento de proyecto |
ID claude_proj_doc_* | Solo los metadatos de un documento de proyecto | Obtener metadatos de documento de proyecto |
El endpoint de contenido de archivos transmite la carga original como una respuesta binaria fragmentada (chunked) con estos encabezados:
Content-Disposition: attachment; filename*=utf-8''<percent-encoded filename> contiene el nombre del archivo original cargado en la forma extendida de RFC 5987. La forma extendida se usa para todos los nombres de archivo, no solo los que no son ASCII.Content-Type contiene el tipo MIME de la carga.Content-MD5 contiene el resumen MD5 del archivo, codificado en base64 según lo especificado en RFC 1864.Transfer-Encoding: chunked siempre está establecido.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"Las banderas -OJ le indican a curl que guarde la respuesta con el nombre de archivo de Content-Disposition, que es el nombre de archivo original que el usuario cargó.
El endpoint de contenido de artifacts devuelve el cuerpo de texto de una versión de artifact. Pasa el version_id de una de las entradas del arreglo artifacts de un mensaje del asistente, no el id estable del artifact. Cada nueva versión de un artifact tiene su propio version_id, y la Compliance API sirve los bytes exactos de esa versión.
Los proyectos agrupan chats relacionados junto con instrucciones personalizadas, contenido de base de conocimiento y archivos adjuntos o documentos de texto. La Compliance API expone los metadatos del proyecto, los detalles del proyecto y la lista de adjuntos que pertenecen a un proyecto.
Los resultados de proyectos se ordenan por fecha de creación de forma ascendente. Los resultados de adjuntos se ordenan por created_at de forma ascendente, y los empates se resuelven por id. Las respuestas de la lista de proyectos y de la lista de adjuntos paginan con un token de página opaco next_page en lugar de los cursores first_id/last_id que usan los chats y el Activity Feed. Pasa el token de vuelta como el parámetro de consulta page en la siguiente solicitud.
Un adjunto de proyecto tiene una de dos formas distintas, identificadas por el discriminador type en cada entrada:
Las entradas con type de project_file son cargas binarias (PDFs, imágenes, hojas de cálculo) cuyos IDs comienzan con claude_file_; descárgalas con Descargar contenido de archivo. Las entradas con type de project_doc son documentos de texto plano (siempre text/plain) cuyos IDs comienzan con claude_proj_doc_; obtenlas con Obtener contenido de documento de proyecto.
Un consumidor que recorre la lista de adjuntos debe bifurcar según type y llamar al endpoint de contenido correspondiente para cada entrada. La siguiente solicitud lista una página de adjuntos; pagina pasando next_page de vuelta como el parámetro page hasta que has_more sea false.
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"{
"data": [
{
"id": "claude_file_01UaT9wBcDfGhJkLmNpQrSv7",
"created_at": "2026-04-10T08:09:10Z",
"filename": "dashboard_mockup_v1.pdf",
"mime_type": "application/pdf",
"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
}Toda eliminación exitosa es permanente e inmediata. No hay ventana de recuperación.
La Compliance API expone endpoints de eliminación permanente (hard-delete) para chats, archivos, documentos de proyecto y proyectos completos. Un chat eliminado de forma permanente no se puede restaurar, y deja de aparecer en las respuestas de lista después (mientras que un chat eliminado de forma reversible desde claude.ai sigue apareciendo con deleted_at poblado).
Los cuatro endpoints requieren el alcance delete:compliance_user_data, que se otorga por separado del alcance de lectura cuando se crea la Compliance Access Key.
La siguiente solicitud elimina un chat. El mismo patrón aplica a los demás endpoints de eliminación; solo cambia la URL.
# ADVERTENCIA: Esta operación elimina PERMANENTEMENTE el chat, todos sus mensajes
# y cualquier archivo adjunto. La eliminación es inmediata y no se puede deshacer.
# Requiere el scope `delete:compliance_user_data`, que se otorga por separado
# de `read:compliance_user_data` al crear la Compliance Access Key.
# Asegúrate de tener autorización explícita antes de ejecutar esto.
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"{
"id": "claude_chat_01H5CWunD7RpVJ5bHa8RCkja",
"type": "claude_chat_deleted"
}Cada eliminación exitosa devuelve un pequeño sobre de confirmación con un id y un discriminador type. El endpoint de chat devuelve claude_chat_deleted; verifica el campo type antes de considerar la eliminación como confirmada. Consulta el esquema de respuesta en la página de referencia de la API de cada endpoint de eliminación para conocer el valor exacto de type que devuelven los demás endpoints.
Un proyecto no se puede eliminar mientras haya chats vinculados a él. La API devuelve 409 con este cuerpo:
{
"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 resolverlo, lista los chats del proyecto con GET /v1/compliance/apps/chats?user_ids[]={user_id}&project_ids[]={project_id} (el filtro project_ids[] requiere al menos un valor de user_ids[]; enumera los IDs a través de Listar usuarios de la organización), elimina cada uno con DELETE /v1/compliance/apps/chats/{claude_chat_id} (o sácalo del proyecto desde claude.ai), y luego reintenta la eliminación del proyecto.
El esquema completo de solicitud y respuesta para cada endpoint de chat, archivo, proyecto y artifact.
Enumera las personas y equipos asociados con los chats y proyectos de esta página.
Was this page helpful?