Repository Public
1---2title: Apps3url: https://platform.claude.com/docs/en/api/compliance/apps4---56# Apps78## Apps › Chats910### List chats1112**GET** `/v1/compliance/apps/chats`1314Lists chat metadata with filtering capabilities for targeted15compliance review. Results are sorted chronologically (time ascending)16by the `order_by` key, with ties broken by id.1718**Deprecation notice:** Combining `user_ids[]` with any `updated_at.*`19filter is deprecated and will be rejected with HTTP 400 after202026-09-22. For incremental polling by update time, omit `user_ids[]`21and set `order_by=updated_at` with `after_id` cursor pagination —22this returns the same chats across the whole organization in a single23request stream. For per-user listing, use `created_at.*` filters (or24no time filter) with the default `order_by`. `user_ids[]` with25`order_by=updated_at` is already rejected.2627#### Query parameters2829- `after_id: optional string`3031 Pagination cursor for retrieving the next page of results. To paginate, pass the `last_id` value from the most recent response. Clients should treat this value as an opaque string and not attempt to parse or interpret its contents, as the format may change without notice.3233- `before_id: optional string`3435 Pagination cursor for retrieving the previous page of results. To paginate, pass the `first_id` value from the most recent response. Clients should treat this value as an opaque string and not attempt to parse or interpret its contents, as the format may change without notice.3637- `created_at: optional object`3839 - `gt: optional string`4041 Filter chats created after this time (RFC 3339 format)4243 format: date-time4445 - `gte: optional string`4647 Filter chats created at or after this time (RFC 3339 format)4849 format: date-time5051 - `lt: optional string`5253 Filter chats created before this time (RFC 3339 format)5455 format: date-time5657 - `lte: optional string`5859 Filter chats created at or before this time (RFC 3339 format)6061 format: date-time6263- `limit: optional number`6465 Maximum results (default: 100, max: 1000)6667 default: 100, maximum: 1000, minimum: 16869- `order_by: optional "created_at" or "updated_at"`7071 Sort key for results. `created_at` (default) sorts by chat creation time. `updated_at` sorts by last update time and is only supported for org-wide queries (omit user_ids[]). For org-wide queries, any time filter must match the sort key: `created_at.*` filters require `order_by=created_at`, and `updated_at.*` filters require `order_by=updated_at`.7273 default: created_at7475 - `"created_at"`7677 - `"updated_at"`7879- `organization_ids: optional array of string`8081 Filter by organization IDs (accepts `org_...` or organization UUID). Enumerate IDs via `GET /v1/compliance/organizations`.8283- `project_ids: optional array of string`8485 Filter by project IDs (accepts `claude_proj_...`). Enumerate IDs via `GET /v1/compliance/apps/projects`. Requires user_ids[]; not supported for org-wide queries.8687- `updated_at: optional object`8889 - `gt: optional string`9091 Filter chats updated after this time (RFC 3339 format). Combining updated_at filters with `user_ids[]` is deprecated and will be rejected after 2026-09-22; for updated_at-windowed polling, omit `user_ids[]` and use `order_by=updated_at` with `after_id` pagination.9293 format: date-time9495 - `gte: optional string`9697 Filter chats updated at or after this time (RFC 3339 format). Combining updated_at filters with `user_ids[]` is deprecated and will be rejected after 2026-09-22; for updated_at-windowed polling, omit `user_ids[]` and use `order_by=updated_at` with `after_id` pagination.9899 format: date-time100101 - `lt: optional string`102103 Filter chats updated before this time (RFC 3339 format). Combining updated_at filters with `user_ids[]` is deprecated and will be rejected after 2026-09-22; for updated_at-windowed polling, omit `user_ids[]` and use `order_by=updated_at` with `after_id` pagination.104105 format: date-time106107 - `lte: optional string`108109 Filter chats updated at or before this time (RFC 3339 format). Combining updated_at filters with `user_ids[]` is deprecated and will be rejected after 2026-09-22; for updated_at-windowed polling, omit `user_ids[]` and use `order_by=updated_at` with `after_id` pagination.110111 format: date-time112113- `user_ids: optional array of string`114115 Filter to chats created by specific users (max 10 per request). Omit for an org-wide query. Enumerate IDs via `GET /v1/compliance/organizations/{org_uuid}/users`. Deprecated combination: passing `user_ids[]` together with any `updated_at.*` filter is deprecated and will be rejected after 2026-09-22. For `updated_at`-windowed polling, omit `user_ids[]` and use `order_by=updated_at` with `after_id` pagination.116117 maxItems: 10118119#### Headers120121- `"x-api-key": optional string`122123#### Returns124125- `data: array of object`126127 List of chat metadata sorted chronologically by the request's `order_by` key (default `created_at`), tie break by id128129 - `id: string`130131 Chat ID132133 - `created_at: string`134135 Creation timestamp136137 format: date-time138139 - `deleted_at: string or null`140141 Deletion timestamp if deleted142143 format: date-time144145 - `href: string`146147 URL to view this chat in claude.ai148149 - `model: string or null`150151 Model selected for this chat (e.g. 'claude-opus-5'). May be null for legacy chats that never had a model recorded.152153 - `name: string`154155 Chat name/title156157 - `organization_uuid: string`158159 Organization UUID this chat belongs to160161 - `project_id: string or null`162163 Project ID this chat belongs to164165 - `updated_at: string`166167 Last update timestamp168169 format: date-time170171 - `user: object or null`172173 The user who created the chat.174175 Null when the API key is restricted to one organization and the creator176 is no longer a member of it (for example, after they were removed from177 it).178179 A key for the whole parent organization returns the creator's `id`180 and current `email_address` for every chat; on the list endpoint, pass181 `organization_ids[]` to keep the results to one organization. For the182 email address the creator had when the chat was created, query183 `GET /v1/compliance/activities` with `activity_types[]=claude_chat_created`184 and a `created_at` window around the chat's `created_at`, find the event185 whose `claude_chat_id` matches this chat's `id`, and read186 `actor.email_address`. These events exist only for chats created after187 compliance logging was enabled for the organization.188189 - `id: string`190191 User identifier192193 - `email_address: string`194195 User's email address196197 - `organization_id: string`198199 **Deprecated**200201 Organization ID this chat belongs to202203- `first_id: string or null`204205 Opaque pagination cursor for the first chat in the current result set. Pass as `before_id` on the next request to page backwards. Backward pagination is only supported for per-user queries (`user_ids[]` set); org-wide queries do not accept `before_id`. Clients should treat this value as an opaque string and not attempt to parse or interpret its contents, as the format may change without notice.206207- `has_more: boolean`208209 Whether more records exist beyond the current result set210211- `last_id: string or null`212213 Opaque pagination cursor for the last chat in the current result set. Pass as `after_id` on the next request to page forwards. Clients should treat this value as an opaque string and not attempt to parse or interpret its contents, as the format may change without notice.214215#### Example216217```bash218curl https://api.anthropic.com/v1/compliance/apps/chats \219 -H 'anthropic-version: 2023-06-01' \220 -H "Authorization: Bearer $ANTHROPIC_COMPLIANCE_API_KEY"221```222223##### Response (200)224225```json226{227 "data": [228 {229 "id": "claude_chat_abc123",230 "name": "Product Requirements Discussion",231 "created_at": "2025-06-07T08:09:10Z",232 "updated_at": "2025-06-07T09:10:11Z",233 "organization_id": "org_abc123",234 "organization_uuid": "abcdef01-2345-6789-abcd-ef0123456789",235 "project_id": "claude_proj_xyz789",236 "model": "claude-opus-5",237 "user": {238 "id": "user_xyz456",239 "email_address": "user@example.com"240 },241 "href": "https://claude.ai/chat/abcdef01-2345-6789-abcd-ef0123456789"242 }243 ],244 "has_more": false,245 "first_id": "eyJrIjogImNyZWF0ZWRfYXQiLCAidCI6ICIyMDI1LTA2LTA3VDA4OjA5OjEwKzAwOjAwIiwgImlkIjogImFiY2RlZjAxLTIzNDUtNjc4OS1hYmNkLWVmMDEyMzQ1Njc4OSJ9",246 "last_id": "eyJrIjogImNyZWF0ZWRfYXQiLCAidCI6ICIyMDI1LTA2LTA3VDA4OjA5OjEwKzAwOjAwIiwgImlkIjogImFiY2RlZjAxLTIzNDUtNjc4OS1hYmNkLWVmMDEyMzQ1Njc4OSJ9"247}248```249250### Delete chat251252**DELETE** `/v1/compliance/apps/chats/{claude_chat_id}`253254Permanently deletes a chat and all associated messages and255files. This is a destructive operation that cannot be undone.256257#### Path parameters258259- `claude_chat_id: string`260261 The chat ID (tagged ID, e.g., claude_chat_abc123)262263#### Headers264265- `"x-api-key": optional string`266267#### Returns268269- `type: optional "claude_chat_deleted"`270271 Constant string confirming deletion272273 default: claude_chat_deleted274275- `id: string`276277 The ID of the Claude chat that was deleted278279#### Example280281```bash282curl https://api.anthropic.com/v1/compliance/apps/chats/$CLAUDE_CHAT_ID \283 -X DELETE \284 -H 'anthropic-version: 2023-06-01' \285 -H "Authorization: Bearer $ANTHROPIC_COMPLIANCE_API_KEY"286```287288##### Response (200)289290```json291{292 "id": "claude_chat_abc123",293 "type": "claude_chat_deleted"294}295```296297## Apps › Chats › Messages298299### Get chat messages300301**GET** `/v1/compliance/apps/chats/{claude_chat_id}/messages`302303Retrieves message history and file metadata for a specific chat.304305#### Path parameters306307- `claude_chat_id: string`308309 The chat ID (tagged ID, e.g., claude_chat_abc123)310311#### Query parameters312313- `after_id: optional string`314315 Pagination cursor for retrieving the next page of results. To paginate, pass the `last_id` value from the most recent response. Clients should treat this value as an opaque string and not attempt to parse or interpret its contents, as the format may change without notice.316317- `before_id: optional string`318319 Pagination cursor for retrieving the previous page of results. To paginate, pass the `first_id` value from the most recent response. Clients should treat this value as an opaque string and not attempt to parse or interpret its contents, as the format may change without notice.320321- `created_at: optional object`322323 - `gt: optional string`324325 Filter messages created after this time (RFC 3339 format)326327 format: date-time328329 - `gte: optional string`330331 Filter messages created at or after this time (RFC 3339 format)332333 format: date-time334335 - `lt: optional string`336337 Filter messages created before this time (RFC 3339 format)338339 format: date-time340341 - `lte: optional string`342343 Filter messages created at or before this time (RFC 3339 format)344345 format: date-time346347- `limit: optional number`348349 Maximum results (max: 1000). When omitted, the full result set is returned in one response.350351 maximum: 1000, minimum: 1352353- `order: optional "asc" or "desc"`354355 Sort direction for messages within the response. `asc` (the default) returns oldest-first; `desc` returns newest-first.356357 default: asc358359 - `"asc"`360361 - `"desc"`362363- `tool_result_max_chars: optional number`364365 Maximum characters returned per tool-result text item. Items longer than this are shortened and the block's `truncated` field is set. Pass -1 to disable the limit.366367 default: 10000, minimum: -1368369- `tool_use_input_max_chars: optional number`370371 Maximum characters of JSON-encoded tool input returned per tool_use block. Inputs longer than this are shortened and the block's `truncated` field is set. Pass -1 to disable the limit.372373 default: 10000, minimum: -1374375- `updated_at: optional object`376377 - `gt: optional string`378379 Filter messages updated after this time (RFC 3339 format)380381 format: date-time382383 - `gte: optional string`384385 Filter messages updated at or after this time (RFC 3339 format)386387 format: date-time388389 - `lt: optional string`390391 Filter messages updated before this time (RFC 3339 format)392393 format: date-time394395 - `lte: optional string`396397 Filter messages updated at or before this time (RFC 3339 format)398399 format: date-time400401#### Headers402403- `"x-api-key": optional string`404405#### Returns406407- `id: string`408409 Chat ID410411- `chat_messages: array of object`412413 Array of chat messages in order of created_at414415 - `id: string`416417 Unique identifier for the message e.g. 'claude_chat_msg_abcd1234'418419 - `artifacts: array of object or null`420421 Versioned documents generated or updated by the assistant in this message. Download via `GET /v1/compliance/apps/artifacts/{artifact_version_id}/content`.422423 - `id: string`424425 Artifact ID e.g. 'claude_artifact_abc123'426427 - `artifact_type: string or null`428429 MIME-like artifact type e.g. 'application/vnd.ant.code'430431 - `title: string or null`432433 Artifact title434435 - `version_id: string`436437 Artifact version ID e.g. 'claude_artifact_version_abc123'438439 - `content: array of Text or ToolUse or ToolResult`440441 Content blocks within the message442443 - `Text object`444445 Text content block.446447 - `type: "text"`448449 default: text450451 - `text: string`452453 Text content from human or assistant454455 - `thinking_redacted: boolean`456457 True when content enclosed in the assistant's internal-reasoning tags (or the tag markup itself) was removed from `text` during export. Removal never occurs with this field false. Always false on human messages, whose text is exported verbatim.458459 default: false460461 - `truncated: boolean`462463 True when `text` was shortened by the server's fixed per-string bound (1 MiB). Always false on chat text blocks.464465 default: false466467 - `ToolUse object`468469 Tool invocation requested by the assistant.470471 - `type: "tool_use"`472473 default: tool_use474475 - `id: string or null`476477 Tool-use ID, e.g. 'toolu_01AbC...'478479 - `input: string`480481 Arguments passed to the tool, as a JSON-encoded string. May be shortened — see the `truncated` field482483 - `integration_name: string or null`484485 Name of the integration that provides this tool, when applicable486487 - `mcp_server_url: string or null`488489 Base URL (scheme, host, and path only) of the MCP server that provides this tool, when applicable490491 - `name: string`492493 Name of the tool invoked494495 - `truncated: boolean`496497 True when `input` was shortened. Pass the endpoint's tool-use input max parameter as -1 to request full content, subject to any server-side maximum the endpoint enforces.498499 default: false500501 - `ToolResult object`502503 Result returned by a tool invocation.504505 - `type: "tool_result"`506507 default: tool_result508509 - `content: array of object`510511 Text content returned by the tool. Generated files are surfaced via the message's `generated_files` list; other non-text item types (including images and links) are omitted.512513 - `type: "text"`514515 default: text516517 - `text: string`518519 Text returned by the tool520521 - `integration_name: string or null`522523 Name of the integration that provides this tool, when applicable524525 - `is_error: boolean`526527 True when the tool reported an error528529 - `mcp_server_url: string or null`530531 Base URL (scheme, host, and path only) of the MCP server that provides this tool, when applicable532533 - `name: string`534535 Name of the tool that produced this result536537 - `tool_use_id: string or null`538539 ID of the tool_use block this result responds to540541 - `truncated: boolean`542543 True when one or more text items in `content` were shortened. Pass the endpoint's tool-result max parameter as -1 to request full content, subject to any server-side maximum the endpoint enforces.544545 default: false546547 - `created_at: string`548549 Message creation timestamp - For human: when they sent the message, For assistant: when it completed the last content block550551 format: date-time552553 - `files: array of object or null`554555 Binary file attachments uploaded by the user. Download via `GET /v1/compliance/apps/chats/files/{claude_file_id}/content`.556557 - `id: string`558559 File ID560561 - `created_at: string`562563 File creation timestamp564565 format: date-time566567 - `filename: string`568569 Display name of the file570571 - `md5: string or null`572573 Lowercase hex MD5 of the file's preferred downloadable variant, as recorded at upload time. Null when no stored hash is available.574575 - `mime_type: string or null`576577 MIME type of the file's preferred downloadable variant (e.g. 'application/pdf')578579 - `size_bytes: number or null`580581 Size in bytes of the file's preferred downloadable variant, if known. Null for older files uploaded before size was recorded.582583 - `generated_files: array of object or null`584585 Downloadable files the assistant created via tool use (e.g. PDF, spreadsheet, slide deck). Distinct from `files`, which are uploads attached to the message. Download via `GET /v1/compliance/apps/chats/generated-files/{claude_gen_file_id}/content`.586587 - `id: string`588589 Opaque generated-file id, e.g. 'claude_gen_file_abc123'. Treat as an opaque string; the encoding may change without notice.590591 - `filename: string`592593 Display name of the generated file594595 - `md5: string or null`596597 Lowercase hex MD5 of the generated file, when available. Null when no stored hash is available.598599 - `mime_type: string or null`600601 MIME type reported by the tool that produced the file602603 - `size_bytes: number or null`604605 Size in bytes of the generated file, when available. Null when the file has expired or size is not recorded.606607 - `role: "assistant" or "user"`608609 Message sender (user or assistant)610611 - `"assistant"`612613 - `"user"`614615- `created_at: string`616617 Creation timestamp618619 format: date-time620621- `deleted_at: string or null`622623 Deletion timestamp if deleted624625 format: date-time626627- `first_id: string or null`628629 Opaque pagination cursor for the first message in the current result set. Pass as `before_id` on the next request to page backwards. Clients should treat this value as an opaque string and not attempt to parse or interpret its contents, as the format may change without notice.630631- `has_more: boolean`632633 Whether more chat messages exist beyond the current result set. Use `last_id` as `after_id` in a follow-up request to page forward.634635 default: false636637- `href: string`638639 URL to view this chat in claude.ai640641- `last_id: string or null`642643 Opaque pagination cursor for the last message in the current result set. Pass as `after_id` on the next request to page forwards. Clients should treat this value as an opaque string and not attempt to parse or interpret its contents, as the format may change without notice.644645- `model: string or null`646647 Model selected for this chat (e.g. 'claude-opus-5'). May be null for legacy chats that never had a model recorded.648649- `name: string`650651 Chat name652653- `organization_uuid: string`654655 Organization UUID this chat belongs to656657- `project_id: string or null`658659 Project ID this chat belongs to660661- `updated_at: string`662663 Last update timestamp664665 format: date-time666667- `user: object or null`668669 The user who created the chat.670671 Null when the API key is restricted to one organization and the creator672 is no longer a member of it (for example, after they were removed from673 it).674675 A key for the whole parent organization returns the creator's `id`676 and current `email_address` for every chat; on the list endpoint, pass677 `organization_ids[]` to keep the results to one organization. For the678 email address the creator had when the chat was created, query679 `GET /v1/compliance/activities` with `activity_types[]=claude_chat_created`680 and a `created_at` window around the chat's `created_at`, find the event681 whose `claude_chat_id` matches this chat's `id`, and read682 `actor.email_address`. These events exist only for chats created after683 compliance logging was enabled for the organization.684685 - `id: string`686687 User identifier688689 - `email_address: string`690691 User's email address692693- `organization_id: string`694695 **Deprecated**696697 Organization ID this chat belongs to698699#### Example700701```bash702curl https://api.anthropic.com/v1/compliance/apps/chats/$CLAUDE_CHAT_ID/messages \703 -H 'anthropic-version: 2023-06-01' \704 -H "Authorization: Bearer $ANTHROPIC_COMPLIANCE_API_KEY"705```706707##### Response (200)708709```json710{711 "id": "claude_chat_abc123",712 "name": "Product Requirements Discussion",713 "created_at": "2025-06-07T08:09:10Z",714 "updated_at": "2025-06-07T08:09:11Z",715 "organization_id": "org_abc123",716 "organization_uuid": "abcdef01-2345-6789-abcd-ef0123456789",717 "project_id": "claude_proj_xyz789",718 "model": "claude-opus-5",719 "user": {720 "id": "user_xyz456",721 "email_address": "user@example.com"722 },723 "href": "https://claude.ai/chat/abcdef01-2345-6789-abcd-ef0123456789",724 "chat_messages": [725 {726 "id": "claude_chat_msg_abc123",727 "role": "user",728 "created_at": "2025-06-07T08:09:10Z",729 "content": [730 {731 "type": "text",732 "text": "Can you help me draft requirements for our new dashboard feature?"733 }734 ],735 "files": [736 {737 "id": "claude_file_xyz789",738 "filename": "dashboard_mockup_v1.pdf",739 "mime_type": "application/pdf",740 "size_bytes": 12345,741 "md5": "5d41402abc4b2a76b9719d911017c592",742 "created_at": "2025-06-07T08:09:10Z"743 }744 ]745 },746 {747 "id": "claude_chat_msg_def456",748 "role": "assistant",749 "created_at": "2025-06-07T08:09:11Z",750 "content": [751 {752 "type": "text",753 "text": "I'd be happy to help you draft requirements for your dashboard feature..."754 }755 ],756 "artifacts": [757 {758 "id": "claude_artifact_abc123",759 "version_id": "claude_artifact_version_xyz789",760 "title": "Dashboard Requirements Draft",761 "artifact_type": "text/markdown"762 }763 ]764 }765 ],766 "has_more": false,767 "first_id": "eyJtc2dfdXVpZCI6ICIwZjcwYjA2Ni0uLi4ifQ==",768 "last_id": "eyJtc2dfdXVpZCI6ICJhNGUwYjE3Mi0uLi4ifQ=="769}770```771772## Apps › Chats › Files773774### Get file metadata775776**GET** `/v1/compliance/apps/chats/files/{claude_file_id}`777778Retrieves metadata for a file referenced in chat messages, without779downloading the file content. Use the sibling `/content` endpoint to780download the bytes.781782#### Path parameters783784- `claude_file_id: string`785786 The file ID (tagged ID, e.g., claude_file_abc123)787788#### Headers789790- `"x-api-key": optional string`791792#### Returns793794- `id: string`795796 File ID797798- `claude_chat_ids: array of string`799800 Chats this file is attached to. A file can be referenced by messages across multiple chats.801802- `created_at: string`803804 File creation timestamp805806 format: date-time807808- `filename: string or null`809810 Display name of the file, if set811812- `md5: string or null`813814 Lowercase hex MD5 of the file's preferred downloadable variant, as recorded at upload time. Null when no stored hash is available. The sibling `/content` endpoint also sets a `Content-MD5` header (base64 per RFC 1864) computed over the exact served bytes; when the two disagree, the header is authoritative.815816- `message_ids: array of string`817818 Chat message IDs this file is attached to. A file can be referenced by multiple messages.819820- `mime_type: string or null`821822 MIME type of the file's preferred downloadable variant (e.g. 'application/pdf'). May be null for files with no downloadable content (e.g. code-interpreter outputs).823824- `size_bytes: number or null`825826 Size in bytes of the file's preferred downloadable variant, if known827828#### Example829830```bash831curl https://api.anthropic.com/v1/compliance/apps/chats/files/$CLAUDE_FILE_ID \832 -H 'anthropic-version: 2023-06-01' \833 -H "Authorization: Bearer $ANTHROPIC_COMPLIANCE_API_KEY"834```835836##### Response (200)837838```json839{840 "id": "claude_file_xyz789",841 "filename": "quarterly_report.pdf",842 "mime_type": "application/pdf",843 "size_bytes": 1048576,844 "md5": "5d41402abc4b2a76b9719d911017c592",845 "created_at": "2024-01-15T10:30:00Z",846 "message_ids": [847 "claude_chat_msg_abc123"848 ],849 "claude_chat_ids": [850 "claude_chat_def456"851 ]852}853```854855### Delete file856857**DELETE** `/v1/compliance/apps/chats/files/{claude_file_id}`858859Permanently deletes a specific file. This is a destructive860operation that cannot be undone.861862#### Path parameters863864- `claude_file_id: string`865866 The file ID (tagged ID, e.g., claude_file_abc123)867868#### Headers869870- `"x-api-key": optional string`871872#### Returns873874- `type: optional "claude_file_deleted"`875876 Constant string confirming deletion877878 default: claude_file_deleted879880- `id: string`881882 The ID of the file that was deleted883884#### Example885886```bash887curl https://api.anthropic.com/v1/compliance/apps/chats/files/$CLAUDE_FILE_ID \888 -X DELETE \889 -H 'anthropic-version: 2023-06-01' \890 -H "Authorization: Bearer $ANTHROPIC_COMPLIANCE_API_KEY"891```892893##### Response (200)894895```json896{897 "id": "claude_file_xyz789",898 "type": "claude_file_deleted"899}900```901902### Download file content903904**GET** `/v1/compliance/apps/chats/files/{claude_file_id}/content`905906Downloads the binary content of a file referenced in chat messages.907908#### Path parameters909910- `claude_file_id: string`911912 The file ID (tagged ID, e.g., claude_file_abc123)913914#### Headers915916- `"x-api-key": optional string`917918#### Example919920```bash921curl https://api.anthropic.com/v1/compliance/apps/chats/files/$CLAUDE_FILE_ID/content \922 -H 'anthropic-version: 2023-06-01' \923 -H "Authorization: Bearer $ANTHROPIC_COMPLIANCE_API_KEY"924```925926## Apps › Chats › Generated Files927928### Get Claude-generated file metadata929930**GET** `/v1/compliance/apps/chats/generated-files/{claude_gen_file_id}`931932Returns metadata for a file the assistant created via tool use.933934Use the sibling `/content` endpoint to download the bytes.935936#### Path parameters937938- `claude_gen_file_id: string`939940 The generated-file id (e.g., 'claude_gen_file_abc123') as returned in `chat_messages[].generated_files[].id` from GET /apps/chats/{claude_chat_id}/messages.941942#### Headers943944- `"x-api-key": optional string`945946#### Returns947948- `id: string`949950 Opaque generated-file id, e.g. 'claude_gen_file_abc123'.951952- `claude_chat_id: string`953954 The chat this generated file belongs to955956- `created_at: string or null`957958 File creation timestamp, when available959960 format: date-time961962- `filename: string`963964 Display name of the generated file965966- `md5: string or null`967968 Lowercase hex MD5 of the stored file. Null when no stored hash is available. The sibling `/content` endpoint also sets a `Content-MD5` header (base64 per RFC 1864) computed over the exact served bytes.969970- `mime_type: string or null`971972 MIME type of the stored file, when available973974- `size_bytes: number or null`975976 Size in bytes of the stored file, when available977978#### Example979980```bash981curl https://api.anthropic.com/v1/compliance/apps/chats/generated-files/$CLAUDE_GEN_FILE_ID \982 -H 'anthropic-version: 2023-06-01' \983 -H "Authorization: Bearer $ANTHROPIC_COMPLIANCE_API_KEY"984```985986##### Response (200)987988```json989{990 "id": "id",991 "claude_chat_id": "claude_chat_id",992 "created_at": "2019-12-27T18:11:19.117Z",993 "filename": "filename",994 "md5": "md5",995 "mime_type": "mime_type",996 "size_bytes": 0997}998```9991000### Download a Claude-generated file10011002**GET** `/v1/compliance/apps/chats/generated-files/{claude_gen_file_id}/content`10031004Downloads the binary content of a file the assistant created via tool use.10051006#### Path parameters10071008- `claude_gen_file_id: string`10091010 The generated-file id (e.g., 'claude_gen_file_abc123') as returned in `chat_messages[].generated_files[].id` from GET /apps/chats/{claude_chat_id}/messages.10111012#### Headers10131014- `"x-api-key": optional string`10151016#### Example10171018```bash1019curl https://api.anthropic.com/v1/compliance/apps/chats/generated-files/$CLAUDE_GEN_FILE_ID/content \1020 -H 'anthropic-version: 2023-06-01' \1021 -H "Authorization: Bearer $ANTHROPIC_COMPLIANCE_API_KEY"1022```10231024## Apps › Projects10251026### List projects10271028**GET** `/v1/compliance/apps/projects`10291030Lists project metadata with filtering capabilities. Results1031are sorted chronologically (time ascending) by created_at.10321033#### Query parameters10341035- `created_at: optional object`10361037 - `gt: optional string`10381039 Filter projects created after this time (RFC 3339 format)10401041 format: date-time10421043 - `gte: optional string`10441045 Filter projects created at or after this time (RFC 3339 format)10461047 format: date-time10481049 - `lt: optional string`10501051 Filter projects created before this time (RFC 3339 format)10521053 format: date-time10541055 - `lte: optional string`10561057 Filter projects created at or before this time (RFC 3339 format)10581059 format: date-time10601061- `limit: optional number`10621063 Maximum results (default: 20, max: 100)10641065 default: 20, maximum: 100, minimum: 110661067- `organization_ids: optional array of string`10681069 Filter by organization IDs (accepts `org_...` or organization UUID). Enumerate IDs via `GET /v1/compliance/organizations`.10701071- `page: optional string`10721073 Opaque pagination token from a previous response's `next_page` field. Pass this to retrieve the next page of results. Clients should treat this value as an opaque string and not attempt to parse or interpret its contents, as the format may change without notice.10741075- `updated_at: optional object`10761077 - `gt: optional string`10781079 Filter projects updated after this time (RFC 3339 format)10801081 format: date-time10821083 - `gte: optional string`10841085 Filter projects updated at or after this time (RFC 3339 format)10861087 format: date-time10881089 - `lt: optional string`10901091 Filter projects updated before this time (RFC 3339 format)10921093 format: date-time10941095 - `lte: optional string`10961097 Filter projects updated at or before this time (RFC 3339 format)10981099 format: date-time11001101- `user_ids: optional array of string`11021103 Filter by user IDs. Enumerate IDs via `GET /v1/compliance/organizations/{org_uuid}/users`.11041105#### Headers11061107- `"x-api-key": optional string`11081109#### Returns11101111- `data: array of object`11121113 List of projects sorted by creation date ascending11141115 - `id: string`11161117 Project identifier (tagged ID)11181119 - `created_at: string`11201121 Project creation timestamp11221123 format: date-time11241125 - `deleted_at: string or null`11261127 Timestamp when the project was deleted by an end user, or null otherwise11281129 format: date-time11301131 - `is_private: boolean`11321133 If false, the project is visible to all organization members; if true the project is accessible only to the creator and specified collaborators11341135 - `name: string`11361137 Project name11381139 - `organization_uuid: string`11401141 Organization UUID this project belongs to11421143 - `updated_at: string`11441145 Project last update timestamp11461147 format: date-time11481149 - `user: object or null`11501151 The user who created a project or project document.11521153 Fields that reference this type are null when the creator's account has1154 been deleted or the creator is no longer a member of an organization the1155 key may read.11561157 - `id: string`11581159 User identifier (tagged ID)11601161 - `email_address: string`11621163 User's email address11641165 - `organization_id: string`11661167 **Deprecated**11681169 Organization identifier (tagged ID)11701171- `has_more: boolean`11721173 Whether more records exist beyond the current result set11741175- `next_page: string or null`11761177 Token to retrieve the next page. Use this as the 'page' parameter in your next request11781179#### Example11801181```bash1182curl https://api.anthropic.com/v1/compliance/apps/projects \1183 -H 'anthropic-version: 2023-06-01' \1184 -H "Authorization: Bearer $ANTHROPIC_COMPLIANCE_API_KEY"1185```11861187##### Response (200)11881189```json1190{1191 "data": [1192 {1193 "id": "claude_proj_abc123",1194 "name": "Q4 Product Planning",1195 "created_at": "2025-06-01T10:00:00Z",1196 "updated_at": "2025-06-15T14:30:00Z",1197 "is_private": true,1198 "organization_id": "org_abc123",1199 "organization_uuid": "abc12345-6789-0abc-def0-123456789abc",1200 "user": {1201 "id": "user_xyz456",1202 "email_address": "user@example.com"1203 }1204 }1205 ],1206 "has_more": true,1207 "next_page": "page_eyJjcmVhdGVkX2F0IjoiMjAyNS0wNi0wMVQxMDowMDowMFoiLCJ1dWlkIjoiYWJjMTIzIn0="1208}1209```12101211### Get project details12121213**GET** `/v1/compliance/apps/projects/{project_id}`12141215Get detailed information for a specific project.12161217#### Path parameters12181219- `project_id: string`12201221 The project ID (tagged ID, e.g., claude_proj_abc123)12221223#### Headers12241225- `"x-api-key": optional string`12261227#### Returns12281229- `id: string`12301231 Project identifier (tagged ID)12321233- `attachments_count: number`12341235 Number of attachments contained within this project12361237- `chats_count: number`12381239 Number of chats contained within this project12401241- `created_at: string`12421243 Project creation timestamp12441245 format: date-time12461247- `deleted_at: string or null`12481249 Timestamp when the project was deleted by an end user, or null otherwise12501251 format: date-time12521253- `description: string`12541255 Project description12561257- `instructions: string`12581259 Project's custom instructions / prompt12601261- `is_private: boolean`12621263 If false, the project is visible to all organization members; if true the project is accessible only to the creator and specified collaborators12641265- `name: string`12661267 Project name12681269- `organization_uuid: string`12701271 Organization UUID this project belongs to12721273- `updated_at: string`12741275 Project last update timestamp12761277 format: date-time12781279- `user: object or null`12801281 The user who created a project or project document.12821283 Fields that reference this type are null when the creator's account has1284 been deleted or the creator is no longer a member of an organization the1285 key may read.12861287 - `id: string`12881289 User identifier (tagged ID)12901291 - `email_address: string`12921293 User's email address12941295- `organization_id: string`12961297 **Deprecated**12981299 Organization identifier (tagged ID)13001301#### Example13021303```bash1304curl https://api.anthropic.com/v1/compliance/apps/projects/$PROJECT_ID \1305 -H 'anthropic-version: 2023-06-01' \1306 -H "Authorization: Bearer $ANTHROPIC_COMPLIANCE_API_KEY"1307```13081309##### Response (200)13101311```json1312{1313 "id": "claude_proj_01Nm7PqRsTuVwXyZaBcDeFgH",1314 "attachments_count": 3,1315 "chats_count": 14,1316 "created_at": "2025-03-12T18:22:41.123456Z",1317 "deleted_at": "2019-12-27T18:11:19.117Z",1318 "description": "Planning and research for the Q3 launch",1319 "instructions": "Focus on concise, actionable answers.",1320 "is_private": true,1321 "name": "Q3 Product Launch",1322 "organization_id": "org_015eofRkKpogX7uDKUyvBTph",1323 "organization_uuid": "a1b2c3d4-e5f6-4789-a012-3456789abcde",1324 "updated_at": "2025-03-14T09:05:17.456789Z",1325 "user": {1326 "id": "user_01WCz1FkmYMm4gnmykNKUu3Q",1327 "email_address": "jane.doe@example.com"1328 }1329}1330```13311332### Delete project13331334**DELETE** `/v1/compliance/apps/projects/{project_id}`13351336Delete a project for compliance purposes.13371338Hard-deletes the project and all its associated data including:13391340- All project documents and files1341- All role assignments1342- Knowledge base (if RAG is enabled)1343- Sync sources13441345Project must have no attached chats - returns 409 if chats exist.13461347#### Path parameters13481349- `project_id: string`13501351 The project ID (tagged ID, e.g., claude_proj_abc123)13521353#### Headers13541355- `"x-api-key": optional string`13561357#### Returns13581359- `type: optional "claude_project_deleted"`13601361 Constant string confirming deletion.13621363 default: claude_project_deleted13641365- `id: string`13661367 The ID of the Claude project that was deleted13681369#### Example13701371```bash1372curl https://api.anthropic.com/v1/compliance/apps/projects/$PROJECT_ID \1373 -X DELETE \1374 -H 'anthropic-version: 2023-06-01' \1375 -H "Authorization: Bearer $ANTHROPIC_COMPLIANCE_API_KEY"1376```13771378##### Response (200)13791380```json1381{1382 "id": "id",1383 "type": "claude_project_deleted"1384}1385```13861387## Apps › Projects › Attachments13881389### List project attachments13901391**GET** `/v1/compliance/apps/projects/{project_id}/attachments`13921393List files and documents attached to a project.13941395List files and project documents attached to the project referenced by project_id.1396This includes the IDs of attached files, and attached project documents.13971398The raw binary content of attached files can be downloaded using the1399GET /v1/compliance/apps/chats/files/{claude_file_id}/content endpoint.14001401The text content of attached project documents can be fetched using the1402GET /v1/compliance/apps/projects/documents/{claude_proj_doc_id} endpoint.14031404#### Path parameters14051406- `project_id: string`14071408 The project ID (tagged ID, e.g., claude_proj_abc123)14091410#### Query parameters14111412- `limit: optional number`14131414 Maximum results (default: 20, max: 100)14151416 default: 20, maximum: 100, minimum: 114171418- `page: optional string`14191420 Opaque pagination token from a previous response's `next_page` field. Pass this to retrieve the next page of results. Clients should treat this value as an opaque string and not attempt to parse or interpret its contents, as the format may change without notice.14211422#### Headers14231424- `"x-api-key": optional string`14251426#### Returns14271428- `data: array of ComplianceProjectFileReference or ComplianceProjectDocReference`14291430 List of attachments sorted chronologically by created_at, tie break by id14311432 - `ComplianceProjectFileReference object`14331434 File attachment reference for compliance responses.14351436 - `type: "project_file"`14371438 Discriminator marking this as a binary file14391440 default: project_file14411442 - `id: string`14431444 File identifier (e.g., 'claude_file_abcd')14451446 - `created_at: string`14471448 Creation timestamp (RFC 3339 format)14491450 format: date-time14511452 - `filename: string`14531454 Display name of the file (e.g., 'document.pdf')14551456 - `md5: string or null`14571458 Lowercase hex MD5 of the file's preferred downloadable variant, when recorded. Null otherwise. Use the per-file `/metadata` endpoint for the authoritative value.14591460 - `mime_type: string`14611462 MIME type of the file's preferred downloadable variant when one is recorded, else 'application/octet-stream'. Use the per-file `/metadata` endpoint for the authoritative value.14631464 - `size_bytes: number or null`14651466 Size in bytes of the file's preferred downloadable variant, when recorded. Null otherwise. Use the per-file `/metadata` endpoint for the authoritative value.14671468 - `ComplianceProjectDocReference object`14691470 Project document attachment reference for compliance responses.14711472 - `type: "project_doc"`14731474 Discriminator marking this as a plain text document14751476 default: project_doc14771478 - `id: string`14791480 Project document identifier (e.g., 'claude_proj_doc_abcd')14811482 - `created_at: string`14831484 Creation timestamp (RFC 3339 format)14851486 format: date-time14871488 - `filename: string`14891490 Display name of the document (e.g., 'document.txt')14911492 - `mime_type: "text/plain"`14931494 MIME type of the project document, always set to plain text14951496 default: text/plain14971498 - `updated_at: string or null`14991500 Last-modified timestamp of the document. Reserved for future use — currently always null.15011502 format: date-time15031504- `has_more: boolean`15051506 Whether more records exist beyond the current result set15071508- `next_page: string or null`15091510 To get the next page, use the 'next_page' from the current response as the 'page' in your next request15111512#### Example15131514```bash1515curl https://api.anthropic.com/v1/compliance/apps/projects/$PROJECT_ID/attachments \1516 -H 'anthropic-version: 2023-06-01' \1517 -H "Authorization: Bearer $ANTHROPIC_COMPLIANCE_API_KEY"1518```15191520##### Response (200)15211522```json1523{1524 "data": [1525 {1526 "id": "id",1527 "created_at": "2019-12-27T18:11:19.117Z",1528 "filename": "filename",1529 "md5": "md5",1530 "mime_type": "mime_type",1531 "size_bytes": 0,1532 "type": "project_file"1533 }1534 ],1535 "has_more": true,1536 "next_page": "next_page"1537}1538```15391540## Apps › Projects › Collaborators15411542### List project collaborators15431544**GET** `/v1/compliance/apps/projects/{project_id}/collaborators`15451546List the users, groups, and organization-wide grants on a project.15471548Each entry represents one active role assignment on the project. Principals1549are returned as a discriminated union on `type` — an individual user, an1550RBAC group, the whole organization, or all holders of an organization-level1551role.15521553#### Path parameters15541555- `project_id: string`15561557 The project ID (tagged ID, e.g., claude_proj_abc123)15581559#### Query parameters15601561- `limit: optional number`15621563 Maximum results (default: 20, max: 100)15641565 default: 20, maximum: 100, minimum: 115661567- `page: optional string`15681569 Opaque pagination token from a previous response's `next_page` field. Pass this to retrieve the next page of results. Clients should treat this value as an opaque string and not attempt to parse or interpret its contents, as the format may change without notice.15701571#### Headers15721573- `"x-api-key": optional string`15741575#### Returns15761577- `data: array of ComplianceProjectUserCollaborator or ComplianceProjectGroupCollaborator or ComplianceProjectOrganizationCollaborator or ComplianceProjectOrganizationRoleCollaborator`15781579 List of collaborators sorted chronologically by granted_at, tie break by the underlying role-assignment UUID15801581 - `ComplianceProjectUserCollaborator object`15821583 An individual user granted a role on a project.15841585 - `type: "user"`15861587 Discriminator marking this as an individual user collaborator15881589 default: user15901591 - `granted_at: string`15921593 When this collaborator was granted access (RFC 3339 format)15941595 format: date-time15961597 - `role: "admin" or "editor" or "owner" or "viewer"`15981599 Role granted on the project16001601 - `"admin"`16021603 - `"editor"`16041605 - `"owner"`16061607 - `"viewer"`16081609 - `user_id: string or null`16101611 Identifier of the user granted access (tagged ID), or null if their account has since been deleted16121613 - `ComplianceProjectGroupCollaborator object`16141615 An RBAC group granted a role on a project.16161617 - `type: "group"`16181619 Discriminator marking this as a group collaborator16201621 default: group16221623 - `granted_at: string`16241625 When this collaborator was granted access (RFC 3339 format)16261627 format: date-time16281629 - `group_id: string`16301631 Identifier of the group granted access (tagged ID)16321633 - `role: "admin" or "editor" or "owner" or "viewer"`16341635 Role granted on the project16361637 - `"admin"`16381639 - `"editor"`16401641 - `"owner"`16421643 - `"viewer"`16441645 - `ComplianceProjectOrganizationCollaborator object`16461647 An entire organization granted a role on a project.16481649 - `type: "organization"`16501651 Discriminator marking this as an organization-wide grant16521653 default: organization16541655 - `granted_at: string`16561657 When this collaborator was granted access (RFC 3339 format)16581659 format: date-time16601661 - `organization_uuid: string`16621663 UUID of the organization granted access16641665 - `role: "admin" or "editor" or "owner" or "viewer"`16661667 Role granted on the project16681669 - `"admin"`16701671 - `"editor"`16721673 - `"owner"`16741675 - `"viewer"`16761677 - `ComplianceProjectOrganizationRoleCollaborator object`16781679 All holders of an organization-level role granted a role on a project.16801681 - `type: "organization_role"`16821683 Discriminator marking this as a grant to all organization members holding a specific org-level role16841685 default: organization_role16861687 - `granted_at: string`16881689 When this collaborator was granted access (RFC 3339 format)16901691 format: date-time16921693 - `organization_role: string`16941695 The organization-level role whose holders are granted access16961697 - `role: "admin" or "editor" or "owner" or "viewer"`16981699 Role granted on the project17001701 - `"admin"`17021703 - `"editor"`17041705 - `"owner"`17061707 - `"viewer"`17081709- `has_more: boolean`17101711 Whether more records exist beyond the current result set17121713- `next_page: string or null`17141715 To get the next page, use the 'next_page' from the current response as the 'page' in your next request17161717#### Example17181719```bash1720curl https://api.anthropic.com/v1/compliance/apps/projects/$PROJECT_ID/collaborators \1721 -H 'anthropic-version: 2023-06-01' \1722 -H "Authorization: Bearer $ANTHROPIC_COMPLIANCE_API_KEY"1723```17241725##### Response (200)17261727```json1728{1729 "data": [1730 {1731 "granted_at": "2019-12-27T18:11:19.117Z",1732 "role": "admin",1733 "type": "user",1734 "user_id": "user_id"1735 }1736 ],1737 "has_more": true,1738 "next_page": "next_page"1739}1740```17411742## Apps › Projects › Documents17431744### Get project document content17451746**GET** `/v1/compliance/apps/projects/documents/{document_id}`17471748Get detailed information for a specific project document.17491750#### Path parameters17511752- `document_id: string`17531754 The document ID (tagged ID, e.g., claude_proj_doc_abc123)17551756#### Headers17571758- `"x-api-key": optional string`17591760#### Returns17611762- `id: string`17631764 Project document identifier (tagged ID)17651766- `content: string`17671768 Document text content17691770- `created_at: string`17711772 Document creation timestamp17731774 format: date-time17751776- `filename: string`17771778 Document filename17791780- `user: object or null`17811782 The user who created a project or project document.17831784 Fields that reference this type are null when the creator's account has1785 been deleted or the creator is no longer a member of an organization the1786 key may read.17871788 - `id: string`17891790 User identifier (tagged ID)17911792 - `email_address: string`17931794 User's email address17951796#### Example17971798```bash1799curl https://api.anthropic.com/v1/compliance/apps/projects/documents/$DOCUMENT_ID \1800 -H 'anthropic-version: 2023-06-01' \1801 -H "Authorization: Bearer $ANTHROPIC_COMPLIANCE_API_KEY"1802```18031804##### Response (200)18051806```json1807{1808 "id": "claude_proj_doc_01Qr8StUvWxYzAbCdEfGhJjK",1809 "content": "# Design notes\n\n- Item one\n- Item two\n",1810 "created_at": "2025-03-12T18:22:41.123456Z",1811 "filename": "design-notes.txt",1812 "user": {1813 "id": "user_01WCz1FkmYMm4gnmykNKUu3Q",1814 "email_address": "jane.doe@example.com"1815 }1816}1817```18181819### Get project document metadata18201821**GET** `/v1/compliance/apps/projects/documents/{document_id}/metadata`18221823Returns metadata for a project document, without the content body.18241825Use the sibling `GET /v1/compliance/apps/projects/documents/{document_id}`1826endpoint to fetch the document text. The `md5` and `size_bytes`1827fields here are computed over the UTF-8 encoding of that text, so a DLP1828consumer can dedupe or match hashes without downloading every document.18291830#### Path parameters18311832- `document_id: string`18331834 The document ID (tagged ID, e.g., claude_proj_doc_abc123)18351836#### Headers18371838- `"x-api-key": optional string`18391840#### Returns18411842- `id: string`18431844 Project document identifier (tagged ID)18451846- `claude_project_id: string`18471848 The project this document belongs to18491850- `created_at: string`18511852 Document creation timestamp18531854 format: date-time18551856- `filename: string`18571858 Document filename18591860- `md5: string`18611862 Lowercase hex MD5 of the document content (UTF-8 encoded). Matches the `content` field returned by the sibling content endpoint.18631864- `mime_type: "text/plain"`18651866 MIME type of the document content, always plain text18671868 default: text/plain18691870- `size_bytes: number`18711872 Size in bytes of the document content (UTF-8 encoded)18731874- `user: object or null`18751876 The user who created a project or project document.18771878 Fields that reference this type are null when the creator's account has1879 been deleted or the creator is no longer a member of an organization the1880 key may read.18811882 - `id: string`18831884 User identifier (tagged ID)18851886 - `email_address: string`18871888 User's email address18891890#### Example18911892```bash1893curl https://api.anthropic.com/v1/compliance/apps/projects/documents/$DOCUMENT_ID/metadata \1894 -H 'anthropic-version: 2023-06-01' \1895 -H "Authorization: Bearer $ANTHROPIC_COMPLIANCE_API_KEY"1896```18971898##### Response (200)18991900```json1901{1902 "id": "id",1903 "claude_project_id": "claude_project_id",1904 "created_at": "2019-12-27T18:11:19.117Z",1905 "filename": "filename",1906 "md5": "md5",1907 "mime_type": "text/plain",1908 "size_bytes": 0,1909 "user": {1910 "id": "user_01WCz1FkmYMm4gnmykNKUu3Q",1911 "email_address": "jane.doe@example.com"1912 }1913}1914```19151916### Delete project document19171918**DELETE** `/v1/compliance/apps/projects/documents/{document_id}`19191920Delete a project document for compliance purposes.19211922Hard-deletes the project document permanently.19231924#### Path parameters19251926- `document_id: string`19271928 The document ID (tagged ID, e.g., claude_proj_doc_abc123)19291930#### Headers19311932- `"x-api-key": optional string`19331934#### Returns19351936- `type: "claude_project_document_deleted"`19371938 Constant string confirming deletion.19391940 default: claude_project_document_deleted19411942- `id: string`19431944 The ID of the project document that was deleted19451946#### Example19471948```bash1949curl https://api.anthropic.com/v1/compliance/apps/projects/documents/$DOCUMENT_ID \1950 -X DELETE \1951 -H 'anthropic-version: 2023-06-01' \1952 -H "Authorization: Bearer $ANTHROPIC_COMPLIANCE_API_KEY"1953```19541955##### Response (200)19561957```json1958{1959 "id": "id",1960 "type": "claude_project_document_deleted"1961}1962```19631964## Apps › Artifacts19651966### Get artifact metadata19671968**GET** `/v1/compliance/apps/artifacts/{artifact_version_id}`19691970Returns metadata for an artifact version, without the content body.19711972Use the sibling `/content` endpoint to fetch the artifact text. The1973`md5` and `size_bytes` fields here are computed over the UTF-81974encoding of that text, so a DLP consumer can dedupe or match hashes1975without downloading every artifact.19761977#### Path parameters19781979- `artifact_version_id: string`19801981 The artifact version ID (tagged ID, e.g., claude_artifact_version_abc123)19821983#### Headers19841985- `"x-api-key": optional string`19861987#### Returns19881989- `id: string`19901991 Artifact ID e.g. 'claude_artifact_abc123'19921993- `artifact_type: string or null`19941995 MIME-like artifact type e.g. 'application/vnd.ant.code'19961997- `claude_chat_id: string`19981999 The chat this artifact belongs to20002001- `created_at: string`20022003 Artifact version creation timestamp20042005 format: date-time20062007- `md5: string`20082009 Lowercase hex MD5 of the artifact content (UTF-8 encoded). Matches the `content` field returned by the sibling `/content` endpoint.20102011- `size_bytes: number`20122013 Size in bytes of the artifact content (UTF-8 encoded)20142015- `title: string or null`20162017 Artifact title20182019- `version_id: string`20202021 Artifact version ID e.g. 'claude_artifact_version_abc123'20222023#### Example20242025```bash2026curl https://api.anthropic.com/v1/compliance/apps/artifacts/$ARTIFACT_VERSION_ID \2027 -H 'anthropic-version: 2023-06-01' \2028 -H "Authorization: Bearer $ANTHROPIC_COMPLIANCE_API_KEY"2029```20302031##### Response (200)20322033```json2034{2035 "id": "id",2036 "artifact_type": "artifact_type",2037 "claude_chat_id": "claude_chat_id",2038 "created_at": "2019-12-27T18:11:19.117Z",2039 "md5": "md5",2040 "size_bytes": 0,2041 "title": "title",2042 "version_id": "version_id"2043}2044```20452046### Download artifact content20472048**GET** `/v1/compliance/apps/artifacts/{artifact_version_id}/content`20492050Download the content of an artifact version for compliance purposes.20512052Returns the full text content of the artifact version.20532054#### Path parameters20552056- `artifact_version_id: string`20572058 The artifact version ID (tagged ID, e.g., claude_artifact_version_abc123)20592060#### Headers20612062- `"x-api-key": optional string`20632064#### Example20652066```bash2067curl https://api.anthropic.com/v1/compliance/apps/artifacts/$ARTIFACT_VERSION_ID/content \2068 -H 'anthropic-version: 2023-06-01' \2069 -H "Authorization: Bearer $ANTHROPIC_COMPLIANCE_API_KEY"2070```20712072## Apps › Sessions › Local20732074### List local sessions20752076**GET** `/v1/compliance/apps/sessions/local`20772078List local sessions across the organizations the key may read.20792080Results are ordered by `created_at` descending. Pagination is2081forward-only via `next_page`; there is no reverse cursor.20822083#### Query parameters20842085- `created_at: optional object`20862087 - `gte: optional string`20882089 Only return sessions whose first inference call is at or after this time (RFC 3339; a UTC offset is required).20902091 format: date-time20922093 - `lt: optional string`20942095 Only return sessions whose first inference call is strictly before this time (RFC 3339; a UTC offset is required).20962097 format: date-time20982099- `limit: optional number`21002101 Maximum results (default: 100, max: 500)21022103 default: 100, maximum: 500, minimum: 121042105- `page: optional string`21062107 Opaque pagination token from a previous response's `next_page` field. Pass this to retrieve the next page of results. Clients should treat this value as an opaque string and not attempt to parse or interpret its contents, as the format may change without notice.21082109- `updated_at: optional object`21102111 - `gte: optional string`21122113 Only return sessions whose last inference call is at or after this time (RFC 3339; a UTC offset is required). Combines with `created_at.gte` / `created_at.lt`; the ordering and pagination are unchanged. Use it to poll for sessions that have been active since a previous pass — a session that becomes active later can only enter the result, never leave it.21142115 format: date-time21162117#### Headers21182119- `"x-api-key": optional string`21202121#### Returns21222123- `data: array of object`21242125 Page of local sessions, ordered by `created_at` descending; ties are broken by a fixed server-side order. `updated_at` never participates in the ordering; the `updated_at.gte` query parameter filters on it without changing the order or the pagination cursor.21262127 - `type: "compliance_local_session"`21282129 default: compliance_local_session21302131 - `id: string`21322133 Local session identifier, prefixed `clls_`. Unique within the parent organization. Treat as an opaque string; the format may change without notice.21342135 - `created_at: string`21362137 Timestamp of the session's first retained inference call (RFC 3339, UTC). When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected, so this value is the timestamp of the earliest retained call: always strictly after the boundary, never the boundary itself.21382139 format: date-time21402141 - `organization_uuid: string`21422143 UUID of the child organization the session belongs to21442145 - `product_surface: string or null`21462147 The product the session ran in: `cowork` (Cowork in Claude Desktop on the user's machine), `claude_code` (Claude Code), `claude_science` (Claude Science), or one of `office_agents/excel`, `office_agents/powerpoint`, `office_agents/word`, and `office_agents/outlook` (Claude for Microsoft 365, by app; `office_agents` alone when the app is not identified). New values appear as coverage expands; treat unrecognized values as opaque. `null` when the surface was not recorded.21482149 - `truncated: boolean`21502151 True when the session has more inference calls than the service can return for one session (100,000). The messages endpoint then returns only the session's earliest calls, up to that many, and ends before the session does; `updated_at` is a lower bound on the latest call and can differ between the list and retrieve endpoints. False for every session within that bound.21522153 default: false21542155 - `updated_at: string`21562157 Timestamp of the session's last retained inference call (RFC 3339, UTC). Always at or after `created_at`. When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected — but because retention removes only the oldest calls, this value (unlike `created_at`) is unaffected until the entire session has aged out. On the list endpoint this value is a lower bound: for a session still active at a page or `created_at.lt` window boundary it can momentarily lag the session's true last activity. Retrieving the session, or its messages, always reflects the exact latest retained call.21582159 format: date-time21602161 - `user: object`21622163 The authenticated user at the time of the session. Always set; `user.id` is always populated. `user.email_address` is null when the user's account has been deleted or the user is no longer a member of an organization the key may read.21642165 - `id: string`21662167 User identifier (tagged ID, prefixed `user_`). Always set, so attribution survives after the user's account is deleted or the user leaves the organizations the key may read.21682169 - `email_address: string or null`21702171 User's email address. Null when the user's account has been deleted or the user is no longer a member of an organization the key may read. The messages endpoint does not resolve email addresses; this field is always null there.21722173 - `workspace_id: string or null`21742175 Workspace identifier (tagged ID, prefixed `wrkspc_`). Null for sessions not attributed to a workspace.21762177- `next_page: string or null`21782179 Opaque pagination cursor (prefixed `page_`) for the next page. Null when there is no further page. Treat as an opaque string; the format may change without notice.21802181#### Example21822183```bash2184curl https://api.anthropic.com/v1/compliance/apps/sessions/local \2185 -H 'anthropic-version: 2023-06-01' \2186 -H "Authorization: Bearer $ANTHROPIC_COMPLIANCE_API_KEY"2187```21882189##### Response (200)21902191```json2192{2193 "data": [2194 {2195 "type": "compliance_local_session",2196 "id": "clls_eyJ2IjoxLCJvIjoiOWEx…",2197 "organization_uuid": "9a1e0000-0000-0000-0000-000000000000",2198 "workspace_id": "wrkspc_01SvYKoWVRVHoEbwESNvzYdR",2199 "user": {2200 "id": "user_01GpKpLmNoPqRsTuVwXyZaBc",2201 "email_address": "engineer@example.com"2202 },2203 "product_surface": "cowork",2204 "created_at": "2026-07-09T14:02:11Z",2205 "updated_at": "2026-07-09T15:47:33Z"2206 }2207 ]2208}2209```22102211### Retrieve a local session22122213**GET** `/v1/compliance/apps/sessions/local/{local_session_id}`22142215Retrieve one local session.22162217The response is the same session object the list endpoint returns,2218with `user.email_address` resolved the same way. Retention is2219enforced when the response is served: a session whose every2220inference call has aged out returns 404.22212222#### Path parameters22232224- `local_session_id: string`22252226#### Headers22272228- `"x-api-key": optional string`22292230#### Returns22312232- `type: "compliance_local_session"`22332234 default: compliance_local_session22352236- `id: string`22372238 Local session identifier, prefixed `clls_`. Unique within the parent organization. Treat as an opaque string; the format may change without notice.22392240- `created_at: string`22412242 Timestamp of the session's first retained inference call (RFC 3339, UTC). When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected, so this value is the timestamp of the earliest retained call: always strictly after the boundary, never the boundary itself.22432244 format: date-time22452246- `organization_uuid: string`22472248 UUID of the child organization the session belongs to22492250- `product_surface: string or null`22512252 The product the session ran in: `cowork` (Cowork in Claude Desktop on the user's machine), `claude_code` (Claude Code), `claude_science` (Claude Science), or one of `office_agents/excel`, `office_agents/powerpoint`, `office_agents/word`, and `office_agents/outlook` (Claude for Microsoft 365, by app; `office_agents` alone when the app is not identified). New values appear as coverage expands; treat unrecognized values as opaque. `null` when the surface was not recorded.22532254- `truncated: boolean`22552256 True when the session has more inference calls than the service can return for one session (100,000). The messages endpoint then returns only the session's earliest calls, up to that many, and ends before the session does; `updated_at` is a lower bound on the latest call and can differ between the list and retrieve endpoints. False for every session within that bound.22572258 default: false22592260- `updated_at: string`22612262 Timestamp of the session's last retained inference call (RFC 3339, UTC). Always at or after `created_at`. When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected — but because retention removes only the oldest calls, this value (unlike `created_at`) is unaffected until the entire session has aged out. On the list endpoint this value is a lower bound: for a session still active at a page or `created_at.lt` window boundary it can momentarily lag the session's true last activity. Retrieving the session, or its messages, always reflects the exact latest retained call.22632264 format: date-time22652266- `user: object`22672268 The authenticated user at the time of the session. Always set; `user.id` is always populated. `user.email_address` is null when the user's account has been deleted or the user is no longer a member of an organization the key may read.22692270 - `id: string`22712272 User identifier (tagged ID, prefixed `user_`). Always set, so attribution survives after the user's account is deleted or the user leaves the organizations the key may read.22732274 - `email_address: string or null`22752276 User's email address. Null when the user's account has been deleted or the user is no longer a member of an organization the key may read. The messages endpoint does not resolve email addresses; this field is always null there.22772278- `workspace_id: string or null`22792280 Workspace identifier (tagged ID, prefixed `wrkspc_`). Null for sessions not attributed to a workspace.22812282#### Example22832284```bash2285curl https://api.anthropic.com/v1/compliance/apps/sessions/local/$LOCAL_SESSION_ID \2286 -H 'anthropic-version: 2023-06-01' \2287 -H "Authorization: Bearer $ANTHROPIC_COMPLIANCE_API_KEY"2288```22892290##### Response (200)22912292```json2293{2294 "type": "compliance_local_session",2295 "id": "clls_eyJ2IjoxLCJvIjoiOWEx…",2296 "organization_uuid": "9a1e0000-0000-0000-0000-000000000000",2297 "workspace_id": "wrkspc_01SvYKoWVRVHoEbwESNvzYdR",2298 "user": {2299 "id": "user_01GpKpLmNoPqRsTuVwXyZaBc",2300 "email_address": "engineer@example.com"2301 },2302 "product_surface": "cowork",2303 "created_at": "2026-07-09T14:02:11Z",2304 "updated_at": "2026-07-09T15:47:33Z"2305}2306```23072308## Apps › Sessions › Local › Messages23092310### Retrieve local session messages23112312**GET** `/v1/compliance/apps/sessions/local/{local_session_id}/messages`23132314Read one local session's transcript, oldest-first by default.23152316Retention is enforced read-side: turns at or before the child2317organization's retention boundary are never returned; a session2318that straddles the boundary carries one leading2319`content_unavailable` placeholder (`reason: "retention_elapsed"`)2320in their place. The boundary is pinned on the walk's first page and2321honored for 24 hours: a cursor older than that is rejected with an2322explicit 400; restart the walk to read under the current boundary.23232324#### Path parameters23252326- `local_session_id: string`23272328#### Query parameters23292330- `limit: optional number`23312332 Maximum results (default: 100, max: 1000)23332334 default: 100, maximum: 1000, minimum: 123352336- `order: optional "asc" or "desc"`23372338 Sort direction. `asc` (oldest-first, default) or `desc`.23392340 default: asc23412342 - `"asc"`23432344 - `"desc"`23452346- `page: optional string`23472348 Opaque pagination token from a previous response's `next_page` field. Pass this to retrieve the next page of results. Clients should treat this value as an opaque string and not attempt to parse or interpret its contents, as the format may change without notice.23492350- `tool_result_max_bytes: optional number`23512352 Truncate each text item inside a tool result to at most this many bytes (cut on a code-point boundary). Pass `-1` to request the server maximum (approximately 1 MiB); larger values are clamped to it. `0` is not a valid value.23532354 default: 10000, maximum: 2147483647, minimum: -123552356- `tool_use_input_max_bytes: optional number`23572358 Truncate each tool-use input to at most this many bytes (cut on a code-point boundary so the result is valid UTF-8). Pass `-1` to request the server maximum (approximately 1 MiB); larger values are clamped to it. `0` is not a valid value.23592360 default: 10000, maximum: 2147483647, minimum: -123612362#### Headers23632364- `"x-api-key": optional string`23652366#### Returns23672368- `data: array of object`23692370 Transcript turns for this page, in call order: oldest call first by default, newest call first with `order=desc`. The messages of one call carry the call's timestamp and follow each other in transcript order; a page boundary can fall between them.23712372 - `type: "compliance_local_session_message"`23732374 default: compliance_local_session_message23752376 - `id: string`23772378 Message identifier, prefixed `clsm_`. Stable for as long as the message's turn is retained: identifiers of retained turns do not change as older turns age out of the organization's retention period. The `retention_elapsed` placeholder's identifier is distinct from every retained turn's and changes only when further turns age out.23792380 - `content: array of Text or ToolUse or ToolResult`23812382 Content blocks within the message, discriminated on `type` (`text` / `tool_use` / `tool_result`: the same discriminator values as the claude.ai chat-messages endpoint; the tool variants omit `integration_name` and `mcp_server_url`, and `text` carries `truncated`). Extended-thinking content is never included. The request's `system` field is never included; a presence-only marker message is emitted when it was set. The request's `tools[]` definitions are never included as transcript messages. Project-level instructions (such as CLAUDE.md files) appear in the message stream as a user-role context block and are included. Empty when `provenance.type` is `content_unavailable`.23832384 - `Text object`23852386 Text content block.23872388 - `type: "text"`23892390 default: text23912392 - `text: string`23932394 Text content from the user or the assistant23952396 - `truncated: boolean`23972398 True when `text` was shortened by the server's fixed per-string bound (approximately 1 MiB), or when ancillary content the block carried (such as citations) was omitted, or when this block stands in for a non-text block whose content is not shown, or when it is an explanatory marker the server inserted (its text enclosed in square brackets, e.g. prefacing client-asserted history). There is no request parameter that raises the per-string bound.23992400 default: false24012402 - `ToolUse object`24032404 Tool invocation requested by the assistant.24052406 - `type: "tool_use"`24072408 default: tool_use24092410 - `id: string or null`24112412 Tool-use ID, e.g. 'toolu_01AbC...'24132414 - `input: string`24152416 Arguments passed to the tool, as a JSON-encoded string. May be shortened (see the `truncated` field); a truncated value is cut mid-document and is not valid JSON.24172418 - `name: string`24192420 Name of the tool invoked24212422 - `truncated: boolean`24232424 True when `input` was shortened. Pass `tool_use_input_max_bytes=-1` to request the server maximum.24252426 default: false24272428 - `ToolResult object`24292430 Result returned by a tool invocation.24312432 - `type: "tool_result"`24332434 default: tool_result24352436 - `content: array of object`24372438 Text content returned by the tool. Non-text item types are omitted and signalled via `truncated` with an in-band item-count marker.24392440 - `type: "text"`24412442 default: text24432444 - `text: string`24452446 Text returned by the tool24472448 - `is_error: boolean`24492450 True when the tool reported an error24512452 - `name: string`24532454 Name of the tool that produced this result24552456 - `tool_use_id: string or null`24572458 ID of the tool_use block this result responds to24592460 - `truncated: boolean`24612462 True when one or more text items in `content` were shortened or non-text items were omitted. Pass `tool_result_max_bytes=-1` to request the server maximum.24632464 default: false24652466 - `created_at: string`24672468 When the message was recorded (RFC 3339, UTC)24692470 format: date-time24712472 - `model: string or null`24732474 The model that served this assistant turn, as reported in the `model` field of the underlying Messages API response. Null on user messages and on any assistant message whose `provenance` is set: client-asserted history and synthetic markers were not produced by a model during this session, and for unavailable content the serving model is not known.24752476 - `provenance: ContentUnavailable or ClientAsserted or SyntheticMarker or null`24772478 Where this turn's content came from, discriminated on `type`. Null (the common case) means verified content: on an assistant message, content Claude produced during this session; on a user message, content the user sent. `content_unavailable`: the turn's content cannot be returned and `content` is empty; `reason` says why. `client_asserted`: assistant content the client supplied as conversation history; `content` shows what the model received but its authorship is not verified; never on user-role messages. `synthetic_marker`: a transcript marker the endpoint generated rather than content either party sent during the session. Both `client_asserted` and `synthetic_marker` can result from normal request or client processing, not only client modification. Callers should tolerate unrecognized `type` values.24792480 - `ContentUnavailable object`24812482 The turn's content cannot be returned; `content` is empty.24832484 - `type: "content_unavailable"`24852486 default: content_unavailable24872488 - `reason: string`24892490 Why this turn's content cannot be returned, e.g. `not_captured` (the content was not captured for compliance retrieval), `client_aborted` (the client closed the connection or cancelled the request before the response completed, so the response was not captured for this turn; any partial output already streamed to the client is not included; assistant-role turns only), `cmek_key_revoked` (the content is encrypted under the organization's customer-managed key and that key is unavailable), `retention_elapsed` (the content lies past the organization's retention boundary; on the placeholder standing in for every pre-boundary turn), or `oversize` (the message exceeds the server's per-message size bound even after per-block truncation). Callers should tolerate unrecognized values. `not_captured` is not proof that no record was stored: content withheld by the storage layer's fail-closed access policies carries the same reason and is deliberately indistinguishable from content that was never captured.24912492 - `ClientAsserted object`24932494 Assistant content the client supplied as conversation history2495 rather than produced by Claude during this session. `content` shows2496 what the model received but its authorship is not verified; this can2497 result from normal request or client processing, not only client2498 modification. Never on user-role messages.24992500 - `type: "client_asserted"`25012502 default: client_asserted25032504 - `SyntheticMarker object`25052506 A transcript marker generated by the endpoint rather than sent by2507 either party during the session. Marker messages indicate that the2508 prompt history diverged from what was captured, that the request's2509 `system` field was present but is not shown, or that earlier turns2510 that a request re-sent as history were withheld because they cannot2511 be dated against the child organization's data-retention period2512 (only for organizations with a finite retention period; the request's2513 new user input after its last assistant turn is not affected). The2514 marker's text names the cause. Markers that report a mismatch with2515 captured history can result from normal request or client processing,2516 not only client modification.25172518 - `type: "synthetic_marker"`25192520 default: synthetic_marker25212522 - `role: "assistant" or "user"`25232524 Message sender (`user` or `assistant`)25252526 - `"assistant"`25272528 - `"user"`25292530- `next_page: string or null`25312532 Opaque pagination cursor (prefixed `page_`) for the next page. Null when there is no further page. Treat as an opaque string; the format may change without notice.25332534- `session: object`25352536 The local session the messages belong to. `user.email_address` is always null on this endpoint; the messages endpoint does not resolve email addresses.25372538 - `type: "compliance_local_session"`25392540 default: compliance_local_session25412542 - `id: string`25432544 Local session identifier, prefixed `clls_`. Unique within the parent organization. Treat as an opaque string; the format may change without notice.25452546 - `created_at: string`25472548 Timestamp of the session's first retained inference call (RFC 3339, UTC). When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected, so this value is the timestamp of the earliest retained call: always strictly after the boundary, never the boundary itself.25492550 format: date-time25512552 - `organization_uuid: string`25532554 UUID of the child organization the session belongs to25552556 - `product_surface: string or null`25572558 The product the session ran in: `cowork` (Cowork in Claude Desktop on the user's machine), `claude_code` (Claude Code), `claude_science` (Claude Science), or one of `office_agents/excel`, `office_agents/powerpoint`, `office_agents/word`, and `office_agents/outlook` (Claude for Microsoft 365, by app; `office_agents` alone when the app is not identified). New values appear as coverage expands; treat unrecognized values as opaque. `null` when the surface was not recorded.25592560 - `truncated: boolean`25612562 True when the session has more inference calls than the service can return for one session (100,000). The messages endpoint then returns only the session's earliest calls, up to that many, and ends before the session does; `updated_at` is a lower bound on the latest call and can differ between the list and retrieve endpoints. False for every session within that bound.25632564 default: false25652566 - `updated_at: string`25672568 Timestamp of the session's last retained inference call (RFC 3339, UTC). Always at or after `created_at`. When a session's activity spans the child organization's retention boundary, calls older than the boundary are no longer reflected — but because retention removes only the oldest calls, this value (unlike `created_at`) is unaffected until the entire session has aged out. On the list endpoint this value is a lower bound: for a session still active at a page or `created_at.lt` window boundary it can momentarily lag the session's true last activity. Retrieving the session, or its messages, always reflects the exact latest retained call.25692570 format: date-time25712572 - `user: object`25732574 The authenticated user at the time of the session. Always set; `user.id` is always populated. `user.email_address` is null when the user's account has been deleted or the user is no longer a member of an organization the key may read.25752576 - `id: string`25772578 User identifier (tagged ID, prefixed `user_`). Always set, so attribution survives after the user's account is deleted or the user leaves the organizations the key may read.25792580 - `email_address: string or null`25812582 User's email address. Null when the user's account has been deleted or the user is no longer a member of an organization the key may read. The messages endpoint does not resolve email addresses; this field is always null there.25832584 - `workspace_id: string or null`25852586 Workspace identifier (tagged ID, prefixed `wrkspc_`). Null for sessions not attributed to a workspace.25872588#### Example25892590```bash2591curl https://api.anthropic.com/v1/compliance/apps/sessions/local/$LOCAL_SESSION_ID/messages \2592 -H 'anthropic-version: 2023-06-01' \2593 -H "Authorization: Bearer $ANTHROPIC_COMPLIANCE_API_KEY"2594```25952596##### Response (200)25972598```json2599{2600 "data": [2601 {2602 "id": "clsm_eyJ2IjoxLCJsIjoi…",2603 "content": [2604 {2605 "text": "text",2606 "truncated": true,2607 "type": "text"2608 }2609 ],2610 "created_at": "2025-03-12T18:22:41.123456Z",2611 "model": "claude-opus-5",2612 "provenance": {2613 "reason": "not_captured",2614 "type": "content_unavailable"2615 },2616 "role": "assistant",2617 "type": "compliance_local_session_message"2618 }2619 ],2620 "next_page": "page_eyJ2IjoxLCJmIjoibSIs…",2621 "session": {2622 "id": "clls_eyJ2IjoxLCJvIjoiOWEx…",2623 "created_at": "2025-03-12T18:22:41.123456Z",2624 "organization_uuid": "a1b2c3d4-e5f6-4789-a012-3456789abcde",2625 "product_surface": "cowork",2626 "truncated": true,2627 "type": "compliance_local_session",2628 "updated_at": "2025-03-12T18:22:41.123456Z",2629 "user": {2630 "id": "user_01WCz1FkmYMm4gnmykNKUu3Q",2631 "email_address": "jane.doe@example.com"2632 },2633 "workspace_id": "wrkspc_01SvYKoWVRVHoEbwESNvzYdR"2634 }2635}2636```26372638## Apps › Sessions › Remote26392640### List remote sessions26412642**GET** `/v1/compliance/apps/sessions/remote`26432644List remote sessions (Cowork sessions that run in Anthropic-managed2645cloud environments) across the organizations the key may read.26462647Each entry carries session metadata only; retrieve a session's2648transcript from the messages endpoint. By default the list spans every2649such organization; pass up to 500 `organization_ids[]` values to2650narrow it. Pass 1 to 10 `user_ids[]` values to scope the2651list to specific users: that filter matches the session's owning user,2652so agent-owned sessions are excluded whenever it is set. Bound results2653in time with the `created_at` range parameters (`created_at.gte`,2654`created_at.gt`, `created_at.lt`, `created_at.lte`; RFC 3339). There2655is no `updated_at` filter.26562657Results are sorted newest first by `created_at`, with at most `limit`2658sessions per page (default 100, maximum 500). Pagination is2659forward-only: pass the response's `next_page` value back as `page` to2660retrieve the next page, and stop when `next_page` is null.26612662#### Query parameters26632664- `created_at: optional object`26652666 - `gt: optional string`26672668 Filter remote sessions created after this time (RFC 3339 format)26692670 format: date-time26712672 - `gte: optional string`26732674 Filter remote sessions created at or after this time (RFC 3339 format)26752676 format: date-time26772678 - `lt: optional string`26792680 Filter remote sessions created before this time (RFC 3339 format)26812682 format: date-time26832684 - `lte: optional string`26852686 Filter remote sessions created at or before this time (RFC 3339 format)26872688 format: date-time26892690- `limit: optional number`26912692 Maximum results (default: 100, max: 500)26932694 default: 100, maximum: 500, minimum: 126952696- `organization_ids: optional array of string`26972698 Filter to specific child organization identifiers. Omit to enumerate every child organization the key may read.26992700 maxItems: 50027012702- `page: optional string`27032704 Opaque pagination token from a previous response's `next_page` field. Pass this to retrieve the next page of results. Clients should treat this value as an opaque string and not attempt to parse or interpret its contents, as the format may change without notice.27052706- `user_ids: optional array of string`27072708 Filter to sessions owned by specific users (max 10 per request). Agent-owned sessions are excluded when this filter is set.27092710 maxItems: 1027112712#### Headers27132714- `"x-api-key": optional string`27152716#### Returns27172718- `data: array of object`27192720 - `id: string`27212722 Remote session identifier27232724 - `agent_id: string or null`27252726 Identifier of the automated agent that owns the session. Null for user-owned sessions. At most one of `user` and `agent_id` is set.27272728 - `claude_project_id: string or null`27292730 ID of the project the session is bound to. Null when the session has no project binding.27312732 - `created_at: string`27332734 When the session was created (RFC 3339, UTC)27352736 format: date-time27372738 - `organization_uuid: string`27392740 UUID of the organization the session belongs to27412742 - `product_surface: string or null`27432744 The Claude product the session was created from. Currently `cowork_remote`, for Cowork sessions started on claude.ai web or mobile. More values will appear as other surfaces launch, so treat any unrecognized value as an unclassified surface rather than an error. Null for sessions created before this field was recorded, for surfaces that do not stamp it, and for unrecognized tag values.27452746 - `started_by_user: object or null`27472748 A user associated with a remote session.27492750 - `id: string`27512752 User identifier27532754 - `email_address: string or null`27552756 User's email address. Null when the user is no longer a member of an organization the key may read — `id` remains set so attribution is preserved. The messages endpoint does not resolve email addresses; this field is always null there.27572758 - `status: string`27592760 Session lifecycle state. One of `active`, `paused`, `archived`, or `failed` — the lifecycle states the owning product surface exposes — plus `pending`, a brief transient state that resolves before any transcript content exists. The list endpoint includes `pending`; the messages endpoint returns 404 for it. Deleted sessions are not returned on either endpoint. Treat unrecognized values as an unknown state rather than an error.27612762 - `updated_at: string`27632764 When the session was last modified (RFC 3339, UTC)27652766 format: date-time27672768 - `user: object or null`27692770 A user associated with a remote session.27712772 - `id: string`27732774 User identifier27752776 - `email_address: string or null`27772778 User's email address. Null when the user is no longer a member of an organization the key may read — `id` remains set so attribution is preserved. The messages endpoint does not resolve email addresses; this field is always null there.27792780- `next_page: string or null`27812782 Opaque page token; pass as `page` to retrieve the next page. Null when no rows exist after this page. Treat this value as opaque; do not parse or store it long-term, as the format may change without notice.27832784#### Example27852786```bash2787curl https://api.anthropic.com/v1/compliance/apps/sessions/remote \2788 -H 'anthropic-version: 2023-06-01' \2789 -H "Authorization: Bearer $ANTHROPIC_COMPLIANCE_API_KEY"2790```27912792##### Response (200)27932794```json2795{2796 "data": [2797 {2798 "id": "cse_01A0000000000000000000000",2799 "organization_uuid": "00000000-0000-0000-0000-000000000000",2800 "user": {2801 "id": "user_01A0000000000000000000000",2802 "email_address": "user@example.com"2803 },2804 "status": "active",2805 "created_at": "2026-01-02T03:04:05.000000Z",2806 "updated_at": "2026-01-02T03:04:05.000000Z",2807 "product_surface": "cowork_remote",2808 "claude_project_id": "claude_proj_01Nm7PqRsTuVwXyZaBcDeFgH"2809 }2810 ],2811 "next_page": "page_AAE..."2812}2813```28142815## Apps › Sessions › Remote › Messages28162817### Retrieve remote session messages28182819**GET** `/v1/compliance/apps/sessions/remote/{claude_remote_session_id}/messages`28202821Retrieve one remote session's transcript: user prompts, assistant2822responses, and tool calls and results. Thinking blocks and images are2823not included.28242825Messages are returned oldest first by default; pass `order=desc` to2826reverse. Pagination uses the same `page`/`next_page` scheme as the2827list endpoint, with at most `limit` messages per page (default 100,2828maximum 1000); keep paginating until `next_page` is null.2829`tool_use_input_max_bytes` and `tool_result_max_bytes` cap how many2830bytes of each tool-use input and each tool-result text item are2831returned; a block shortened by either cap carries `truncated: true`.28322833The response embeds the session's metadata under `session` alongside2834the paginated `data` array. On this endpoint `session.user.email_address`2835and `session.started_by_user` are always null; read them from the list2836endpoint instead.28372838Returns 404 while the session is still `pending`, for deleted sessions,2839and for sessions outside the organizations the key may read. A2840malformed session identifier returns 400.28412842#### Path parameters28432844- `claude_remote_session_id: string`28452846 The remote session identifier (`cse_...`) to retrieve28472848#### Query parameters28492850- `limit: optional number`28512852 Maximum results (default: 100, max: 1000)28532854 default: 100, maximum: 1000, minimum: 128552856- `order: optional "asc" or "desc"`28572858 Sort direction. `asc` (oldest-first) or `desc`.28592860 default: asc28612862 - `"asc"`28632864 - `"desc"`28652866- `page: optional string`28672868 Opaque pagination token from a previous response's `next_page` field. Pass this to retrieve the next page of results. Clients should treat this value as an opaque string and not attempt to parse or interpret its contents, as the format may change without notice.28692870- `tool_result_max_bytes: optional number`28712872 Truncate each text item inside a tool result to at most this many bytes (cut on a code-point boundary). Pass `-1` to request the server maximum. `0` is not a valid value.28732874 default: 10000, maximum: 2147483647, minimum: -128752876- `tool_use_input_max_bytes: optional number`28772878 Truncate each tool-use input to at most this many bytes (cut on a code-point boundary so the result is valid UTF-8). Pass `-1` to request the server maximum. `0` is not a valid value.28792880 default: 10000, maximum: 2147483647, minimum: -128812882#### Headers28832884- `"x-api-key": optional string`28852886#### Returns28872888- `data: array of object`28892890 Transcript turns for this page, ordered by transcript position. `created_at` is a commit timestamp and may tie or invert under concurrent writes; do not re-sort by it.28912892 - `id: string`28932894 Unique identifier for the message, e.g. `csev_abc123`28952896 - `content: array of Text or ToolUse or ToolResult`28972898 Content blocks within the message28992900 - `Text object`29012902 Text content block.29032904 - `type: "text"`29052906 default: text29072908 - `text: string`29092910 Text content from the user or the assistant29112912 - `truncated: boolean`29132914 True when `text` exceeded the server-defined maximum (approximately 1 MiB) and was shortened.29152916 default: false29172918 - `ToolUse object`29192920 Tool invocation requested by the assistant.29212922 - `type: "tool_use"`29232924 default: tool_use29252926 - `id: string or null`29272928 Tool-use ID, e.g. 'toolu_01AbC...'29292930 - `input: string`29312932 Arguments passed to the tool, as a JSON-encoded string. May be shortened — see the `truncated` field29332934 - `name: string`29352936 Name of the tool invoked29372938 - `truncated: boolean`29392940 True when `input` was shortened. Pass `tool_use_input_max_bytes=-1` to request full content, subject to the server-side maximum.29412942 default: false29432944 - `ToolResult object`29452946 Result returned by a tool invocation.29472948 - `type: "tool_result"`29492950 default: tool_result29512952 - `content: array of object`29532954 Text content returned by the tool. Non-text item types are omitted.29552956 - `type: "text"`29572958 default: text29592960 - `text: string`29612962 Text returned by the tool29632964 - `is_error: boolean`29652966 True when the tool reported an error29672968 - `name: string`29692970 Name of the tool that produced this result29712972 - `tool_use_id: string or null`29732974 ID of the tool_use block this result responds to29752976 - `truncated: boolean`29772978 True when one or more text items in `content` were shortened. Pass `tool_result_max_bytes=-1` to request full content, subject to the server-side maximum.29792980 default: false29812982 - `content_unavailable: boolean`29832984 True when the stored content could not be returned — it could not be decrypted, or it exceeded the server's per-event size bound. `content` is empty in that case; this distinguishes 'no content' from 'content withheld'.29852986 default: false29872988 - `created_at: string`29892990 When the message was recorded (RFC 3339, UTC)29912992 format: date-time29932994 - `role: "assistant" or "user"`29952996 Message sender (`user` or `assistant`)29972998 - `"assistant"`29993000 - `"user"`30013002 - `sent_by_user_id: string or null`30033004 Identifier of the human account that sent this turn on an agent-owned session. Null on user-owned sessions, where every user-role turn was sent by the session's `user`.30053006- `next_page: string or null`30073008 Opaque page token; pass as `page` to retrieve the next page. Null when no rows exist after this page. Treat this value as opaque; do not parse or store it long-term, as the format may change without notice.30093010- `session: object`30113012 Session metadata. `started_by_user`, `user.email_address`, and `claude_project_id` are always null on this endpoint; the messages endpoint resolves neither email addresses nor project bindings.30133014 - `id: string`30153016 Remote session identifier30173018 - `agent_id: string or null`30193020 Identifier of the automated agent that owns the session. Null for user-owned sessions. At most one of `user` and `agent_id` is set.30213022 - `claude_project_id: string or null`30233024 ID of the project the session is bound to. Null when the session has no project binding.30253026 - `created_at: string`30273028 When the session was created (RFC 3339, UTC)30293030 format: date-time30313032 - `organization_uuid: string`30333034 UUID of the organization the session belongs to30353036 - `product_surface: string or null`30373038 The Claude product the session was created from. Currently `cowork_remote`, for Cowork sessions started on claude.ai web or mobile. More values will appear as other surfaces launch, so treat any unrecognized value as an unclassified surface rather than an error. Null for sessions created before this field was recorded, for surfaces that do not stamp it, and for unrecognized tag values.30393040 - `started_by_user: object or null`30413042 A user associated with a remote session.30433044 - `id: string`30453046 User identifier30473048 - `email_address: string or null`30493050 User's email address. Null when the user is no longer a member of an organization the key may read — `id` remains set so attribution is preserved. The messages endpoint does not resolve email addresses; this field is always null there.30513052 - `status: string`30533054 Session lifecycle state. One of `active`, `paused`, `archived`, or `failed` — the lifecycle states the owning product surface exposes — plus `pending`, a brief transient state that resolves before any transcript content exists. The list endpoint includes `pending`; the messages endpoint returns 404 for it. Deleted sessions are not returned on either endpoint. Treat unrecognized values as an unknown state rather than an error.30553056 - `updated_at: string`30573058 When the session was last modified (RFC 3339, UTC)30593060 format: date-time30613062 - `user: object or null`30633064 A user associated with a remote session.30653066 - `id: string`30673068 User identifier30693070 - `email_address: string or null`30713072 User's email address. Null when the user is no longer a member of an organization the key may read — `id` remains set so attribution is preserved. The messages endpoint does not resolve email addresses; this field is always null there.30733074#### Example30753076```bash3077curl https://api.anthropic.com/v1/compliance/apps/sessions/remote/$CLAUDE_REMOTE_SESSION_ID/messages \3078 -H 'anthropic-version: 2023-06-01' \3079 -H "Authorization: Bearer $ANTHROPIC_COMPLIANCE_API_KEY"3080```30813082##### Response (200)30833084```json3085{3086 "data": [3087 {3088 "id": "id",3089 "content": [3090 {3091 "text": "text",3092 "truncated": true,3093 "type": "text"3094 }3095 ],3096 "content_unavailable": true,3097 "created_at": "2019-12-27T18:11:19.117Z",3098 "role": "assistant",3099 "sent_by_user_id": "sent_by_user_id"3100 }3101 ],3102 "next_page": "next_page",3103 "session": {3104 "id": "id",3105 "agent_id": "agent_id",3106 "claude_project_id": "claude_project_id",3107 "created_at": "2019-12-27T18:11:19.117Z",3108 "organization_uuid": "organization_uuid",3109 "product_surface": "product_surface",3110 "started_by_user": {3111 "id": "id",3112 "email_address": "email_address"3113 },3114 "status": "status",3115 "updated_at": "2019-12-27T18:11:19.117Z",3116 "user": {3117 "id": "id",3118 "email_address": "email_address"3119 }3120 }3121}3122```3123