Read History
Reads the conversation history for a replica, paginated from the end (bottom-up). Omit limit to return the full history. With limit, the response holds the newest events and eventsStartIndex gives the index of the first returned event; pass it back as beforeEvent to walk further back, stopping when has_more is false. Optionally filter by chat ID. Sleeping and archived workspaces return retained transcript history without waking when persistence is available.
Authorizations
API key authentication. Obtain your API key from the Replicas dashboard under Organization → Settings → API Keys. User-session JWTs are not accepted by /v1/replica endpoints.
Path Parameters
The unique identifier of the replica
Query Parameters
Filter history to a specific chat
Maximum number of events to return, taken from the end of the history. Omit to return the full history.
x >= 1Exclusive upper bound: return only events with an index below this value. Pass the previous response's eventsStartIndex to fetch the page before it. Indexes are stable as new events append to the end.
x >= 0Exclusive upper bound for Codex transcript turns, paged with turnsStartIndex the same way beforeEvent pages events.
x >= 0Response
Successful response
Response containing paginated conversation history
Thread/session ID
History events (paginated from the end)
Total number of events in the full history, not just this page
Whether earlier events exist before this page
Index of the first returned event within the full history. Pass it back as beforeEvent to fetch the preceding page. Absent when the full history was returned.
Index of the first returned Codex transcript turn, used with beforeTurn. Present only when the response includes codexAspTranscript.
Currently active coding agent
claude, codex, cursor, opencode, pi, null Whether the workspace was just woken from a sleeping or archived state. Retry in 30-90 seconds.
Native Codex ASP transcript when available
Sender attribution records for user messages in this chat. In team workspaces, each sendMessage call records the authenticated user; clients can use this to label messages with the actual sender's name instead of "You".