Skip to main content
POST
Rewind a chat session to before a specific user message — restores both the document and the conversation in one call.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Headers

authorization
string | null

Path Parameters

session_id
string
required

Body

application/json

Rewind a chat session to the state immediately before a specific user message.

turn_index
integer
required

Turn index of the user message to revert. The text of that message is returned in compose_text so the caller can re-edit and resend it. Every chat row at this turn or later is soft-archived (hidden from active reads but retained for audit).

Required range: x >= 0
dry_run
boolean | null
default:false

When true, compute the per-document revert diff WITHOUT committing or archiving anything — used to render a preview before the user confirms.

window_id
string | null

Optional identifier for the client window issuing the revert, used to coordinate concurrent reverts from multiple browser tabs.

Response

Successful Response

Result of a session revert: restored document state and compose-box prefill.

session_id
string
required

Session identifier.

reverted_to_turn
integer
required

Turn index that the active conversation now ends at (the AI reply preceding the reverted user message). -1 when the session is reset to its initial empty state (revert from the very first user message).

compose_text
string
required

The text of the user message that was reverted. Clients should pre-fill the compose box with this so the user can edit and resend.

archived_turn_count
integer
required

Number of chat rows soft-archived by this revert (turns hidden from the UI but retained for audit).

document_state
DocumentState · object | null

Restored document state. Null when the session is reset to empty.

editor_action
string
default:update

Client instruction: 'update' to load the restored document, or 'clear' to reset the editor to empty.

revert_changes
Revert Changes · object | null

Per-document (slug -> change-set) revert diff. Applying these merges the revert onto any concurrent live edits — a conflicting section is surfaced for you to resolve rather than replacing the whole document. On dry_run this is the preview; on a real revert it is what was committed.

dry_run
boolean
default:false

Echoes the request's dry_run: when true nothing was committed/archived — this is a preview only.

redo_checkpoint_id
string | null

The identifier of the pre-revert state. Revert is non-destructive — passing this back to POST /sessions/{id}/redo (with the same turn_index) restores it and un-archives the rolled-back turns, undoing the revert. Null on a dry-run or a first-message reset.