Compliance API는 요청 시 활성화됩니다. Claude Enterprise 조직은 전체 API에 액세스할 수 있으며, Claude Console 조직은 Activity Feed(이 페이지)에만 액세스할 수 있습니다. Compliance API 액세스 권한 얻기를 참조하세요.
필수 스코프: Compliance Access Key 또는 Admin API 키의 read:compliance_activities.
이 스코프를 가진 Compliance Access Key(sk-ant-api01-...)와 Admin API 키(sk-ant-admin01-...) 모두 Activity Feed를 호출할 수 있습니다. 각 키 유형이 해당 스코프를 갖는 조건은 Compliance API 액세스 권한 얻기를 참조하세요.
Activity Feed는 조직에서 발생하는 모든 인증, 채팅, 파일, 프로젝트, 관리 및 플랫폼 작업을 최신순으로 기록합니다. 활동은 발생 후 1분 이내에 쿼리할 수 있으며 6년간 보관됩니다.
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"
}조직, 행위자, 활동 유형 또는 점 표기법 하위 매개변수인 created_at.gte, .gt, .lte, .lt를 사용한 created_at 시간 범위로 필터링할 수 있습니다. 각 매개변수의 유형과 허용 값은 API 레퍼런스를 참조하세요.
반복 가능한 매개변수는 배열 대괄호 쿼리 구문을 사용합니다. 각 값마다 activity_types[]=..., actor_ids[]=... 또는 organization_ids[]=...를 한 번씩 전달하세요.
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"Activity Feed는 수백 가지의 서로 다른 활동 유형을 생성합니다. activity_types[]가 허용하는 값의 전체 목록은 API 레퍼런스의 컴플라이언스 활동 쿼리를 참조하세요.
활동은 최신순으로 반환되며, created_at이 동일한 경우 활동 ID로 순서가 결정되고, 각 응답에서 limit 개의 결과로 제한됩니다(기본값 100, 최대 5,000). 전체 응답 스키마는 API 레퍼런스를 참조하세요.
Compliance API는 엔드포인트 계열에 따라 두 가지 페이지네이션 방식을 사용합니다.
| 엔드포인트 계열 | 정렬 순서 | 방식 | 매개변수 |
|---|---|---|---|
| 활동 | 최신순 | 커서 | after_id, before_id (first_id, last_id로 반환됨) |
| 채팅 및 채팅 메시지 | 오래된 순 | 커서 | after_id, before_id (first_id, last_id로 반환됨) |
| 프로젝트, 프로젝트 첨부 파일, 사용자, 역할, 역할 권한, 그룹, 그룹 멤버 | 엔드포인트별 | 페이지 토큰 | page (next_page로 반환됨) |
조직과 파일은 페이지네이션되지 않습니다. 조직 목록 조회는 모든 결과를 하나의 응답으로 반환하며, 파일은 ID로 개별 조회됩니다.
페이지네이션 커서와 페이지 토큰은 불투명 문자열입니다. 변경하지 않고 그대로 다시 전달하세요. 내부 형식은 안정적이지 않으며, 이를 파싱하면 예고 없이 작동이 중단됩니다. 각 요청에서 after_id 또는 before_id 중 하나만 설정할 수 있으며, 두 방식 모두 has_more를 반환하므로 언제 중지해야 하는지 알 수 있습니다.
활동을 페이지 단위로 조회하려면:
last_id를 after_id로 전달하여 결과 순서상 다음 페이지로 이동하세요. 활동이 최신순으로 정렬되므로 다음 페이지에는 더 오래된 항목이 포함됩니다.first_id를 before_id로 전달하여 이전 페이지로 돌아가세요.has_more가 false이면 중지하세요.커서 매개변수는 페이지 방향을 설정하고, 엔드포인트의 정렬 순서는 시간 방향을 설정합니다. 여기서는 동일한 after_id 매개변수가 더 오래된 활동으로 이동합니다. 채팅은 오래된 순으로 정렬됩니다. 해당 커서 의미 체계는 채팅, 파일 및 프로젝트 조회 및 삭제를 참조하세요.
커서는 재시도 시 안전하게 재사용할 수 있습니다. 성공적으로 반환된 페이지의 커서 또는 페이지 토큰은 유효한 상태로 유지됩니다. 실패한 요청(5xx, 타임아웃, 네트워크 오류)은 위치를 이동시키지 않습니다. 동일한 커서로 동일한 요청을 재시도하세요. 커서가 가리키는 페이지를 저장한 후에만 다음 커서로 이동하세요.
# 첫 번째 페이지(최신 활동 우선)를 가져오고 후행 커서를 캡처합니다.
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')
# 커서를 그대로 다시 전달하여 다음(더 오래된) 페이지를 가져옵니다.
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}"프로덕션 백필(backfill) 루프는 has_more와 last_id를 기반으로 반복을 진행하여 더 오래된 활동을 페이지 단위로 조회합니다.
after_id를 생략하세요).has_more가 false가 될 때까지 after_id=<last_id>로 페이지를 조회하세요.last_id를 영구 저장하세요.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)data의 모든 항목은 다음과 같은 최상위 구조를 가진 Activity입니다.
| 필드 | 유형 | 설명 |
|---|---|---|
id | string | 활동의 고유 식별자입니다. |
created_at | RFC 3339 string | 활동이 발생한 시각입니다. |
organization_id | string 또는 null | 활동이 발생한 조직이며, 조직에 연결되지 않은 이벤트(로그인, 로그아웃, Compliance API 호출)의 경우 null입니다. |
organization_uuid | string 또는 null | organization_id와 동일한 범위이며 UUID로 표현됩니다. |
actor | Actor union | 활동을 수행한 주체입니다. 다음 actor 표를 참조하세요. |
type | string | 활동 유형입니다. 예: claude_chat_created. |
| 추가 필드 | 다양함 | 유형별 필드입니다. 예를 들어 채팅 이벤트의 claude_chat_id 또는 파일 이벤트의 filename이 있습니다. 유형별 필드 목록은 API 레퍼런스의 컴플라이언스 활동 쿼리를 참조하세요. |
actor 필드는 구별된 유니온(discriminated union)입니다. type 구별자는 어떤 다른 필드가 존재하는지 알려줍니다.
actor.type | 나타나는 경우 | 주요 필드 |
|---|---|---|
user_actor | 로그인한 claude.ai 또는 Claude Console 사용자가 작업을 수행한 경우입니다. | email_address, user_id, ip_address, user_agent |
api_actor | 고객이 발급한 API 키로 Claude API 또는 Compliance API를 호출한 요청입니다. Compliance API 호출은 Compliance Access Key와 Admin API 키 모두에 대해 이 actor 유형을 생성합니다. | api_key_id, ip_address, user_agent |
admin_api_key_actor | 조직 관리자가 Admin API 키를 사용하여 사용자, 초대, 워크스페이스 또는 API 키를 관리한 경우입니다. | admin_api_key_id |
unauthenticated_user_actor | 로그인이 완료되기 전에 작업이 발생한 경우입니다. 예: sso_login_initiated. | unauthenticated_email_address, ip_address, user_agent |
anthropic_actor | Anthropic이 내부 도구 등을 통해 조직에 대해 작업을 수행한 경우입니다. | email_address (항상 null입니다. Anthropic 운영자는 개별 이메일로 표현되지 않으므로 user_actor와의 구조 일관성을 위해 존재합니다) |
scim_directory_sync_actor | ID 공급자(예: Okta, Microsoft Entra ID, JumpCloud)가 SCIM 디렉터리 동기화를 통해 변경 사항을 푸시한 경우입니다. | workos_event_id, directory_id, idp_connection_type (null 가능, 예: OktaSCIMV2, AzureSCIMV2) |
상위 호환 가능한 핸들러를 구축하세요. 인식되지 않는 type 및 actor.type 값을 그대로 통과시키고, 핸들러가 예상하지 않는 필드는 무시하세요. 그러면 새로운 활동 유형이 출시되어도 통합이 계속 작동합니다.
지원되는 모든 activity_types[] 값을 포함한 GET /v1/compliance/activities의 전체 요청 및 응답 스키마입니다.
피드에서 찾은 활동의 기본 콘텐츠를 쿼리하고 삭제합니다(Compliance Access Key 필요).
폴링 또는 배치 소비 패턴을 선택하고 SIEM 상관 분석을 계획하세요.
전체 오류 카탈로그입니다.
Was this page helpful?