Claude Platform Docs
AdministraciónAPI de cumplimiento

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 página por página los metadatos de los chats, y luego Obtener mensajes de un 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 los chats nuevos, los chats modificados 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
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"
Response
{
  "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": "user@example.com"
      }
    }
  ],
  "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, con los empates resueltos 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 es también la forma de mantener una exportación actualizada 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 que cambia después de tu cursor guardado reaparece por delante de él, de modo que cada ejecución incremental devuelve tanto los chats completamente nuevos como los chats más antiguos que desde entonces han sido modificados o eliminados en claude.ai. Procesa los resultados de forma idempotente, usando el id del chat como clave, para manejar esas reapariciones. Un chat que regresa con deleted_at completado ya no tiene contenido que obtener, así que trátalo como eliminado en lugar de actualizado.

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: 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. La paginación hacia atrás con before_id no está soportada, 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 (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. 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 por 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 de sus resultados, y conserva el listado filtrado por usuario para las exportaciones ordenadas por created_at.

cURL
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 únicamente metadatos de los chats. Para extraer el contenido real del chat, los archivos adjuntos y los artefactos en línea (documentos estructurados que Claude genera dentro de un chat), continúa con el endpoint de mensajes para cada ID de chat:

cURL
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 recorrer página por página 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 un 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 mensajes del usuario), los archivos generados por herramientas y los artefactos que el asistente produjo o actualizó (normalmente en mensajes del asistente):

Response
{
  "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": "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 cada uno null en un mensaje determinado. files son los archivos y adjuntos de texto (por ejemplo, PDFs, 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, 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 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 para los artefactos) al endpoint de contenido correspondiente en Recuperar archivos y artefactos para descargarlo.

Recuperar archivos y artefactos

Los archivos y artefactos 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 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.

TienesQuieresUsa este endpoint
ID claude_file_*El contenido del archivoDescargar contenido de archivo
ID claude_file_*Solo los metadatos del archivoObtener metadatos de archivo
ID claude_gen_file_*El contenido binario de un archivo generado por herramientasDescargar un archivo generado por Claude
ID claude_gen_file_*Solo los metadatos de un archivo generado por herramientasObtener metadatos de archivo generado
ID claude_artifact_version_*El texto de una versión de artefactoDescargar contenido de artefacto
ID claude_artifact_version_*Solo los metadatos de la versión del artefactoObtener metadatos de artefacto
ID claude_proj_doc_*El contenido en texto plano de un documento de proyectoObtener contenido de documento de proyecto
ID claude_proj_doc_*Solo los metadatos de un documento de proyectoObtener 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-Type contiene 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-MD5 contiene el digest MD5 de los bytes servidos, codificado en base64 como se especifica en RFC 1864.
  • Transfer-Encoding: chunked siempre está presente.
cURL
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 artefactos devuelve el cuerpo de texto de una versión de artefacto. 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, y la Compliance API sirve los bytes exactos de esa versión.

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.

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.

cURL
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"
Response
{
  "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.

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.

cURL
# 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 alcance `delete:compliance_user_data`, que se otorga por separado
# de `read:compliance_user_data` cuando se crea 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"
Response
{
  "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": "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 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?