type values match the WebSocket event taxonomy; tool payloads are JSON-encoded in each message’s content string.
string
required
Bearer token obtained from Authenticate.
string
required
Member-owned chat UUID.
Chat fields
string
required
Chat UUID.
string | null
required
Agent binding used in WebSocket and REST-turn URLs. Legacy chats can return
null; clients must use their organization’s configured published agent UUID, verified against List Agents. Do not infer it from display name or is_trellis_default. An unbound legacy row remains null after use, so resolve the configured fallback each time.string
required
Display title.
string
Chat preview.
string
required
ISO 8601 creation timestamp.
string
required
ISO 8601 timestamp of latest activity.
string[]
required
Effective project scope persisted on the chat, in first-occurrence request order and limited to at most two IDs. When a request sets scope, the server silently filters invalid, unknown, out-of-organization, non-permitted, duplicate, and excess requested IDs before persisting this list.
Durable-turn recovery fields
boolean
required
Liveness hint for the running turn. A stale running row can return
false; do not use this field alone to unlock the composer.string | null
required
Authoritative signal that the chat owns a running turn. Keep new submissions blocked while this is non-null.
integer
required
Recovery watermark. The returned
messages plus active_turn.partial_content represent canonical content through this sequence. Resume strictly after it.object | null
required
Snapshot of the running turn, or
null.Reconcile a broken stream
Use this response as the correctness baseline on cold load and after a disconnected or uncertain stream. Exact WebSocket replay is an optional optimization; clients must support REST reconciliation even when replay usually succeeds.- Replace local rows with
messagesfrom this response. - Render
active_turn.partial_contentas the in-progress assistant answer. - Replace the local cursor with
running_turn_last_seq. Do not append an older client buffer to the returned snapshot. - If
running_turn_idstill matches, keep the composer locked and send WebSocketresumefrom this watermark. If the socket returns aresumefallback control frame, refetch this endpoint immediately and retry after backoff. - When
running_turn_idis null, terminal history is inmessages.
Messages
array
required
Persisted messages in transcript order.
Panels
object | null
required
Current typed panel as
{id, type, content, entity_id, entity_version}, or null.array
required
Lightweight panel rows shaped as
{id, type, chat_message_id}. Fetch complete panel content with Get Panel.