Skip to main content
Returns the full persisted conversation plus the authoritative recovery snapshot for any running turn. Message 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.
  1. Replace local rows with messages from this response.
  2. Render active_turn.partial_content as the in-progress assistant answer.
  3. Replace the local cursor with running_turn_last_seq. Do not append an older client buffer to the returned snapshot.
  4. If running_turn_id still matches, keep the composer locked and send WebSocket resume from this watermark. If the socket returns a resume fallback control frame, refetch this endpoint immediately and retry after backoff.
  5. When running_turn_id is null, terminal history is in messages.
See WebSocket resume for the full protocol.

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.