# Blocks operations

> Block-level structural operations.



6 operations. Names, descriptions, and behavior flags come from the canonical contract.

## Operations

- [`blocks.list`](/document-api/reference/blocks/list) (read): List top-level blocks in document order with IDs, types, text previews, and optional full text when includeText:true. Supports pagination via offset/limit, optional nodeType filtering, single-story scoping via `in: <StoryLocator>`, and final/original/redline projection of numbering metadata without changing block membership.
- [`blocks.delete`](/document-api/reference/blocks/delete) (mutates, tracked): Delete an entire block node (paragraph, heading, list item, table, image, or sdt) deterministically.
- [`blocks.deleteRange`](/document-api/reference/blocks/delete-range) (mutates, tracked): Delete a contiguous range of top-level blocks between two endpoints (inclusive). Both endpoints must be direct children of the document node. Supports dry-run preview.
- [`blocks.split`](/document-api/reference/blocks/split) (mutates, tracked): Split a paragraph at a visible-text offset, producing two paragraphs. Preserves unambiguous simple run properties around the cut. Rejects when the paragraph contains fields, content controls, drawings, equations, or unsupported tracked-change wrappers. Available on v2-backed sessions only; v1-backed sessions currently return `CAPABILITY_UNAVAILABLE`.
- [`blocks.merge`](/document-api/reference/blocks/merge) (mutates, tracked): Merge two adjacent paragraphs in the same story. The first paragraph keeps its pPr; the second paragraph is removed. Rejects when either paragraph carries a w:sectPr or when their numbering definitions differ. Available on v2-backed sessions only; v1-backed sessions currently return `CAPABILITY_UNAVAILABLE`.
- [`blocks.move`](/document-api/reference/blocks/move) (mutates, tracked): Move a paragraph within the same story to a new anchor paragraph (before or after). Cross-story and relationship-bearing moves reject with named reasons. Tracked-mode authoring emits paired `<w:moveFrom>` / `<w:moveTo>` review state with explicit move range marker identity; safe content (no comment/bookmark/permission anchors and no pre-existing tracked wrappers) is required for tracked authoring. Available on v2-backed sessions only; v1-backed sessions currently return `CAPABILITY_UNAVAILABLE`.

