title: Messages url: https://platform.claude.com/docs/en/api/compliance/apps/chats/messages
Messages
Get chat messages
GET /v1/compliance/apps/chats/{claude_chat_id}/messages
Retrieves message history and file metadata for a specific chat.
Path parameters
-
claude_chat_id: stringThe chat ID (tagged ID, e.g., claude_chat_abc123)
Query parameters
-
after_id: optional stringPagination cursor for retrieving the next page of results. To paginate, pass the
last_idvalue 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. -
before_id: optional stringPagination cursor for retrieving the previous page of results. To paginate, pass the
first_idvalue 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. -
created_at: optional object-
gt: optional stringFilter messages created after this time (RFC 3339 format)
format: date-time
-
gte: optional stringFilter messages created at or after this time (RFC 3339 format)
format: date-time
-
lt: optional stringFilter messages created before this time (RFC 3339 format)
format: date-time
-
lte: optional stringFilter messages created at or before this time (RFC 3339 format)
format: date-time
-
-
limit: optional numberMaximum results (max: 1000). When omitted, the full result set is returned in one response.
maximum: 1000, minimum: 1
-
order: optional "asc" or "desc"Sort direction for messages within the response.
asc(the default) returns oldest-first;descreturns newest-first.default: asc
-
"asc" -
"desc"
-
-
tool_result_max_chars: optional numberMaximum characters returned per tool-result text item. Items longer than this are shortened and the block's
truncatedfield is set. Pass -1 to disable the limit.default: 10000, minimum: -1
-
tool_use_input_max_chars: optional numberMaximum characters of JSON-encoded tool input returned per tool_use block. Inputs longer than this are shortened and the block's
truncatedfield is set. Pass -1 to disable the limit.default: 10000, minimum: -1
-
updated_at: optional object-
gt: optional stringFilter messages updated after this time (RFC 3339 format)
format: date-time
-
gte: optional stringFilter messages updated at or after this time (RFC 3339 format)
format: date-time
-
lt: optional stringFilter messages updated before this time (RFC 3339 format)
format: date-time
-
lte: optional stringFilter messages updated at or before this time (RFC 3339 format)
format: date-time
-
Headers
"x-api-key": optional string
Returns
-
id: stringChat ID
-
chat_messages: array of objectArray of chat messages in order of created_at
-
id: stringUnique identifier for the message e.g. 'claude_chat_msg_abcd1234'
-
artifacts: array of object or nullVersioned documents generated or updated by the assistant in this message. Download via
GET /v1/compliance/apps/artifacts/{artifact_version_id}/content.-
id: stringArtifact ID e.g. 'claude_artifact_abc123'
-
artifact_type: string or nullMIME-like artifact type e.g. 'application/vnd.ant.code'
-
title: string or nullArtifact title
-
version_id: stringArtifact version ID e.g. 'claude_artifact_version_abc123'
-
-
content: array of Text or ToolUse or ToolResultContent blocks within the message
-
Text objectText content block.
-
type: "text"default: text
-
text: stringText content from human or assistant
-
thinking_redacted: booleanTrue when content enclosed in the assistant's internal-reasoning tags (or the tag markup itself) was removed from
textduring export. Removal never occurs with this field false. Always false on human messages, whose text is exported verbatim.default: false
-
truncated: booleanTrue when
textwas shortened by the server's fixed per-string bound (1 MiB). Always false on chat text blocks.default: false
-
-
ToolUse objectTool invocation requested by the assistant.
-
type: "tool_use"default: tool_use
-
id: string or nullTool-use ID, e.g. 'toolu_01AbC...'
-
input: stringArguments passed to the tool, as a JSON-encoded string. May be shortened — see the
truncatedfield -
integration_name: string or nullName of the integration that provides this tool, when applicable
-
mcp_server_url: string or nullBase URL (scheme, host, and path only) of the MCP server that provides this tool, when applicable
-
name: stringName of the tool invoked
-
truncated: booleanTrue when
inputwas 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.default: false
-
-
ToolResult objectResult returned by a tool invocation.
-
type: "tool_result"default: tool_result
-
content: array of objectText content returned by the tool. Generated files are surfaced via the message's
generated_fileslist; other non-text item types (including images and links) are omitted.-
type: "text"default: text
-
text: stringText returned by the tool
-
-
integration_name: string or nullName of the integration that provides this tool, when applicable
-
is_error: booleanTrue when the tool reported an error
-
mcp_server_url: string or nullBase URL (scheme, host, and path only) of the MCP server that provides this tool, when applicable
-
name: stringName of the tool that produced this result
-
tool_use_id: string or nullID of the tool_use block this result responds to
-
truncated: booleanTrue when one or more text items in
contentwere shortened. Pass the endpoint's tool-result max parameter as -1 to request full content, subject to any server-side maximum the endpoint enforces.default: false
-
-
-
created_at: stringMessage creation timestamp - For human: when they sent the message, For assistant: when it completed the last content block
format: date-time
-
files: array of object or nullBinary file attachments uploaded by the user. Download via
GET /v1/compliance/apps/chats/files/{claude_file_id}/content.-
id: stringFile ID
-
created_at: stringFile creation timestamp
format: date-time
-
filename: stringDisplay name of the file
-
md5: string or nullLowercase hex MD5 of the file's preferred downloadable variant, as recorded at upload time. Null when no stored hash is available.
-
mime_type: string or nullMIME type of the file's preferred downloadable variant (e.g. 'application/pdf')
-
size_bytes: number or nullSize in bytes of the file's preferred downloadable variant, if known. Null for older files uploaded before size was recorded.
-
-
generated_files: array of object or nullDownloadable files the assistant created via tool use (e.g. PDF, spreadsheet, slide deck). Distinct from
files, which are uploads attached to the message. Download viaGET /v1/compliance/apps/chats/generated-files/{claude_gen_file_id}/content.-
id: stringOpaque generated-file id, e.g. 'claude_gen_file_abc123'. Treat as an opaque string; the encoding may change without notice.
-
filename: stringDisplay name of the generated file
-
md5: string or nullLowercase hex MD5 of the generated file, when available. Null when no stored hash is available.
-
mime_type: string or nullMIME type reported by the tool that produced the file
-
size_bytes: number or nullSize in bytes of the generated file, when available. Null when the file has expired or size is not recorded.
-
-
role: "assistant" or "user"Message sender (user or assistant)
-
"assistant" -
"user"
-
-
-
created_at: stringCreation timestamp
format: date-time
-
deleted_at: string or nullDeletion timestamp if deleted
format: date-time
-
first_id: string or nullOpaque pagination cursor for the first message in the current result set. Pass as
before_idon 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. -
has_more: booleanWhether more chat messages exist beyond the current result set. Use
last_idasafter_idin a follow-up request to page forward.default: false
-
href: stringURL to view this chat in claude.ai
-
last_id: string or nullOpaque pagination cursor for the last message in the current result set. Pass as
after_idon 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. -
model: string or nullModel selected for this chat (e.g. 'claude-opus-5'). May be null for legacy chats that never had a model recorded.
-
name: stringChat name
-
organization_uuid: stringOrganization UUID this chat belongs to
-
project_id: string or nullProject ID this chat belongs to
-
updated_at: stringLast update timestamp
format: date-time
-
user: object or nullThe user who created the chat.
Null when the API key is restricted to one organization and the creator is no longer a member of it (for example, after they were removed from it).
A key for the whole parent organization returns the creator's
idand currentemail_addressfor every chat; on the list endpoint, passorganization_ids[]to keep the results to one organization. For the email address the creator had when the chat was created, queryGET /v1/compliance/activitieswithactivity_types[]=claude_chat_createdand acreated_atwindow around the chat'screated_at, find the event whoseclaude_chat_idmatches this chat'sid, and readactor.email_address. These events exist only for chats created after compliance logging was enabled for the organization.-
id: stringUser identifier
-
email_address: stringUser's email address
-
-
organization_id: stringDeprecated
Organization ID this chat belongs to
Example
curl https://api.anthropic.com/v1/compliance/apps/chats/$CLAUDE_CHAT_ID/messages \
-H 'anthropic-version: 2023-06-01' \
-H "Authorization: Bearer $ANTHROPIC_COMPLIANCE_API_KEY"Response (200)
{
"id": "claude_chat_abc123",
"name": "Product Requirements Discussion",
"created_at": "2025-06-07T08:09:10Z",
"updated_at": "2025-06-07T08:09:11Z",
"organization_id": "org_abc123",
"organization_uuid": "abcdef01-2345-6789-abcd-ef0123456789",
"project_id": "claude_proj_xyz789",
"model": "claude-opus-5",
"user": {
"id": "user_xyz456",
"email_address": "user@example.com"
},
"href": "https://claude.ai/chat/abcdef01-2345-6789-abcd-ef0123456789",
"chat_messages": [
{
"id": "claude_chat_msg_abc123",
"role": "user",
"created_at": "2025-06-07T08:09:10Z",
"content": [
{
"type": "text",
"text": "Can you help me draft requirements for our new dashboard feature?"
}
],
"files": [
{
"id": "claude_file_xyz789",
"filename": "dashboard_mockup_v1.pdf",
"mime_type": "application/pdf",
"size_bytes": 12345,
"md5": "5d41402abc4b2a76b9719d911017c592",
"created_at": "2025-06-07T08:09:10Z"
}
]
},
{
"id": "claude_chat_msg_def456",
"role": "assistant",
"created_at": "2025-06-07T08:09:11Z",
"content": [
{
"type": "text",
"text": "I'd be happy to help you draft requirements for your dashboard feature..."
}
],
"artifacts": [
{
"id": "claude_artifact_abc123",
"version_id": "claude_artifact_version_xyz789",
"title": "Dashboard Requirements Draft",
"artifact_type": "text/markdown"
}
]
}
],
"has_more": false,
"first_id": "eyJtc2dfdXVpZCI6ICIwZjcwYjA2Ni0uLi4ifQ==",
"last_id": "eyJtc2dfdXVpZCI6ICJhNGUwYjE3Mi0uLi4ifQ=="
}Domain types
Message List Response
-
MessageListResponse objectA single message in a chat conversation.
-
id: stringUnique identifier for the message e.g. 'claude_chat_msg_abcd1234'
-
artifacts: array of object or nullVersioned documents generated or updated by the assistant in this message. Download via
GET /v1/compliance/apps/artifacts/{artifact_version_id}/content.-
id: stringArtifact ID e.g. 'claude_artifact_abc123'
-
artifact_type: string or nullMIME-like artifact type e.g. 'application/vnd.ant.code'
-
title: string or nullArtifact title
-
version_id: stringArtifact version ID e.g. 'claude_artifact_version_abc123'
-
-
content: array of Text or ToolUse or ToolResultContent blocks within the message
-
Text objectText content block.
-
type: "text"default: text
-
text: stringText content from human or assistant
-
thinking_redacted: booleanTrue when content enclosed in the assistant's internal-reasoning tags (or the tag markup itself) was removed from
textduring export. Removal never occurs with this field false. Always false on human messages, whose text is exported verbatim.default: false
-
truncated: booleanTrue when
textwas shortened by the server's fixed per-string bound (1 MiB). Always false on chat text blocks.default: false
-
-
ToolUse objectTool invocation requested by the assistant.
-
type: "tool_use"default: tool_use
-
id: string or nullTool-use ID, e.g. 'toolu_01AbC...'
-
input: stringArguments passed to the tool, as a JSON-encoded string. May be shortened — see the
truncatedfield -
integration_name: string or nullName of the integration that provides this tool, when applicable
-
mcp_server_url: string or nullBase URL (scheme, host, and path only) of the MCP server that provides this tool, when applicable
-
name: stringName of the tool invoked
-
truncated: booleanTrue when
inputwas 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.default: false
-
-
ToolResult objectResult returned by a tool invocation.
-
type: "tool_result"default: tool_result
-
content: array of objectText content returned by the tool. Generated files are surfaced via the message's
generated_fileslist; other non-text item types (including images and links) are omitted.-
type: "text"default: text
-
text: stringText returned by the tool
-
-
integration_name: string or nullName of the integration that provides this tool, when applicable
-
is_error: booleanTrue when the tool reported an error
-
mcp_server_url: string or nullBase URL (scheme, host, and path only) of the MCP server that provides this tool, when applicable
-
name: stringName of the tool that produced this result
-
tool_use_id: string or nullID of the tool_use block this result responds to
-
truncated: booleanTrue when one or more text items in
contentwere shortened. Pass the endpoint's tool-result max parameter as -1 to request full content, subject to any server-side maximum the endpoint enforces.default: false
-
-
-
created_at: stringMessage creation timestamp - For human: when they sent the message, For assistant: when it completed the last content block
format: date-time
-
files: array of object or nullBinary file attachments uploaded by the user. Download via
GET /v1/compliance/apps/chats/files/{claude_file_id}/content.-
id: stringFile ID
-
created_at: stringFile creation timestamp
format: date-time
-
filename: stringDisplay name of the file
-
md5: string or nullLowercase hex MD5 of the file's preferred downloadable variant, as recorded at upload time. Null when no stored hash is available.
-
mime_type: string or nullMIME type of the file's preferred downloadable variant (e.g. 'application/pdf')
-
size_bytes: number or nullSize in bytes of the file's preferred downloadable variant, if known. Null for older files uploaded before size was recorded.
-
-
generated_files: array of object or nullDownloadable files the assistant created via tool use (e.g. PDF, spreadsheet, slide deck). Distinct from
files, which are uploads attached to the message. Download viaGET /v1/compliance/apps/chats/generated-files/{claude_gen_file_id}/content.-
id: stringOpaque generated-file id, e.g. 'claude_gen_file_abc123'. Treat as an opaque string; the encoding may change without notice.
-
filename: stringDisplay name of the generated file
-
md5: string or nullLowercase hex MD5 of the generated file, when available. Null when no stored hash is available.
-
mime_type: string or nullMIME type reported by the tool that produced the file
-
size_bytes: number or nullSize in bytes of the generated file, when available. Null when the file has expired or size is not recorded.
-
-
role: "assistant" or "user"Message sender (user or assistant)
-
"assistant" -
"user"
-
-