Haijun Platform Docs
ID

GET /v1/compliance/apps/chats/{haijun_chat_id}/messages

Retrieves message history and file metadata for a specific chat.

Path parameters

  • haijun_chat_id: string

The chat ID (tagged ID, e.g., haijun_chat_abc123)

Query parameters

  • after_id: optional string

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.

  • before_id: optional string

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.

  • created_at: optional object
  • gt: optional string

Filter messages created after this time (RFC 3339 format)

format: date-time

  • gte: optional string

Filter messages created at or after this time (RFC 3339 format)

format: date-time

  • lt: optional string

Filter messages created before this time (RFC 3339 format)

format: date-time

  • lte: optional string

Filter messages created at or before this time (RFC 3339 format)

format: date-time

  • limit: optional number

Maximum results (max: 1000). When omitted, the full result set is returned in one response.

minimum: 1, maximum: 1000

  • order: optional "asc" or "desc"

Sort direction for messages within the response. asc (the default) returns oldest-first; desc returns newest-first.

default: asc

  • "asc"
  • "desc"
  • tool_result_max_chars: optional number

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.

default: 10000, minimum: -1

  • tool_use_input_max_chars: optional number

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.

default: 10000, minimum: -1

  • updated_at: optional object
  • gt: optional string

Filter messages updated after this time (RFC 3339 format)

format: date-time

  • gte: optional string

Filter messages updated at or after this time (RFC 3339 format)

format: date-time

  • lt: optional string

Filter messages updated before this time (RFC 3339 format)

format: date-time

  • lte: optional string

Filter messages updated at or before this time (RFC 3339 format)

format: date-time

Headers

  • "x-api-key": optional string

Returns

  • id: string

Chat ID

  • chat_messages: array of object

Array of chat messages in order of created_at

  • id: string

Unique identifier for the message e.g. 'haijun_chat_msg_abcd1234'

  • artifacts: array of object or null

Versioned documents generated or updated by the assistant in this message. Download via GET /v1/compliance/apps/artifacts/{artifact_version_id}/content.

  • id: string

Artifact ID e.g. 'haijun_artifact_abc123'

  • artifact_type: string or null

MIME-like artifact type e.g. 'application/vnd.ant.code'

  • title: string or null

Artifact title

  • version_id: string

Artifact version ID e.g. 'haijun_artifact_version_abc123'

  • content: array of Text or ToolUse or ToolResult

Content blocks within the message

  • Text object

Text content block.

  • type: "text"

default: text

  • text: string

Text content from human or assistant

  • thinking_redacted: boolean

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.

default: false

  • truncated: boolean

True when text was shortened by the server's fixed per-string bound (1 MiB). Always false on chat text blocks.

default: false

  • ToolUse object

Tool invocation requested by the assistant.

  • type: "tool_use"

default: tool_use

  • id: string or null

Tool-use ID, e.g. 'toolu_01AbC...'

  • input: string

Arguments passed to the tool, as a JSON-encoded string. May be shortened — see the truncated field

  • integration_name: string or null

Name of the integration that provides this tool, when applicable

  • mcp_server_url: string or null

Base URL (scheme, host, and path only) of the MCP server that provides this tool, when applicable

  • name: string

Name of the tool invoked

  • truncated: boolean

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.

default: false

  • ToolResult object

Result returned by a tool invocation.

  • type: "tool_result"

default: tool_result

  • content: array of object

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.

  • type: "text"

default: text

  • text: string

Text returned by the tool

  • integration_name: string or null

Name of the integration that provides this tool, when applicable

  • is_error: boolean

True when the tool reported an error

  • mcp_server_url: string or null

Base URL (scheme, host, and path only) of the MCP server that provides this tool, when applicable

  • name: string

Name of the tool that produced this result

  • tool_use_id: string or null

ID of the tool_use block this result responds to

  • truncated: boolean

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.

default: false

  • created_at: string

Message 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 null

Binary file attachments uploaded by the user. Download via GET /v1/compliance/apps/chats/files/{haijun_file_id}/content.

  • id: string

File ID

  • created_at: string

File creation timestamp

format: date-time

  • filename: string

Display name of the file

  • md5: string or null

Lowercase 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 null

MIME type of the file's preferred downloadable variant (e.g. 'application/pdf')

  • size_bytes: number or null

Size 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 null

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 an entry whose id starts with haijun_gen_file_ via GET /v1/compliance/apps/chats/generated-files/{haijun_gen_file_id}/content, and one whose id starts with haijun_file_ via GET /v1/compliance/apps/chats/files/{haijun_file_id}/content.

  • id: string

Id of the file: either a generated-file id, e.g. 'haijun_gen_file_abc123', or a file id, e.g. 'haijun_file_abc123'; the prefix tells them apart. Download the first from the generated-files content endpoint and the second from the files content endpoint. Treat everything after the prefix as an opaque string; the encoding may change without notice.

  • filename: string

Display name of the generated file

  • md5: string or null

Lowercase hex MD5 of the generated file, when available. Null when no stored hash is available.

  • mime_type: string or null

MIME type of the file, when known

  • size_bytes: number or null

Size 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: string

Creation timestamp

format: date-time

  • deleted_at: string or null

Deletion timestamp if deleted

format: date-time

  • first_id: string or null

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.

  • has_more: boolean

Whether more chat messages exist beyond the current result set. Use last_id as after_id in a follow-up request to page forward.

default: false

  • href: string

URL to view this chat in haijun.ai

  • last_id: string or null

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.

  • model: string or null

Model selected for this chat (e.g. 'haijun-opus-5'). May be null for legacy chats that never had a model recorded.

  • name: string

Chat name

  • organization_uuid: string

Organization UUID this chat belongs to

  • project_id: string or null

Project ID this chat belongs to

  • updated_at: string

Last update timestamp. Updated when the chat receives a new message, is moved into or out of a project, or is deleted in haijun.ai. Other edits, such as renaming the chat, are not guaranteed to change it.

format: date-time

  • user: object or null

The 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.

  • id: string

User identifier

  • email_address: string

User's email address

  • organization_id: string

Deprecated

Organization ID this chat belongs to

Example

bash
curl https://haijun.my.id/v1/compliance/apps/chats/$HAIJUN_CHAT_ID/messages \
    -H 'juglow-version: 2023-06-01' \
    -H "Authorization: Bearer $JUGLOW_COMPLIANCE_API_KEY"

Response (200)

json
{
  "id": "haijun_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": "haijun_proj_xyz789",
  "model": "haijun-opus-5",
  "user": {
    "id": "user_xyz456",
    "email_address": "user@example.com"
  },
  "href": "https://haijun.my.id/chat/abcdef01-2345-6789-abcd-ef0123456789",
  "chat_messages": [
    {
      "id": "haijun_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": "haijun_file_xyz789",
          "filename": "dashboard_mockup_v1.pdf",
          "mime_type": "application/pdf",
          "size_bytes": 12345,
          "md5": "5d41402abc4b2a76b9719d911017c592",
          "created_at": "2025-06-07T08:09:10Z"
        }
      ]
    },
    {
      "id": "haijun_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": "haijun_artifact_abc123",
          "version_id": "haijun_artifact_version_xyz789",
          "title": "Dashboard Requirements Draft",
          "artifact_type": "text/markdown"
        }
      ]
    }
  ],
  "has_more": false,
  "first_id": "eyJtc2dfdXVpZCI6ICIwZjcwYjA2Ni0uLi4ifQ==",
  "last_id": "eyJtc2dfdXVpZCI6ICJhNGUwYjE3Mi0uLi4ifQ=="
}
On this page
Path parametersQuery parametersHeadersReturnsExampleResponse (200)