Para habilitar la Compliance API, consulta Configurar la Compliance API.
Alcance requerido: read:compliance_activities en la Compliance Access Key o en la clave de Admin API.
Una integración de la Compliance API en producción toma tres decisiones de diseño: cómo consume el Activity Feed, cómo su salida se correlaciona con tu sistema de "security information and event management" (gestión de información y eventos de seguridad), o SIEM, y dónde residen las copias a largo plazo de la actividad y el contenido. Estas decisiones son independientes de los endpoints en sí; esta página te ayuda a evaluar las ventajas y desventajas.
Esta página asume que has leído Consultar el Activity Feed, que define los parámetros y el contrato de paginación referenciados a lo largo del documento, y Recuperar y eliminar chats, archivos y proyectos, que define los endpoints de contenido y la semántica de deleted_at referenciados en Planifica la retención de contenido.
El Activity Feed admite dos patrones de consumo: sondeo periódico por ventanas delimitado por created_at.gte y created_at.lt, y lecturas incrementales basadas en cursores que persisten un cursor de una respuesta y lo pasan en la siguiente solicitud. Ambos devuelven objetos Activity idénticos; la diferencia es el estado que tu cliente persiste entre llamadas.
Ambos patrones comparten estas restricciones:
limit máximo para cada página es 5,000./v1/compliance/*; consulta 429 Too Many Requests para los encabezados de respuesta y el contrato de reintentos.| Patrón | Elígelo cuando |
|---|---|
| Sondeo por ventanas | Tu pipeline se ejecuta en un horario fijo, prefieres workers sin estado y puedes tolerar reproducir o superponer ventanas |
| Lecturas incrementales basadas en cursores | Quieres la menor latencia entre que ocurre una actividad y tu pipeline la ingiere, quieres evitar releer páginas que ya agotaste y tienes un lugar duradero para persistir un cursor entre ejecuciones |
Establece created_at.lt al menos 1 minuto en el pasado para que cada actividad en la ventana ya sea consultable. Usa created_at.gte para el límite inferior y created_at.lt para el límite superior de modo que las ventanas consecutivas se encajen sin brechas ni superposiciones; reutiliza el valor lt de la ventana anterior como el valor gte de la siguiente ventana.
curl --fail-with-body -sS -G \
"https://api.anthropic.com/v1/compliance/activities" \
--header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
--data-urlencode "created_at.gte=2026-04-20T07:00:00Z" \
--data-urlencode "created_at.lt=2026-04-20T08:00:00Z" \
--data-urlencode "limit=5000"Cuando la respuesta tiene has_more: true, la ventana contiene más de una página de actividades. Pagina dentro de la ventana pasando el last_id de la respuesta como after_id en la siguiente solicitud (deteniéndote cuando has_more sea false), o elige una ventana de tiempo más pequeña. Consulta Paginar resultados para el contrato completo.
Incluso con un encaje limpio, una actividad que se indexa después de que su ventana se ha cerrado nunca aparece en una ventana posterior. Deduplica por el id de la actividad y, o bien amplía cada nueva ventana para que se superponga con la anterior por unos minutos, o ejecuta una pasada de reconciliación periódica que vuelva a consultar una ventana más antigua.
Un límite created_at.lt demasiado cercano al presente descarta de forma silenciosa y permanente las actividades indexadas tardíamente: una vez que created_at.gte avanza más allá de ellas, ninguna ventana posterior puede recuperarlas. Trata la cifra de consultabilidad de 1 minuto como el retraso de indexación documentado, no como una recomendación flexible.
first_id="activity_01XyDMpzjS89pFZXqSFUBDr6" # first_id from a previous response
curl --fail-with-body -sS -G \
"https://api.anthropic.com/v1/compliance/activities" \
--header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
--data-urlencode "limit=5000" \
--data-urlencode "before_id=$first_id"Pagina hasta que has_more sea false, luego persiste first_id de la respuesta final y pásalo sin cambios como before_id en la siguiente ejecución para recuperar actividades más recientes que el cursor guardado. Para recorrer en la dirección opuesta para un backfill, persiste last_id y pásalo como after_id en su lugar. Para la referencia completa de cursor frente a token de página y la semántica de reintentos, consulta Paginar resultados.
Un bucle de puesta al día en producción obtiene las actividades registradas desde tu último sondeo impulsando la iteración con has_more y first_id:
cursor = stored_cursor
loop:
page = GET /v1/compliance/activities?before_id={cursor}&limit=5000
store(page.data)
if page.first_id is not null:
cursor = page.first_id
if not page.has_more: break
persist(cursor)Los cursores sobreviven a la rotación de claves; consulta Gestionar y rotar claves.
Cada página es adyacente al cursor que pasas: el bucle avanza hacia el presente, una página a la vez. No trates una sola respuesta como si estuvieras al día mientras has_more sea true. Persiste el cursor solo después de que has_more sea false; las páginas no obtenidas son las más recientes entre el first_id de esta respuesta y el presente, y permanecen sin leer hasta que termines el bucle o ejecutes de nuevo.
Cada Activity lleva campos que puedes unir con eventos que ya están en tu SIEM (Splunk, Datadog, Microsoft Sentinel, Cribl o similar):
| Campo de la Compliance API | Objetivo de unión |
|---|---|
actor.user_id | El identificador de usuario estable de tu proveedor de identidad |
actor.email_address | Correo electrónico del directorio cuando no hay un ID estable disponible |
actor.ip_address | Registros de red, VPN y endpoints |
created_at | Correlación por ventana de tiempo entre cualquier fuente |
actor.user_id y actor.email_address están presentes cuando actor.type es user_actor; verifica el discriminador antes de leerlos. user_id es un identificador estable y opaco de la cuenta de usuario: es consistente en todos los endpoints de la Compliance API y en los payloads de actividad, y no cambia cuando el correo electrónico o el nombre para mostrar del usuario cambian. Usa user_id, no email_address, como la clave de unión principal.
Las llamadas a la propia Compliance API emiten actividades compliance_api_accessed. Ingiere estas junto con otros tipos de actividad para que tu SIEM registre quién consultó datos de cumplimiento y cuándo. Pasa activity_types[]=compliance_api_accessed para acotar la consulta, luego, en tu cliente, lee actor.api_key_id de cada actividad cuyo actor.type sea api_actor para atribuir el acceso a una Compliance Access Key o clave de Admin API específica.
Tres horizontes de retención rigen lo que puedes recuperar más adelante:
| Datos | Retenidos durante | Controlado por |
|---|---|---|
| Registros del Activity Feed | 6 años | Anthropic |
| Contenido de chats, archivos y proyectos | La política de retención de claude.ai de tu organización | Tu organización |
| Contenido eliminado de forma permanente a través de la Compliance API | No se retiene; la eliminación es inmediata y permanente | Quien llama al endpoint DELETE |
Para saber cómo el resto de la Claude Platform maneja la retención, consulta API y retención de datos.
Decide entre exportar y archivar o la recuperación bajo demanda mediante la API de la siguiente manera:
deleted_at poblado, pero las eliminaciones de la Compliance API no.En cualquier otro caso, confía en la recuperación directa mediante la API y evita mantener una copia paralela.
Trata el Activity Feed como al menos una vez (at-least-once): un recorrido correctamente paginado devuelve cada actividad al menos una vez, pero un reintento después de una falla parcial puede volver a entregar actividades que ya almacenaste. Deduplica por el campo id de la actividad.
Los endpoints de listado no devuelven un campo total_count ni una suma de verificación. Para atestiguar que una ejecución de exportación está completa, registra:
last_id terminal.request-id de la página final.Los endpoints de contenido (chats, archivos, proyectos y adjuntos de proyectos) sirven únicamente datos de claude.ai; el Activity Feed expone eventos administrativos y de recursos en toda la organización. La Compliance API no incluye:
Consulta las Preguntas frecuentes de la Compliance API para obtener más información sobre lo que la Compliance API captura y lo que no.
Para la cadena de custodia, almacena los registros exportados con metadatos de procedencia: endpoint de origen, parámetros de consulta, marca de tiempo de la ejecución y un hash del contenido de cada registro.
Parámetros de filtrado, paginación y el esquema del objeto Activity.
Los endpoints de contenido y de eliminación permanente.
Was this page helpful?