Revisions

Revisions are immutable snapshots of saved post and page content. They are separate from archival state and are used to inspect, compare, autosave, and restore content.

Authentication

All routes require a bearer token and the listed capability. Saved revisions are accessible through the caller's publication scope. An autosave is visible only to the principal who created it.

Routes

Route Methods Capability Required input Optional input and behavior Success result
/revision/list GET, POST revision.list Exactly one of post_id or page_id Matching publication selector, pagination Paginated revisions.
/revision/get POST revision.list revision_id Revision and snapshot.
/revision/compare POST revision.list base_revision_id, target_revision_id comparison.
/revision/autosave POST post.save or page.save Exactly one of post_id or page_id Editable content fields Autosaved revision.
/revision/restore POST revision.restore revision_id Restored post or page.

Revision model

{
  "revision_id": "REVISION_UUID",
  "publication_id": "PUBLICATION_UUID",
  "content_type": "post",
  "content_id": "POST_UUID",
  "kind": "saved",
  "created_at": "2026-08-19 00:00:00.000000",
  "updated_at": "2026-08-19 00:00:00.000000"
}

content_type is post or page; kind is saved or autosave. Successful normal post and page saves create a saved revision. Lifecycle actions do not create revisions.

Autosave and restore

Autosave accepts the ordinary editable fields for the selected content. Post fields are title, slug, excerpt, category_id, body, body_format, visibility, tag_ids, and author_ids; page fields are title, slug, body, body_format, and visibility.

{
  "post_id": "POST_UUID",
  "title": "Unfinished title",
  "body": "Unfinished draft text",
  "tag_ids": ["TAG_UUID"]
}

Autosave merges supplied fields over the current saved snapshot and replaces the caller's prior autosave for that content. It never changes the live post or page. A successful ordinary save clears the caller's autosave.

Compare revisions from the same content:

{
  "base_revision_id": "BASE_REVISION_UUID",
  "target_revision_id": "TARGET_REVISION_UUID"
}

The result contains both revision snapshots and changed_fields. Restore applies the selected snapshot through normal validation, creates a new saved revision, and preserves the content's current lifecycle state. Permanently deleting a post or page removes all of its revisions.