Compliance API를 활성화하려면 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로 개별적으로 검색됩니다.
페이지네이션 커서와 페이지 토큰은 불투명한(opaque) 문자열이므로 변경하지 않고 그대로 다시 전달하세요. 내부 형식은 안정적이지 않으며, 이를 파싱하면 예고 없이 동작이 중단될 수 있습니다. 각 요청에서 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 | 활동을 수행한 주체입니다. 아래 액터 표를 참조하세요. |
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 키 모두에 대해 이 액터 유형을 생성합니다. | 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?