Recuperar y eliminar chats, archivos y proyectos
Accede al contenido de chats, archivos adjuntos y proyectos de organizaciones de claude.ai a través de la Compliance API.
Los endpoints de esta página exponen el contenido de chats, las cargas de archivos, los proyectos y los adjuntos de proyectos de Claude Enterprise 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 respuestas a solicitudes de eliminación de cuentas. El contenido de chats, archivos y proyectos se conserva durante el tiempo que permita la política de retención de tu organización. Cuando un usuario elimina un chat en claude.ai, el contenido de sus mensajes, los archivos adjuntos, los archivos generados por herramientas y los artefactos se eliminan junto con él. La Compliance API sigue listando el chat, con deleted_at completado y un name vacío, y devuelve sus mensajes sin su contenido. Los chats que han sido eliminados de forma permanente (a través de la propia Compliance API, o después de que expire la ventana de retención de la organización) no se pueden recuperar.
Ambos alcances se otorgan únicamente 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 únicamente 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.
Recuperar chats y mensajes
Usa Listar chats para recorrer los metadatos de los chats y luego Obtener mensajes de chat para obtener el contenido completo de los mensajes de un chat.
Estos endpoints devuelven los chats de la experiencia unificada de Claude como cualquier otro chat: un chat que continúa en una sesión en la nube se devuelve como un solo chat. El trabajo que Claude realiza allí aparece en el content de cada mensaje como bloques tool_use (el name y el input de la herramienta) y bloques tool_result (su salida, asociada mediante tool_use_id). La cobertura de estos chats está en beta.
El endpoint de lista de chats tiene como alcance predeterminado toda la organización: omite user_ids[] para incluir todos los chats de 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 al día, porque un único bucle paginado recoge los chats nuevos, los chats con mensajes nuevos y los chats eliminados en claude.ai 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" \
--header "anthropic-version: 2023-06-01" \
--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-5",
"organization_uuid": "91012d09-e48b-438e-a489-1bebfd8fa6f9",
"project_id": "claude_proj_01KGp4eZNug9ri4kE35RSppq",
"user": {
"id": "user_01XyDMpzjS89pFZXqSFUBDr6",
"email_address": "user@example.com"
}
}
],
"has_more": true,
"first_id": "eyJrIjogInVwZGF0ZWRfYXQiLCAidCI6ICIyMDI2LTA0LTEwVDA5OjEwOjExKzAwOjAwIiwgImlkIjogImFiY2RlZjAxLS4uLiJ9",
"last_id": "eyJrIjogInVwZGF0ZWRfYXQiLCAidCI6ICIyMDI2LTA0LTEwVDA5OjEwOjExKzAwOjAwIiwgImlkIjogImFiY2RlZjAxLS4uLiJ9"
}Los resultados se ordenan de forma ascendente según el campo order_by, del más antiguo al más reciente, 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 chats más recientes, pasa el last_id de la respuesta como after_id en la siguiente solicitud.
Ese avance también es la forma de mantener una exportación al día entre ejecuciones: guarda el last_id de la última página y reanuda desde él como after_id en la siguiente ejecución. Como la lista está ordenada por updated_at, un chat vuelve a aparecer por delante de tu cursor guardado cuando recibe un mensaje nuevo, se mueve a un proyecto o se saca de él, o se elimina en claude.ai. Por lo tanto, cada ejecución incremental devuelve tanto chats completamente nuevos como chats más antiguos que han cambiado desde entonces de alguna de esas maneras. No se garantiza que otras ediciones, como un cambio de nombre, hagan que un chat vuelva a aparecer. Procesa los resultados de forma idempotente, usando el id del chat como clave, para manejar esas reapariciones. Un chat que vuelve con deleted_at completado ya no tiene contenido que obtener, así que trátalo como eliminado en lugar de actualizado.
Se aplican algunas restricciones a estas consultas de toda la organización. Los cursores son opacos y están vinculados a la clave de ordenación, por lo que un after_id emitido con un valor de order_by se rechaza con un error 400 si se usa con el otro. Los límites del filtro de tiempo también deben coincidir con la clave de ordenación: combina los límites updated_at.* con order_by=updated_at, y los límites created_at.* con el valor predeterminado order_by=created_at. No se admite la paginación hacia atrás con before_id, y el filtro project_ids[] no está disponible. Consulta Listar chats para ver la referencia completa de filtros.
Para limitar la lista a usuarios específicos en su lugar, por ejemplo para un "legal hold" (retención legal) sobre custodios determinados, pasa entre 1 y 10 valores de user_ids[]. Obtén los ID en 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. Combinar user_ids[] con cualquier límite updated_at.* está obsoleto y se rechazará con un error 400 después del 2026-09-22; para mantener actualizado un conjunto de custodios según la hora de actualización, ejecuta el recorrido de toda la organización con order_by=updated_at sin user_ids[] y selecciona los chats de los custodios entre sus resultados, y reserva el listado filtrado por usuario para las exportaciones ordenadas por created_at.
curl --fail-with-body -sS -G \
"https://api.anthropic.com/v1/compliance/apps/chats" \
--header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
--header "anthropic-version: 2023-06-01" \
--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 solo contiene metadatos de los chats. Para obtener el contenido real del chat, los archivos adjuntos y los artefactos en línea (documentos estructurados que Claude genera dentro de un chat), llama después al 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" \
--header "anthropic-version: 2023-06-01"El endpoint de mensajes devuelve los metadatos del chat junto con un arreglo chat_messages ordenado por created_at. Cuando se omite limit, se devuelve el conjunto completo de mensajes 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 ver 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 existen, los archivos subidos (normalmente en los mensajes del usuario), los archivos generados por herramientas y los artefactos 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-5",
"organization_uuid": "91012d09-e48b-438e-a489-1bebfd8fa6f9",
"project_id": "claude_proj_01KGp4eZNug9ri4kE35RSppq",
"user": {
"id": "user_01XyDMpzjS89pFZXqSFUBDr6",
"email_address": "user@example.com"
},
"chat_messages": [
{
"id": "claude_chat_msg_01VnBPkLmtj7YdW5QrXKEA8c",
"role": "user",
"created_at": "2026-04-10T08:09:10Z",
"content": [
{
"type": "text",
"text": "Can you help me draft requirements for our new dashboard feature?"
}
],
"files": [
{
"id": "claude_file_01UaT9wBcDfGhJkLmNpQrSv7",
"filename": "dashboard_mockup_v1.pdf",
"mime_type": "application/pdf",
"size_bytes": 482133,
"md5": "56367e4d2705cc9c025ad07424e944f0",
"created_at": "2026-04-10T08:09:10Z"
}
]
},
{
"id": "claude_chat_msg_01M8tFcHwbQ2kY6NpEjRZv4D",
"role": "assistant",
"created_at": "2026-04-10T08:09:11Z",
"content": [
{
"type": "text",
"text": "I'd be happy to help you draft requirements for your dashboard feature..."
}
],
"generated_files": [
{
"id": "claude_gen_file_01TbR8wAcCeFhJkLnPqStUvX",
"filename": "requirements_summary.csv",
"mime_type": "text/csv",
"size_bytes": 2048,
"md5": "89968669461d95416549937168269d6b"
}
],
"artifacts": [
{
"id": "claude_artifact_01HqRsTuVwXyZa2BcDeFgH4J",
"version_id": "claude_artifact_version_01KmNpQrSt3UvWxYz5AbCdEfG",
"title": "Dashboard Requirements Draft",
"artifact_type": "text/markdown"
}
]
}
],
"has_more": false,
"first_id": "eyJtc2dfdXVpZCI6ICIwZjcwYjA2Ni0uLi4ifQ==",
"last_id": "eyJtc2dfdXVpZCI6ICJhNGUwYjE3Mi0uLi4ifQ=="
}files, generated_files y artifacts pueden ser null en un mensaje determinado. files son los archivos y adjuntos de texto (por ejemplo, PDF, imágenes, hojas de cálculo, documentos y texto pegado) que el usuario adjuntó al mensaje, tal como claude.ai los almacenó. generated_files son archivos binarios que el asistente creó durante la conversación mediante el uso de herramientas (por ejemplo, PDF, 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 artefacto 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 artefacto. Pasa el id de cada entrada (o el version_id en el caso de los artefactos) al endpoint de contenido correspondiente en Recuperar archivos y artefactos para descargarla.
Recuperar archivos y artefactos
Los archivos y artefactos se descargan por ID. Salvo los documentos de Claude Docs (consulta el final de esta sección), no se listan de forma independiente. Los ID provienen del endpoint de mensajes del chat en Recuperar chats y mensajes (los arreglos files, generated_files y artifacts de cada mensaje) o, para los archivos subidos a nivel de proyecto, del endpoint de adjuntos del proyecto.
Elige el endpoint que corresponda a tu tipo de ID y a 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 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 artefacto | Descargar contenido de artefacto |
ID claude_artifact_version_* | Solo los metadatos de la versión del artefacto | Obtener metadatos de artefacto |
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 por streaming el contenido que claude.ai almacenó para el archivo como una respuesta binaria fragmentada (chunked). Ese contenido no siempre es idéntico al archivo que el usuario cargó. Las imágenes pueden servirse como una copia procesada en lugar de los bytes cargados. Algunos documentos adjuntos a chats (por ejemplo, archivos de Word, archivos de PowerPoint y algunos PDFs) se almacenan como el texto que claude.ai extrajo de ellos. Para estos documentos, el endpoint devuelve el texto extraído bajo el nombre de archivo original, y el documento original no está disponible a través de la Compliance API. Los campos size_bytes y md5 describen el contenido almacenado en lugar del archivo cargado. El nombre del archivo y el mime_type pueden seguir indicando el formato del documento cargado. Identifica el formato de un archivo a partir de los bytes devueltos, no a partir de su nombre o tipo declarado.
La respuesta incluye estos encabezados:
Content-Disposition: attachment; filename*=utf-8''<percent-encoded filename>contiene el nombre de archivo original de la carga en la forma extendida de RFC 5987. La forma extendida se usa para todos los nombres de archivo, no solo para los que no son ASCII.Content-Typecontiene el tipo MIME registrado para el contenido almacenado, que para un documento almacenado como texto extraído puede seguir indicando el formato del documento original.Content-MD5contiene el digest MD5 de los bytes servidos, codificado en base64 como se especifica en RFC 1864.Transfer-Encoding: chunkedsiempre está presente.
file_id="claude_file_01UaT9wBcDfGhJkLmNpQrSv7"
curl --fail-with-body -sS \
"https://api.anthropic.com/v1/compliance/apps/chats/files/$file_id/content" \
--header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
--header "anthropic-version: 2023-06-01" \
--output "dashboard_mockup_v1.pdf"En curl, la opción --remote-header-name (-J), que normalmente guarda una descarga con el nombre de archivo de Content-Disposition, no lee la forma filename*, así que asigna tú mismo el nombre al archivo guardado con --output. En un script, toma el nombre del campo filename del archivo en la respuesta de los mensajes del chat o de Obtener metadatos del archivo, o decodifica filename*. En cualquier caso, es el nombre que el usuario le dio al archivo subido, así que trátalo como no confiable antes de usarlo como ruta de salida: conserva solo el nombre base, permite solo caracteres que sean seguros en tu sistema de archivos y rechaza los nombres que comiencen con - o ..
A diferencia del endpoint de contenido de archivos, el endpoint de contenido de artefactos devuelve un objeto JSON. Pasa el version_id de una de las entradas del arreglo artifacts de un mensaje del asistente, no el id estable del artefacto; cada nueva versión de un artefacto tiene su propio version_id. El campo content de la respuesta contiene exactamente el texto de esa versión, y sus campos title y artifact_type describen el artefacto. Obtener metadatos del artefacto calcula size_bytes y md5 sobre la codificación UTF-8 de ese texto, así que compáralos con el valor de content y no con el cuerpo completo de la respuesta.
Los documentos de Claude Docs se listan por separado, mediante Listar artefactos de código, con artifact_type establecido en claude_docs. La lista versions de un documento está vacía y su published_version_id es null. Para descargar el texto actual de un documento, llama a GET /v1/compliance/apps/code/artifacts/{artifact_id}/content?multi_file_format=zip. Devuelve un archivo ZIP con un archivo de Word (.docx) por cada pestaña que contenga texto. No se incluyen los comentarios, los archivos subidos ni el historial de ediciones. La descarga de Claude Docs a través de la Compliance API está en beta.
Recuperar proyectos y adjuntos
Los proyectos agrupan chats relacionados junto con instrucciones personalizadas, contenido de base de conocimiento y archivos o documentos de texto adjuntos. La Compliance API expone los metadatos del proyecto, los detalles del proyecto y la lista de adjuntos que pertenecen a un proyecto.
- Listar proyectos
- Obtener detalles de proyecto
- Listar adjuntos de proyecto
- Obtener contenido de documento de 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, con los empates resueltos por id. Las respuestas de lista de proyectos y 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.
Archivos de proyecto frente a documentos de proyecto
Un adjunto de proyecto tiene una de dos formas distintas, identificadas por el discriminador type de cada entrada:
Las entradas con type igual a project_file son cargas de archivos (PDFs, imágenes, hojas de cálculo) cuyos IDs comienzan con claude_file_; descárgalas con Descargar contenido de archivo. Las entradas con type igual a project_doc son documentos de texto plano (siempre text/plain) cuyos IDs comienzan con claude_proj_doc_, incluidos documentos como archivos de Word que claude.ai convierte a texto cuando se agregan a un proyecto; obténlas 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" \
--header "anthropic-version: 2023-06-01"{
"data": [
{
"id": "claude_file_01UaT9wBcDfGhJkLmNpQrSv7",
"created_at": "2026-04-10T08:09:10Z",
"filename": "dashboard_mockup_v1.pdf",
"mime_type": "application/pdf",
"size_bytes": 482133,
"md5": "56367e4d2705cc9c025ad07424e944f0",
"type": "project_file"
},
{
"id": "claude_proj_doc_01YnT8sBcWvUtXzQpMkRfDgH",
"created_at": "2026-04-10T08:09:11Z",
"filename": "requirements.md",
"mime_type": "text/plain",
"type": "project_doc"
}
],
"has_more": false,
"next_page": null
}Eliminar contenido
La Compliance API expone endpoints de eliminación permanente 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 a partir de entonces.
- Eliminar chat: también elimina los mensajes del chat y cualquier archivo adjunto a esos mensajes.
- Eliminar archivo: maneja tanto archivos de chat como archivos de proyecto.
- Eliminar documento de proyecto: elimina un único documento de proyecto por ID.
- Eliminar proyecto: consulta Desvincular chats antes de eliminar un proyecto.
Para un chat de la experiencia unificada de Claude, Eliminar chat también elimina las sesiones en la nube que se iniciaron para el chat. No elimina las sesiones que esas sesiones iniciaron.
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 los archivos adjuntos. La eliminación es inmediata y no se puede deshacer.
# Requiere el alcance `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" \
--header "anthropic-version: 2023-06-01"{
"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 chats 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.
Desvincular chats antes de eliminar un proyecto
Un proyecto no se puede eliminar mientras tenga chats vinculados. La API devuelve 409 con este cuerpo:
{
"error": {
"type": "invalid_request_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 mediante Listar usuarios de la organización), elimina cada uno con DELETE /v1/compliance/apps/chats/{claude_chat_id} (o muévelo fuera del proyecto desde claude.ai), y luego reintenta la eliminación del proyecto.
Próximos pasos
El esquema completo de solicitud y respuesta para cada endpoint de chats, archivos, proyectos y artefactos.
Lista las sesiones que tus usuarios ejecutan en aplicaciones y agentes de Claude, como Cowork y Claude Code, y recupera sus transcripciones.
Enumera las personas y los equipos asociados con los chats y proyectos de esta página.
Was this page helpful?