이 페이지의 엔드포인트는 claude.ai 콘텐츠를 검색하고 삭제하며, Compliance API에 대한 셀프 서비스 액세스 권한이 있는 Claude Enterprise 조직에서만 사용할 수 있습니다. Compliance API 설정을 참조하세요.
필수 범위: Compliance Access Key의 read:compliance_user_data. 삭제 엔드포인트에는 delete:compliance_user_data도 필요합니다.
전제 조건: 조직 전체의 채팅을 나열하는 데는 필요 없습니다. 채팅 목록을 특정 사용자로 필터링하려면 조직 사용자 나열에서 얻은 사용자 ID가 필요합니다. 이 페이지의 다른 엔드포인트는 리소스 ID를 직접 받습니다.
이 페이지의 엔드포인트는 claude.ai 채팅 콘텐츠, 파일 업로드, 프로젝트 및 프로젝트 첨부 파일을 컴플라이언스 검토자에게 노출합니다. 이들은 "eDiscovery"(전자 증거 개시) 내보내기, "data loss prevention"(데이터 손실 방지), 즉 DLP 시행 및 계정 삭제 대응을 지원합니다. 콘텐츠는 조직의 보존 정책이 허용하는 기간 동안 보존됩니다. 사용자가 claude.ai에서 소프트 삭제한 채팅은 deleted_at이 채워진 상태로 Compliance API를 통해 계속 표시됩니다. 하드 삭제된 채팅(Compliance API 자체를 통해, 또는 조직의 보존 기간이 만료된 후)은 검색할 수 없습니다.
두 범위 모두 claude.ai에서 생성된 Compliance Access Key(sk-ant-api01-...)에만 부여됩니다. 키를 프로비저닝하려면 Compliance API 설정을 참조하세요. read:compliance_user_data 범위는 검색을 담당하며, delete:compliance_user_data는 삭제 엔드포인트에만 필요합니다. 채팅, 파일, 프로젝트 및 첨부 파일 엔드포인트는 Admin API 키(sk-ant-admin01-...)에서 사용할 수 없습니다. Admin API 키로 인증된 호출은 403 Forbidden을 반환합니다.
이 페이지의 엔드포인트는 두 가지 방식으로 페이지네이션합니다. 전체 참조는 결과 페이지네이션을 참조하세요. 각 섹션에서 어떤 방식이 적용되는지 설명합니다.
채팅 나열을 사용하여 채팅 메타데이터를 페이지 단위로 탐색한 다음, 채팅 메시지 가져오기를 사용하여 하나의 채팅에 대한 전체 메시지 콘텐츠를 가져옵니다.
채팅 목록 엔드포인트는 기본적으로 조직 전체 범위를 사용합니다. user_ids[]를 생략하면 상위 조직 아래의 모든 채팅이 포함됩니다. order_by=updated_at을 추가하면 마지막 업데이트 시간으로 정렬됩니다. 이 조합은 채팅을 내보내고 내보내기를 최신 상태로 유지하는 데 권장되는 방법입니다. 하나의 페이지네이션 루프가 사용자를 먼저 열거하지 않고도 모든 사용자에 대한 새 채팅과 수정된 채팅을 모두 가져오기 때문입니다. 다음 요청은 지정된 날짜 이후에 업데이트된 채팅을 나열합니다.
curl --fail-with-body -sS -G \
"https://api.anthropic.com/v1/compliance/apps/chats" \
--header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
--data-urlencode "order_by=updated_at" \
--data-urlencode "updated_at.gte=2025-06-01T00:00:00Z" \
--data-urlencode "limit=100"{
"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-5",
"organization_uuid": "91012d09-e48b-438e-a489-1bebfd8fa6f9",
"project_id": "claude_proj_01KGp4eZNug9ri4kE35RSppq",
"user": {
"id": "user_01XyDMpzjS89pFZXqSFUBDr6",
"email_address": "[email protected]"
}
}
],
"has_more": true,
"first_id": "eyJrIjogInVwZGF0ZWRfYXQiLCAidCI6ICIyMDI2LTA0LTEwVDA5OjEwOjExKzAwOjAwIiwgImlkIjogImFiY2RlZjAxLS4uLiJ9",
"last_id": "eyJrIjogInVwZGF0ZWRfYXQiLCAidCI6ICIyMDI2LTA0LTEwVDA5OjEwOjExKzAwOjAwIiwgImlkIjogImFiY2RlZjAxLS4uLiJ9"
}결과는 order_by 필드를 기준으로 오름차순(가장 오래된 것부터)으로 정렬되며, 동일한 값은 id로 구분됩니다. 페이지네이션은 결과 페이지네이션에 설명된 표준 first_id/last_id/has_more 커서 필드를 사용합니다. 더 최신 채팅 쪽으로 앞으로 이동하려면 응답의 last_id를 다음 요청의 after_id로 전달하세요.
이 순방향 탐색은 여러 실행에 걸쳐 내보내기를 최신 상태로 유지하는 방법이기도 합니다. 마지막 페이지의 last_id를 저장하고 다음 실행에서 이를 after_id로 사용하여 재개하세요. 목록이 updated_at으로 정렬되기 때문에, 저장된 커서 이후에 변경된 채팅은 커서보다 앞에 다시 나타나므로, 각 증분 실행은 완전히 새로운 채팅과 그 이후 수정된 이전 채팅을 모두 반환합니다. 이러한 재등장을 처리하기 위해 채팅 id를 키로 하여 결과를 멱등적으로 처리하세요.
이러한 조직 전체 쿼리에는 몇 가지 제약이 적용됩니다. 커서는 불투명하며 정렬 키에 바인딩되므로, 하나의 order_by 값으로 발급된 after_id는 다른 값에서 400 오류로 거부됩니다. 시간 필터 경계도 정렬 키와 일치해야 합니다. updated_at.* 경계는 order_by=updated_at과 함께, created_at.* 경계는 기본값인 order_by=created_at과 함께 사용하세요. before_id를 사용한 역방향 페이지네이션은 지원되지 않으며, project_ids[] 필터는 사용할 수 없습니다. 전체 필터 참조는 채팅 나열을 참조하세요.
대신 목록을 특정 사용자로 범위를 지정하려면(예: 지정된 관리자에 대한 법적 보존), 1~10개의 user_ids[] 값을 전달하세요. ID는 조직 사용자 나열에서 얻을 수 있습니다. 사용자 필터링 쿼리는 항상 created_at으로 정렬되며(order_by=updated_at을 전달하면 400 오류가 반환됨) after_id와 before_id를 모두 지원합니다. project_ids[]로 필터링하는 것은 이 사용자 필터링 형식에서만 가능합니다.
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 "created_at.gte=2025-06-01T00:00:00Z" \
--data-urlencode "limit=100"목록 응답에는 채팅 메타데이터만 포함됩니다. 실제 채팅 콘텐츠, 첨부된 파일 및 인라인 아티팩트(Claude가 채팅 내에서 생성하는 구조화된 문서)를 가져오려면 각 채팅 ID에 대해 메시지 엔드포인트를 후속 호출하세요:
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"메시지 엔드포인트는 채팅의 메타데이터와 created_at으로 정렬된 chat_messages 배열을 반환합니다. limit을 생략하면 전체 메시지 집합이 하나의 응답으로 반환됩니다. 매우 긴 채팅을 페이지 단위로 탐색하려면 limit, after_id 또는 before_id를 전달하세요. 이 엔드포인트는 created_at.* 및 updated_at.* 범위 경계(gt, gte, lt, lte)와 order 매개변수(asc 또는 desc)도 허용합니다. 전체 매개변수 목록은 채팅 메시지 가져오기를 참조하세요. 사용자 메시지의 경우 created_at은 메시지가 전송된 시점이고, 어시스턴트 메시지의 경우 Claude가 메시지 생성을 완료한 시점입니다. 각 메시지에는 텍스트 콘텐츠와 함께, 존재하는 경우 업로드된 파일(일반적으로 사용자 메시지에 있음), 도구가 생성한 파일, 그리고 어시스턴트가 생성하거나 업데이트한 아티팩트(일반적으로 어시스턴트 메시지에 있음)가 포함됩니다:
{
"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-5",
"organization_uuid": "91012d09-e48b-438e-a489-1bebfd8fa6f9",
"project_id": "claude_proj_01KGp4eZNug9ri4kE35RSppq",
"user": {
"id": "user_01XyDMpzjS89pFZXqSFUBDr6",
"email_address": "[email protected]"
},
"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는 어시스턴트가 응답에서 생성하거나 업데이트한 버전 관리되는 문서(예: 코드 또는 마크다운)입니다. 아티팩트는 동일한 채팅의 여러 어시스턴트 턴에 걸쳐 수정될 수 있으며, 각 수정본은 동일한 아티팩트 id 아래에 새로운 version_id로 나타납니다. 각 항목의 id(아티팩트의 경우 version_id)를 파일 및 아티팩트 검색의 해당 콘텐츠 엔드포인트에 전달하여 다운로드하세요.
파일과 아티팩트는 독립적으로 나열되지 않고 ID로 다운로드됩니다. ID는 채팅 및 메시지 검색의 채팅 메시지 엔드포인트(각 메시지의 files, generated_files 및 artifacts 배열)에서 얻거나, 프로젝트 수준 업로드의 경우 프로젝트 첨부 파일 엔드포인트에서 얻습니다.
ID 유형과 필요한 데이터에 맞는 엔드포인트를 선택하세요. 동일한 파일 콘텐츠 엔드포인트가 채팅 파일과 프로젝트 파일을 모두 처리합니다.
| 보유한 것 | 원하는 것 | 사용할 엔드포인트 |
|---|---|---|
claude_file_* ID | 파일의 바이너리 콘텐츠 | 파일 콘텐츠 다운로드 |
claude_file_* ID | 파일의 메타데이터만 | 파일 메타데이터 가져오기 |
claude_gen_file_* ID | 도구가 생성한 파일의 바이너리 콘텐츠 | Claude가 생성한 파일 다운로드 |
claude_gen_file_* ID | 도구가 생성한 파일의 메타데이터만 | 생성된 파일 메타데이터 가져오기 |
claude_artifact_version_* ID | 하나의 아티팩트 버전의 텍스트 | 아티팩트 콘텐츠 다운로드 |
claude_artifact_version_* ID | 아티팩트 버전의 메타데이터만 | 아티팩트 메타데이터 가져오기 |
claude_proj_doc_* ID | 프로젝트 문서의 일반 텍스트 콘텐츠 | 프로젝트 문서 콘텐츠 가져오기 |
claude_proj_doc_* ID | 프로젝트 문서의 메타데이터만 | 프로젝트 문서 메타데이터 가져오기 |
파일 콘텐츠 엔드포인트는 다음 헤더와 함께 원본 업로드를 청크 바이너리 응답으로 스트리밍합니다:
Content-Disposition: attachment; filename*=utf-8''<percent-encoded filename>은 RFC 5987 확장 형식으로 원본 업로드 파일 이름을 전달합니다. 확장 형식은 비ASCII 파일 이름뿐만 아니라 모든 파일 이름에 사용됩니다.Content-Type은 업로드의 MIME 유형을 전달합니다.Content-MD5는 RFC 1864에 명시된 대로 base64로 인코딩된 파일의 MD5 다이제스트를 전달합니다.Transfer-Encoding: chunked는 항상 설정됩니다.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"-OJ 플래그는 curl이 Content-Disposition의 파일 이름(사용자가 업로드한 원본 파일 이름)으로 응답을 저장하도록 지시합니다.
아티팩트 콘텐츠 엔드포인트는 하나의 아티팩트 버전의 텍스트 본문을 반환합니다. 아티팩트의 고정 id가 아니라 어시스턴트 메시지의 artifacts 배열에 있는 항목 중 하나의 version_id를 전달하세요. 아티팩트의 각 새 버전에는 고유한 version_id가 있으며, Compliance API는 해당 버전의 정확한 바이트를 제공합니다.
프로젝트는 관련 채팅을 사용자 지정 지침, 지식 베이스 콘텐츠, 첨부된 파일 또는 텍스트 문서와 함께 묶습니다. Compliance API는 프로젝트 메타데이터, 프로젝트 세부 정보 및 프로젝트에 속한 첨부 파일 목록을 노출합니다.
프로젝트 결과는 생성 날짜 오름차순으로 정렬됩니다. 첨부 파일 결과는 created_at 오름차순으로 정렬되며, 동일한 값은 id로 구분됩니다. 프로젝트 목록 및 첨부 파일 목록 응답은 채팅과 Activity Feed에서 사용하는 first_id/last_id 커서 대신 불투명한 next_page 페이지 토큰으로 페이지네이션합니다. 다음 요청에서 토큰을 page 쿼리 매개변수로 다시 전달하세요.
프로젝트 첨부 파일은 각 항목의 type 판별자로 식별되는 두 가지 서로 다른 형태 중 하나입니다:
type이 project_file인 항목은 ID가 claude_file_로 시작하는 바이너리 업로드(PDF, 이미지, 스프레드시트)입니다. 파일 콘텐츠 다운로드로 다운로드하세요. type이 project_doc인 항목은 ID가 claude_proj_doc_로 시작하는 일반 텍스트 문서(항상 text/plain)입니다. 프로젝트 문서 콘텐츠 가져오기로 가져오세요.
첨부 파일 목록을 순회하는 소비자는 type에 따라 분기하고 각 항목에 대해 해당 콘텐츠 엔드포인트를 호출해야 합니다. 다음 요청은 첨부 파일의 한 페이지를 나열합니다. has_more가 false가 될 때까지 next_page를 page 매개변수로 다시 전달하여 페이지네이션하세요.
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"{
"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
}모든 성공적인 삭제는 영구적이며 즉시 적용됩니다. 복구 기간이 없습니다.
Compliance API는 채팅, 파일, 프로젝트 문서 및 전체 프로젝트에 대한 하드 삭제 엔드포인트를 노출합니다. 하드 삭제된 채팅은 복원할 수 없으며, 이후 목록 응답에 나타나지 않습니다(반면 claude.ai에서 소프트 삭제된 채팅은 deleted_at이 채워진 상태로 계속 나타납니다).
네 가지 엔드포인트 모두 delete:compliance_user_data 범위가 필요하며, 이는 Compliance Access Key가 생성될 때 읽기 범위와 별도로 부여됩니다.
다음 요청은 하나의 채팅을 삭제합니다. 동일한 패턴이 다른 삭제 엔드포인트에도 적용되며, URL만 변경됩니다.
# 경고: 이 작업은 채팅과 해당 채팅의 모든 메시지, 첨부된 파일을
# 영구적으로 삭제합니다. 삭제는 즉시 이루어지며 되돌릴 수 없습니다.
# 이 작업에는 `delete:compliance_user_data` 범위가 필요하며, 이 범위는
# Compliance Access Key 생성 시 `read:compliance_user_data`와 별도로 부여됩니다.
# 실행하기 전에 명시적인 승인이 있는지 확인하세요.
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"{
"id": "claude_chat_01H5CWunD7RpVJ5bHa8RCkja",
"type": "claude_chat_deleted"
}각 성공적인 삭제는 id와 type 판별자가 포함된 작은 확인 엔벨로프를 반환합니다. 채팅 엔드포인트는 claude_chat_deleted를 반환합니다. 삭제를 확인된 것으로 처리하기 전에 type 필드를 확인하세요. 다른 엔드포인트가 반환하는 정확한 type 값은 각 삭제 엔드포인트의 API 참조 페이지에 있는 응답 스키마를 참조하세요.
채팅이 프로젝트에 연결되어 있는 동안에는 프로젝트를 삭제할 수 없습니다. API는 다음 본문과 함께 409를 반환합니다:
{
"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}로 프로젝트의 채팅을 나열하고(project_ids[] 필터에는 최소 하나의 user_ids[] 값이 필요합니다. 조직 사용자 나열을 통해 ID를 열거하세요), DELETE /v1/compliance/apps/chats/{claude_chat_id}로 각 채팅을 삭제하거나(또는 claude.ai에서 프로젝트 밖으로 이동), 그런 다음 프로젝트 삭제를 다시 시도하세요.
모든 채팅, 파일, 프로젝트 및 아티팩트 엔드포인트에 대한 전체 요청 및 응답 스키마입니다.
이 페이지의 채팅 및 프로젝트와 연결된 사람과 팀을 열거합니다.
Was this page helpful?