POST /v1/threads/{thread_id}/user_message instead.
POST /v1/threads//messages
Create a message directly in a thread without triggering AI generation. Returns201 on success.
Path parameters
| Parameter | Type | Description |
|---|---|---|
thread_id | string (UUID) | The thread to create the message in. |
Request body
The author role for this message. See MessageRole for values.
Message content object. Contains
text (required) and optionally citations, is_error, and references.Optional caller-supplied UUID for the message. Use this to make the create operation idempotent — submitting the same
message_id twice returns the existing message without creating a duplicate.Execution step data for assistant messages (e.g. tool call traces). Omit for user messages.
Example
GET /v1/threads//messages
List all messages in a thread, ordered bycreated_at descending (newest first).
Query parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
limit | integer | 20 | Items per page (1–100). |
offset | integer | 0 | Items to skip. |
before | string (datetime) | — | Cursor for keyset pagination. Returns only messages with created_at before this ISO 8601 timestamp. |
with_details | boolean | true | Include execution step data in each message. Set to false to reduce payload size when you only need message text. |
data array of ThreadMessageResponse objects.
GET /v1/threads//messages/
Fetch a single message by ID.Query parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
with_details | boolean | true | Include execution step data. |
ThreadMessageResponse
Message UUID.
UUID of the thread this message belongs to (via
parent_path_id).UUID of the path part node for this message.
Sequence number of this message within the thread (derived from path part name). Use this to display messages in conversation order.
Author role:
USER, ASSISTANT, or SYSTEM. See MessageRole.Message content. See EnrichedThreadMessageContent.
Execution step data for assistant messages, or
null when not requested (with_details=false) or not applicable.UUID of the thread’s path part (the message’s parent in the hierarchy).
Full path from root to this message.
Tenant UUID.
ISO 8601 creation timestamp.
ISO 8601 last-updated timestamp.
EnrichedThreadMessageContent
Thecontent field on a ThreadMessageResponse uses the enriched content type, which resolves citation references at read time.
The message text.
true if the message represents a terminal assistant error.Array of
EnrichedCitation objects. These are the source references the AI used when generating the response.Resolved inline references attached to the message.
EnrichedCitation
Citations link the AI’s response back to specific passages in your knowledge base. Each citation points to a character span within a chunk.UUID of the source chunk.
The verbatim quoted text from the chunk.
0-based character offset of the quote within the chunk’s content string.
Character length of the quote.
UUID of the source document, if resolved.
UUID of the source document version, if resolved.
Human-readable name of the source document, if resolved.
Version number of the source document, if resolved.
UUID of the path part for the chunk, if resolved.
Full path of the chunk in the hierarchy, if resolved.
MessageRole
| Value | Description |
|---|---|
USER | A message written by the end user. |
ASSISTANT | A message generated by the AI. |
SYSTEM | A system-level message (e.g. instructions or context injected by the platform). |