Get Process Conversation

Cache-first: if we already have a cached body for this conversation, serve it without an RPC. Writes (chat/stream completion + create_process_conversation) refresh the cache, so the cache stays current on the happy path. Clients can force a fresh fetch with ?refresh=1 (e.g. after a device-side import or when the user explicitly hits a sync button). Offline processes always serve from cache via the existing fallback.

?since_seq=N returns only the messages appended after index N in the cached history. Combined with the response's last_seq, clients can do efficient cursor-based catchup (e.g. SPA reconnecting its WebSocket sends since_seq=<last_value_we_saw> to fetch only messages it missed instead of replaying the entire 1-2 MB body). Append-only contract is guaranteed by the sidecar's trajectory.jsonl writer.

?tail=N returns only the last N messages (the default conversation open — the SPA no longer pulls the whole body just to show the bottom of the thread). ?before_seq=C&limit=M pages backward: the M messages immediately before index C (scroll-up). Both add earliest_seq (index of the first returned message) and has_more (older messages exist above) to the response so the client knows whether to keep paging. These are mutually exclusive with each other and take precedence over since_seq; sending none of them keeps the legacy full-body shape.

get/api/processes/{process_id}/conversations/{session_id}

Path parameters

process_idstring required
session_idstring required

Query parameters

refreshinteger
since_seqinteger
tailinteger
before_seqinteger nullable
limitinteger
figures_rawinteger

Headers

authorizationstring nullable

Response

Successful Response

object required

Changes