# 查询活动动态

检索、筛选和分页浏览您组织的 Compliance API 活动动态。

---

<Note>
  Compliance API 需申请开通。Claude Enterprise 组织可访问完整 API；Claude Console 组织仅可访问[活动动态](/docs/en/manage-claude/compliance-activity-feed)。请参阅[获取 Compliance API 访问权限](/docs/en/manage-claude/compliance-api-access)。
</Note>

<Note>
  Compliance API 需申请开通。Claude Enterprise 组织可访问完整 API；Claude Console 组织仅可访问活动动态（即本页）。请参阅[获取 Compliance API 访问权限](/docs/en/manage-claude/compliance-api-access)。
</Note>

<Check>
  **所需权限范围：** Compliance Access Key 或 Admin API key 上的 `read:compliance_activities`。

  具有此权限范围的 Compliance Access Key（`sk-ant-api01-...`）和 Admin API key（`sk-ant-admin01-...`）都可以调用活动动态。请参阅[获取 Compliance API 访问权限](/docs/en/manage-claude/compliance-api-access)了解每种密钥类型在何种条件下具有此权限范围。
</Check>

活动动态记录组织中发生的每一次身份验证、聊天、文件、项目、管理和平台操作，按时间倒序排列。活动在发生后 1 分钟内即可查询，保留期限为 6 年。

<CodeGroup>
```bash cURL nocheck
curl --fail-with-body -sS \
  "https://api.anthropic.com/v1/compliance/activities?limit=1" \
  --header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY"
```
</CodeGroup>

```json Response
{
  "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": "user@example.com",
        "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 参考文档](/docs/en/api/compliance/activities/list)了解每个参数的类型和可接受的值。

可重复参数使用数组括号查询语法：为每个值传入一次 `activity_types[]=...`、`actor_ids[]=...` 或 `organization_ids[]=...`。

<CodeGroup>
```bash cURL nocheck
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"
```
</CodeGroup>

活动动态产生数百种不同的活动类型。请参阅 API 参考文档中的[查询合规活动](/docs/en/api/compliance/activities/list)了解 `activity_types[]` 接受的完整值列表。

## 分页结果

活动按最新优先排序，`created_at` 相同时按活动 ID 排序，每次响应最多返回 `limit` 条结果（默认 100，最大 5,000）。请参阅 [API 参考文档](/docs/en/api/compliance/activities/list)了解完整的响应架构。

Compliance API 根据端点系列使用两种分页方案：

| 端点系列 | 排序方式 | 方案 | 参数 |
| :---- | :---- | :---- | :---- |
| 活动 | 最新优先 | 游标 | `after_id`、`before_id`（返回为 `first_id`、`last_id`） |
| 聊天和聊天消息 | 最早优先 | 游标 | `after_id`、`before_id`（返回为 `first_id`、`last_id`） |
| 项目、项目附件、用户、角色、角色权限、群组、群组成员 | 端点特定 | 页面令牌 | `page`（返回为 `next_page`） |

组织和文件不分页：[列出组织](/docs/en/manage-claude/compliance-org-data#list-organizations)在一个响应中返回所有结果，文件通过 ID 单独检索。

分页游标和页面令牌是不透明字符串：请原样传回。它们的内部格式不稳定，解析它们会在没有通知的情况下失效。每次请求只能设置 `after_id` 或 `before_id` 中的一个，两种方案都返回 `has_more` 以便您知道何时停止。

要逐页浏览活动：

- 将响应的 `last_id` 作为 `after_id` 传入以前进到结果顺序中的下一页。由于活动按最新优先排序，下一页包含更早的条目。
- 将 `first_id` 作为 `before_id` 传入以返回上一页。
- 当 `has_more` 为 `false` 时停止。

游标参数设置页面方向；端点的排序方式设置时间方向。此处相同的 `after_id` 参数访问更早的活动。聊天按最早优先排序；请参阅[检索和删除聊天、文件和项目](/docs/en/manage-claude/compliance-content-data)了解那里的游标语义。

<Note>
  **游标在重试时可安全复用。** 成功返回页面的游标或页面令牌仍然有效；失败的请求（5xx、超时、网络错误）不会推进您的位置。使用相同的游标重试相同的请求。仅在您存储了游标所指向的页面之后才移动到下一个游标。
</Note>

<CodeGroup>
```bash cURL nocheck
# 获取第一页（最新活动优先）并捕获其末尾游标。
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}"
```
</CodeGroup>

生产环境中的**回填**循环通过驱动 `has_more` 和 `last_id` 的迭代来逐页浏览更早的活动：

1. 从您存储的游标开始（或省略 `after_id` 从头开始）。
2. 使用 `after_id=<last_id>` 逐页浏览，直到 `has_more` 为 `false`。
3. 仅在存储了它所覆盖的每个页面之后才持久化最终的 `last_id`。

```text
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)
```

## 理解 Activity 对象

`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 联合类型 | 执行活动的人或对象。请参阅下文的 actor 表。 |
| `type` | string | 活动类型，例如 `claude_chat_created`。 |
| _其他字段_ | 不同 | 类型特定字段，例如聊天事件上的 `claude_chat_id` 或文件事件上的 `filename`。请参阅 API 参考文档中的[查询合规活动](/docs/en/api/compliance/activities/list)了解每个类型的字段列表。 |

`actor` 字段是一个可区分联合类型。`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 key 都会产生此 actor 类型。 | `api_key_id`、`ip_address`、`user_agent` |
| `admin_api_key_actor` | 组织管理员使用 Admin API key 管理用户、邀请、工作区或 API 密钥。 | `admin_api_key_id` |
| `unauthenticated_user_actor` | 操作发生在登录完成之前，例如 `sso_login_initiated`。 | `unauthenticated_email_address`、`ip_address`、`user_agent` |
| `anthropic_actor` | Anthropic 对组织执行了操作，例如通过内部工具。 | `email_address`（始终为 `null`；为与 `user_actor` 的结构一致性而存在，因为 Anthropic 操作员不以个人邮箱表示） |
| `scim_directory_sync_actor` | 身份提供商（如 Okta、Microsoft Entra ID 或 JumpCloud）通过 SCIM 目录同步推送了变更。 | `workos_event_id`、`directory_id`、`idp_connection_type`（可为空；例如 `OktaSCIMV2`、`AzureSCIMV2`） |

<Note>
  **构建前向兼容的处理器。** 透传无法识别的 `type` 和 `actor.type` 值，忽略处理器不期望的字段，这样您的集成在新活动类型上线时仍能正常工作。
</Note>

## 后续步骤

<CardGroup cols={2}>
  <Card title="API 参考文档" href="/docs/en/api/compliance/activities/list">
    `GET /v1/compliance/activities` 的完整请求和响应架构，包括所有支持的 `activity_types[]` 值。
  </Card>
  <Card title="检索和删除聊天、文件和项目" href="/docs/en/manage-claude/compliance-content-data">
    查询和删除您在动态中发现的活动的底层内容（需要 Compliance Access Key）。
  </Card>
  <Card title="设计您的合规集成" href="/docs/en/manage-claude/compliance-integration-patterns">
    选择轮询或批消费模式，并规划 SIEM 关联。
  </Card>
  <Card title="处理 Compliance API 错误" href="/docs/en/manage-claude/compliance-errors">
    完整的错误目录。
  </Card>
</CardGroup>