La Compliance API se habilita bajo solicitud. Las organizaciones de Claude Enterprise tienen acceso a la API completa; las organizaciones de Claude Console tienen acceso únicamente al Feed de Actividad (esta página). Consulta Obtener acceso a la Compliance API.
Alcance requerido: read:compliance_activities en la Compliance Access Key o en la clave de Admin API.
Tanto las Compliance Access Keys (sk-ant-api01-...) que incluyen este alcance como las claves de Admin API (sk-ant-admin01-...) pueden llamar al Feed de Actividad. Consulta Obtener acceso a la Compliance API para conocer las condiciones bajo las cuales cada tipo de clave incluye el alcance.
El Feed de Actividad registra cada acción de autenticación, chat, archivo, proyecto, administración y plataforma que ocurre en tu organización, en orden cronológico inverso. Las actividades se pueden consultar dentro de 1 minuto después de ocurrir y se conservan durante 6 años.
curl --fail-with-body -sS \
"https://api.anthropic.com/v1/compliance/activities?limit=1" \
--header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY"{
"data": [
{
"id": "activity_01XyDMpzjS89pFZXqSFUBDr6",
"created_at": "2026-04-10T08:09:10Z",
"organization_id": "org_01Wv6QeBcDfGhJkLmNpQrSt8",
"organization_uuid": "abcdef01-2345-6789-abcd-ef0123456789",
"actor": {
"type": "user_actor",
"email_address": "[email protected]",
"user_id": "user_01TuVwXyZaBcDeFgH2JkLmN4",
"ip_address": "192.0.2.34",
"user_agent": "Mozilla/5.0..."
},
"type": "claude_chat_created",
"claude_chat_id": "claude_chat_01XyDMpzjS89pFZXqSFUBDr6",
"claude_project_id": "claude_proj_01KGp4eZNug9ri4kE35RSppq"
}
],
"has_more": true,
"first_id": "activity_01XyDMpzjS89pFZXqSFUBDr6",
"last_id": "activity_01XyDMpzjS89pFZXqSFUBDr6"
}Filtra por organización, actor, tipo de actividad o una ventana de tiempo de created_at usando los subparámetros con notación de punto created_at.gte, .gt, .lte y .lt. Consulta la referencia de la API para conocer el tipo y los valores aceptados de cada parámetro.
Los parámetros repetibles usan sintaxis de consulta con corchetes de arreglo: pasa activity_types[]=..., actor_ids[]=... u organization_ids[]=... una vez por cada valor.
curl --fail-with-body -sS -G \
"https://api.anthropic.com/v1/compliance/activities" \
--data-urlencode "activity_types[]=claude_file_uploaded" \
--data-urlencode "activity_types[]=claude_chat_created" \
--data-urlencode "created_at.gte=2026-04-01T00:00:00Z" \
--header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY"El Feed de Actividad produce cientos de tipos de actividad distintos. Consulta Query compliance activities en la referencia de la API para ver la lista completa de valores que acepta activity_types[].
Las actividades se devuelven de la más reciente a la más antigua, con empates en created_at resueltos por ID de actividad, y limitadas a limit resultados en cada respuesta (100 por defecto, máximo 5,000). Consulta la referencia de la API para ver el esquema completo de la respuesta.
La Compliance API usa dos esquemas de paginación según la familia de endpoints:
| Familia de endpoints | Orden de clasificación | Esquema | Parámetros |
|---|---|---|---|
| Actividades | Más reciente primero | Cursor | after_id, before_id (devueltos como first_id, last_id) |
| Chats y mensajes de chat | Más antiguo primero | Cursor | after_id, before_id (devueltos como first_id, last_id) |
| Proyectos, adjuntos de proyecto, usuarios, roles, permisos de rol, grupos, miembros de grupo | Específico del endpoint | Token de página | page (devuelto como ) |
Las organizaciones y los archivos no se paginan: Listar organizaciones devuelve todos los resultados en una sola respuesta, y los archivos se recuperan individualmente por ID.
Los cursores de paginación y los tokens de página son cadenas opacas: devuélvelos sin modificar. Su formato interno no es estable, y analizarlos hará que tu código falle sin previo aviso. Solo se puede establecer uno de after_id o before_id en cada solicitud, y ambos esquemas devuelven has_more para que sepas cuándo detenerte.
Para recorrer las páginas de actividades:
last_id de la respuesta como after_id para avanzar a la siguiente página en el orden de resultados. Con las actividades ordenadas de la más reciente a la más antigua, la siguiente página contiene entradas más antiguas.first_id como before_id para regresar a la página anterior.has_more sea false.El parámetro de cursor establece la dirección de la página; el orden de clasificación del endpoint establece la dirección temporal. El mismo parámetro after_id alcanza actividades más antiguas aquí. Los chats se ordenan del más antiguo al más reciente; consulta Recuperar y eliminar chats, archivos y proyectos para conocer la semántica del cursor en ese caso.
Los cursores son seguros de reutilizar al reintentar. Un cursor o token de página de una página devuelta correctamente sigue siendo válido; una solicitud que falla (5xx, tiempo de espera agotado, error de red) no avanza tu posición. Reintenta la misma solicitud con el mismo cursor. Solo avanza al siguiente cursor después de haber almacenado la página que este deja atrás.
# Obtén la primera página (actividades más recientes primero) y captura su cursor final.
last_id=$(curl --fail-with-body -sS \
"https://api.anthropic.com/v1/compliance/activities?limit=2" \
--header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" | jq -er '.last_id')
# Pasa el cursor de vuelta sin cambios para obtener la siguiente página (más antigua).
curl --fail-with-body -sS -G \
"https://api.anthropic.com/v1/compliance/activities" \
--header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
--data-urlencode "limit=2" \
--data-urlencode "after_id=${last_id}"Un bucle de backfill (relleno retroactivo) en producción recorre las actividades más antiguas controlando la iteración con has_more y last_id:
after_id para comenzar desde el principio).after_id=<last_id> hasta que has_more sea false.last_id final solo después de haber almacenado todas las páginas que cubre.cursor = stored_cursor
loop:
if cursor is not null:
page = GET /v1/compliance/activities?after_id={cursor}&limit=100
else:
page = GET /v1/compliance/activities?limit=100
store(page.data)
if page.last_id is not null:
cursor = page.last_id
if not page.has_more: break
persist(cursor)Cada entrada en data es un objeto Activity con esta estructura de nivel superior:
| Campo | Tipo | Descripción |
|---|---|---|
id | string | Identificador único de la actividad. |
created_at | string RFC 3339 | Cuándo ocurrió la actividad. |
organization_id | string o null | Organización donde ocurrió la actividad, o null para eventos no vinculados a una organización (inicio de sesión, cierre de sesión, llamadas a la Compliance API). |
organization_uuid | string o null | Mismo alcance que organization_id, expresado como UUID. |
actor | Unión Actor | Quién o qué realizó la actividad. Consulta la siguiente tabla de actores. |
El campo actor es una unión discriminada. El discriminador type te indica qué otros campos están presentes:
actor.type | Cuándo aparece | Campos clave |
|---|---|---|
user_actor | Un usuario de claude.ai o Claude Console con sesión iniciada realizó la acción. | email_address, user_id, ip_address, user_agent |
api_actor | Una solicitud llamó a la API de Claude o a la Compliance API con una clave de API emitida por el cliente. Las llamadas a la Compliance API producen este tipo de actor tanto para Compliance Access Keys como para claves de Admin API. | api_key_id, ip_address, user_agent |
admin_api_key_actor | Un administrador de la organización usó una clave de Admin API para gestionar usuarios, invitaciones, espacios de trabajo o claves de API. |
Crea manejadores compatibles con versiones futuras. Deja pasar los valores de type y
actor.type no reconocidos, e ignora los campos que tu manejador no espera, para que tu
integración siga funcionando cuando se publiquen nuevos tipos de actividad.
El esquema completo de solicitud y respuesta para GET /v1/compliance/activities, incluidos todos los valores admitidos de activity_types[].
Consulta y elimina el contenido subyacente de las actividades que encuentres en el feed (se requiere Compliance Access Key).
Elige un patrón de consumo por sondeo o por lotes y planifica la correlación con SIEM.
El catálogo completo de errores.
Was this page helpful?
next_pagetype | string | El tipo de actividad, por ejemplo claude_chat_created. |
| campos adicionales | varía | Campos específicos del tipo, por ejemplo claude_chat_id en eventos de chat o filename en eventos de archivo. Consulta Query compliance activities en la referencia de la API para ver la lista de campos por tipo. |
admin_api_key_id |
unauthenticated_user_actor | Ocurrió una acción antes de que se completara el inicio de sesión, por ejemplo sso_login_initiated. | unauthenticated_email_address, ip_address, user_agent |
anthropic_actor | Anthropic actuó sobre la organización, por ejemplo mediante herramientas internas. | email_address (siempre null; presente por consistencia de estructura con user_actor, ya que los operadores de Anthropic no se representan mediante correos electrónicos individuales) |
scim_directory_sync_actor | Un proveedor de identidad (como Okta, Microsoft Entra ID o JumpCloud) envió un cambio mediante sincronización de directorio SCIM. | workos_event_id, directory_id, idp_connection_type (admite null; por ejemplo OktaSCIMV2, AzureSCIMV2) |