# 检索和删除聊天、文件和项目

通过 Compliance API 访问 claude.ai 组织的聊天内容、文件附件和项目。

---

<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>
  本页上的端点检索和删除 claude.ai 内容，仅适用于 Claude Enterprise 计划的组织。Compliance API 需申请开通。请参阅[获取 Compliance API 访问权限](/docs/en/manage-claude/compliance-api-access)。
</Note>

<Check>
  **所需权限范围：** Compliance Access Key 上的 `read:compliance_user_data`。删除端点还需要 `delete:compliance_user_data`。

  **前置条件：** 要列出聊天，至少需要一个来自[列出组织用户](/docs/en/manage-claude/compliance-org-data#list-organization-users)的用户 ID。本页上的其他端点直接接受资源 ID。
</Check>

本页上的端点将 claude.ai 聊天内容、文件上传、项目和项目附件暴露给合规审查人员。它们支持电子发现（eDiscovery）导出、数据泄露防护（DLP）执行和账户删除响应。内容保留期限取决于组织的保留策略。用户在 claude.ai 中软删除的聊天仍可通过 Compliance API 查看，`deleted_at` 字段会填充；已硬删除的聊天（通过 Compliance API 本身，或在组织的保留窗口到期后）无法检索。

两种权限范围仅授予在 claude.ai 中创建的 Compliance Access Key（`sk-ant-api01-...`）；请参阅[获取 Compliance API 访问权限](/docs/en/manage-claude/compliance-api-access)来配置。`read:compliance_user_data` 权限范围涵盖检索；`delete:compliance_user_data` 仅在删除端点中需要。聊天、文件、项目和附件端点不适用于 Admin API key（`sk-ant-admin01-...`）；使用 Admin API key 身份验证的调用会返回 [403 Forbidden](/docs/en/manage-claude/compliance-errors#403-forbidden)。

本页上的端点使用两种分页方式；请参阅[分页结果](/docs/en/manage-claude/compliance-activity-feed#paginate-results)了解完整参考。每节会注明适用哪种方案。

## 检索聊天和消息

使用[列出聊天](/docs/en/api/compliance/apps/chats/list)分页浏览聊天元数据，然后使用[获取聊天消息](/docs/en/api/compliance/apps/chats/messages/list)获取单条聊天的完整消息内容。

聊天列表端点至少需要一个 `user_ids[]` 值（一次请求最多接受 10 个），因此请先使用[列出组织用户](/docs/en/manage-claude/compliance-org-data#list-organization-users)枚举用户 ID，然后为每个用户或每批用户列出聊天。以下请求列出指定用户自给定日期以来拥有的聊天。

<CodeGroup>
```bash cURL nocheck
curl --fail-with-body -sS -G \
  "https://api.anthropic.com/v1/compliance/apps/chats" \
  --header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
  --data-urlencode "user_ids[]=user_01XyDMpzjS89pFZXqSFUBDr6" \
  --data-urlencode "organization_ids[]=91012d09-e48b-438e-a489-1bebfd8fa6f9" \
  --data-urlencode "created_at.gte=2025-06-01T00:00:00Z" \
  --data-urlencode "limit=100"
```
</CodeGroup>

```json Response
{
  "data": [
    {
      "id": "claude_chat_01H5CWunD7RpVJ5bHa8RCkja",
      "name": "Product Requirements Discussion",
      "created_at": "2026-04-10T08:09:10Z",
      "updated_at": "2026-04-10T09:10:11Z",
      "deleted_at": null,
      "href": "https://claude.ai/chat/abcdef01-2345-6789-abcd-ef0123456789",
      "model": "claude-opus-4-7",
      "organization_uuid": "91012d09-e48b-438e-a489-1bebfd8fa6f9",
      "project_id": "claude_proj_01KGp4eZNug9ri4kE35RSppq",
      "user": {
        "id": "user_01XyDMpzjS89pFZXqSFUBDr6",
        "email_address": "user@example.com"
      }
    }
  ],
  "has_more": true,
  "first_id": "claude_chat_01H5CWunD7RpVJ5bHa8RCkja",
  "last_id": "claude_chat_01H5CWunD7RpVJ5bHa8RCkja"
}
```

列出聊天仅返回元数据。请参阅[列出聊天](/docs/en/api/compliance/apps/chats/list)了解完整的筛选列表；除了必需的 `user_ids[]` 之外，`updated_at.*` 范围对于增量审查自上次导出以来发生变更的聊天很有用。

聊天结果按 `created_at` 升序排列（最早优先），相同时按 `id` 排序。分页使用与[分页结果](/docs/en/manage-claude/compliance-activity-feed#paginate-results)相同的 `first_id`/`last_id`/`has_more` 游标字段；将 `last_id` 作为 `after_id` 传入以向前浏览到更新的聊天，或将 `first_id` 作为 `before_id` 传入以向后浏览到更早的聊天。

要获取实际的聊天内容、附件和内联制品（Claude 在聊天中生成的结构化文档），请为每个聊天 ID 调用消息端点：

<CodeGroup>
```bash cURL nocheck
chat_id="claude_chat_01H5CWunD7RpVJ5bHa8RCkja"

curl --fail-with-body -sS \
  "https://api.anthropic.com/v1/compliance/apps/chats/$chat_id/messages" \
  --header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY"
```
</CodeGroup>

消息端点返回聊天的元数据加上按 `created_at` 排序的 `chat_messages` 数组。当省略 `limit` 时，会在一个响应中返回完整的消息集；传入 `limit`、`after_id` 或 `before_id` 以分页浏览非常长的聊天。端点还接受 `created_at.*` 和 `updated_at.*` 范围限制（`gt`、`gte`、`lt`、`lte`）以及 `order` 参数（`asc` 或 `desc`）。请参阅[获取聊天消息](/docs/en/api/compliance/apps/chats/messages/list)了解完整参数列表。对于用户消息，`created_at` 是消息发送的时间；对于助手消息，是 Claude 完成生成消息的时间。每条消息携带其文本内容，以及存在时的任何上传文件（通常在用户消息上）、任何工具生成的文件以及助手生成或更新的任何制品（通常在助手消息上）：

```json Response
{
  "id": "claude_chat_01H5CWunD7RpVJ5bHa8RCkja",
  "name": "Product Requirements Discussion",
  "created_at": "2026-04-10T08:09:10Z",
  "updated_at": "2026-04-10T09:10:11Z",
  "deleted_at": null,
  "href": "https://claude.ai/chat/abcdef01-2345-6789-abcd-ef0123456789",
  "model": "claude-opus-4-7",
  "organization_uuid": "91012d09-e48b-438e-a489-1bebfd8fa6f9",
  "project_id": "claude_proj_01KGp4eZNug9ri4kE35RSppq",
  "user": {
    "id": "user_01XyDMpzjS89pFZXqSFUBDr6",
    "email_address": "user@example.com"
  },
  "chat_messages": [
    {
      "id": "claude_chat_msg_01VnBPkLmtj7YdW5QrXKEA8c",
      "role": "user",
      "created_at": "2026-04-10T08:09:10Z",
      "content": [
        {
          "type": "text",
          "text": "Can you help me draft requirements for our new dashboard feature?"
        }
      ],
      "files": [
        {
          "id": "claude_file_01UaT9wBcDfGhJkLmNpQrSv7",
          "filename": "dashboard_mockup_v1.pdf",
          "mime_type": "application/pdf"
        }
      ]
    },
    {
      "id": "claude_chat_msg_01M8tFcHwbQ2kY6NpEjRZv4D",
      "role": "assistant",
      "created_at": "2026-04-10T08:09:11Z",
      "content": [
        {
          "type": "text",
          "text": "I'd be happy to help you draft requirements for your dashboard feature..."
        }
      ],
      "generated_files": [
        {
          "id": "claude_gen_file_01TbR8wAcCeFhJkLnPqStUvX",
          "filename": "requirements_summary.csv",
          "mime_type": "text/csv"
        }
      ],
      "artifacts": [
        {
          "id": "claude_artifact_01HqRsTuVwXyZa2BcDeFgH4J",
          "version_id": "claude_artifact_version_01KmNpQrSt3UvWxYz5AbCdEfG",
          "title": "Dashboard Requirements Draft",
          "artifact_type": "text/markdown"
        }
      ]
    }
  ],
  "has_more": false,
  "first_id": "eyJtc2dfdXVpZCI6ICIwZjcwYjA2Ni0uLi4ifQ==",
  "last_id": "eyJtc2dfdXVpZCI6ICJhNGUwYjE3Mi0uLi4ifQ=="
}
```

`files`、`generated_files` 和 `artifacts` 在给定消息上都可能为 `null`。`files` 是用户附加到消息的二进制上传文件（PDF、图片、电子表格）。`generated_files` 是助手在对话过程中通过工具使用创建的二进制文件（例如 PDF、电子表格或演示文稿）。`artifacts` 是助手在其响应中生成或更新的版本化文档（例如代码或 markdown）；制品可以在同一聊天的多个助手轮次中修订，每次修订作为相同制品 `id` 下的新 `version_id` 出现。将每个条目的 `id`（或制品的 `version_id`）传入[检索文件和制品](#检索文件和制品)中的匹配内容端点以下载它。

## 检索文件和制品

文件和制品通过 ID 下载，不支持独立列出。ID 来自[检索聊天和消息](#检索聊天和消息)中的聊天消息端点（每条消息上的 `files`、`generated_files` 和 `artifacts` 数组），或对于项目级上传，来自[项目附件端点](#检索项目和附件)。

选择与您的 ID 类型和所需数据匹配的端点。同一文件内容端点同时提供聊天文件和项目文件。

| 您拥有 | 您需要 | 使用此端点 |
| --- | --- | --- |
| `claude_file_*` ID | 文件的二进制内容 | [下载文件内容](/docs/en/api/compliance/apps/chats/files/download) |
| `claude_file_*` ID | 仅文件元数据 | [获取文件元数据](/docs/en/api/compliance/apps/chats/files/retrieve) |
| `claude_gen_file_*` ID | 工具生成文件的二进制内容 | [下载 Claude 生成的文件](/docs/en/api/compliance/apps/chats/generated_files/download) |
| `claude_gen_file_*` ID | 仅工具生成文件的元数据 | [获取生成文件元数据](/docs/en/api/compliance/apps/chats/generated_files/retrieve) |
| `claude_artifact_version_*` ID | 一个制品版本的文本 | [下载制品内容](/docs/en/api/compliance/apps/artifacts/download) |
| `claude_artifact_version_*` ID | 仅制品版本的元数据 | [获取制品元数据](/docs/en/api/compliance/apps/artifacts/retrieve) |
| `claude_proj_doc_*` ID | 项目文档的纯文本内容 | [获取项目文档内容](/docs/en/api/compliance/apps/projects/documents/retrieve) |
| `claude_proj_doc_*` ID | 仅项目文档的元数据 | [获取项目文档元数据](/docs/en/api/compliance/apps/projects/documents/metadata) |

文件内容端点以分块二进制响应流式传输原始上传文件，具有以下响应头：

- `Content-Disposition: attachment; filename*=utf-8''` 以 RFC 5987 扩展形式携带原始上传文件名。扩展形式用于每个文件名，不仅限于非 ASCII 文件名。
- `Content-Type` 携带上传文件的 MIME 类型。
- `Content-MD5` 携带文件的 MD5 摘要，按 RFC 1864 规定进行 base64 编码。
- `Transfer-Encoding: chunked` 始终设置。

<CodeGroup>
```bash cURL nocheck
file_id="claude_file_01UaT9wBcDfGhJkLmNpQrSv7"

curl --fail-with-body -sS -OJ \
  --header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
  "https://api.anthropic.com/v1/compliance/apps/chats/files/$file_id/content"
```
</CodeGroup>

`-OJ` 标志告诉 curl 使用 `Content-Disposition` 中的文件名保存响应，即用户上传时的原始文件名。

制品内容端点返回一个制品版本的文本正文。传入助手消息 `artifacts` 数组中某个条目的 `version_id`，而不是制品的稳定 `id`。制品的每个新版本都有自己的 `version_id`，Compliance API 提供该版本的精确字节。

## 检索项目和附件

项目将相关聊天与自定义指令、知识库内容和附件文件或文本文档捆绑在一起。Compliance API 暴露项目元数据、项目详情以及属于项目的附件列表。

- [列出项目](/docs/en/api/compliance/apps/projects/list)
- [获取项目详情](/docs/en/api/compliance/apps/projects/retrieve)
- [列出项目附件](/docs/en/api/compliance/apps/projects/attachments/list)
- [获取项目文档内容](/docs/en/api/compliance/apps/projects/documents/retrieve)

项目结果按创建日期升序排列。附件结果按 `created_at` 升序排列，相同时按 `id` 排序。项目列表和附件列表响应使用不透明的 `next_page` 页面令牌分页，而不是聊天和活动动态使用的 `first_id`/`last_id` 游标。在下一次请求中将令牌作为 `page` 查询参数传回。

### 项目文件与项目文档

项目附件是两种不同形式之一，由每个条目上的 `type` 判别器标识：

`type` 为 `project_file` 的条目是二进制上传文件（PDF、图片、电子表格），其 ID 以 `claude_file_` 开头；使用[下载文件内容](/docs/en/api/compliance/apps/chats/files/download)下载它们。`type` 为 `project_doc` 的条目是纯文本文档（始终为 `text/plain`），其 ID 以 `claude_proj_doc_` 开头；使用[获取项目文档内容](/docs/en/api/compliance/apps/projects/documents/retrieve)获取它们。

遍历附件列表的消费者必须根据 `type` 分支，并为每个条目调用匹配的内容端点。以下请求列出一页附件；通过将 `next_page` 作为 `page` 参数传回来分页，直到 `has_more` 为 `false`。

<CodeGroup>
```bash cURL nocheck
project_id="claude_proj_01KGp4eZNug9ri4kE35RSppq"

curl --fail-with-body -sS -G \
  "https://api.anthropic.com/v1/compliance/apps/projects/$project_id/attachments" \
  --header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY"
```
</CodeGroup>

```json Response
{
  "data": [
    {
      "id": "claude_file_01UaT9wBcDfGhJkLmNpQrSv7",
      "created_at": "2026-04-10T08:09:10Z",
      "filename": "dashboard_mockup_v1.pdf",
      "mime_type": "application/pdf",
      "type": "project_file"
    },
    {
      "id": "claude_proj_doc_01YnT8sBcWvUtXzQpMkRfDgH",
      "created_at": "2026-04-10T08:09:11Z",
      "filename": "requirements.md",
      "mime_type": "text/plain",
      "type": "project_doc"
    }
  ],
  "has_more": false,
  "next_page": null
}
```

## 删除内容

<Warning>
  每次成功的删除都是永久且即时的。没有恢复窗口。
</Warning>

Compliance API 暴露了聊天、文件、项目文档和整个项目的硬删除端点。硬删除的聊天无法恢复，之后也不会再出现在列表响应中（而从 claude.ai 软删除的聊天仍会出现，`deleted_at` 字段已填充）。

- [删除聊天](/docs/en/api/compliance/apps/chats/delete)：同时删除聊天的消息及附加到这些消息的文件。
- [删除文件](/docs/en/api/compliance/apps/chats/files/delete)：处理聊天文件和项目文件。
- [删除项目文档](/docs/en/api/compliance/apps/projects/documents/delete)：按 ID 删除单个项目文档。
- [删除项目](/docs/en/api/compliance/apps/projects/delete)：请参阅[删除项目前先分离聊天](#删除项目前先分离聊天)。

所有四个端点都需要 `delete:compliance_user_data` 权限范围，该权限在创建 Compliance Access Key 时与读取权限分开授予。

以下请求删除一个聊天。相同的模式适用于其他删除端点；仅 URL 不同。

<CodeGroup>
```bash cURL nocheck
# WARNING: This operation PERMANENTLY deletes the chat, all of its messages,
# and any attached files. Deletion is immediate and cannot be undone. It
# requires the `delete:compliance_user_data` scope, which is granted separately
# from `read:compliance_user_data` when the Compliance Access Key is created.
# Ensure you have explicit authorization before running this.

chat_id="claude_chat_01H5CWunD7RpVJ5bHa8RCkja"

curl --fail-with-body -sS -X DELETE \
  "https://api.anthropic.com/v1/compliance/apps/chats/$chat_id" \
  --header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY"
```
</CodeGroup>

```json Response
{
  "id": "claude_chat_01H5CWunD7RpVJ5bHa8RCkja",
  "type": "claude_chat_deleted"
}
```

每次成功的删除返回一个带有 `id` 和 `type` 判别器的小型确认信封。聊天端点返回 `claude_chat_deleted`；在确认删除之前请检查 `type` 字段。请参阅每个删除端点 [API 参考](/docs/en/api/compliance/apps)页面上的响应架构了解其他端点返回的确切 `type` 值。

### 删除项目前先分离聊天

当任何聊天仍附加到项目时，项目无法被删除。API 返回 409，响应体如下：

```json
{
  "error": {
    "type": "conflict_error",
    "message": "The \"claude_proj_01KGp4eZNug9ri4kE35RSppq\" project cannot be deleted as it has chats attached to it. Delete or detach all chats, and try deleting the project again."
  }
}
```

要解决此问题，请使用 `GET /v1/compliance/apps/chats?user_ids[]={user_id}&project_ids[]={project_id}` 列出项目的聊天（聊天列表端点至少需要一个 `user_ids[]` 值；通过[列出组织用户](/docs/en/manage-claude/compliance-org-data#list-organization-users)枚举 ID），使用 `DELETE /v1/compliance/apps/chats/{claude_chat_id}` 删除每个聊天（或从 claude.ai 中将其移出项目），然后重试项目删除。

## 后续步骤

<CardGroup cols={2}>
  <Card title="API 参考文档" href="/docs/en/api/compliance/apps">
    每个聊天、文件、项目和制品端点的完整请求和响应架构。
  </Card>
  <Card title="列出组织、用户、角色和群组" href="/docs/en/manage-claude/compliance-org-data">
    枚举与本页中聊天和项目关联的人员和团队。
  </Card>
</CardGroup>