---
title: "Update Public Flow Presentation"
method: PATCH
path: "/v2/public/documents/presentations/{presentation_id}"
tags: ["presentations"]
---

# Update Public Flow Presentation

`PATCH /v2/public/documents/presentations/{presentation_id}`

## Request

- Base URL: `https://api.sanka.com`
- URL: `https://api.sanka.com/v2/public/documents/presentations/{presentation_id}`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/sankahq/apis/sanka-public-api/docs/v2/public/documents/presentations/:presentation_id/patch.ts> (a function with typed inputs; its response is checked against the schema)

Apply edit operations at `expectedRevision`, all or nothing.

## Path parameters

- `presentation_id` string, required

## Query parameters

- `workspace_id` string, nullable

## Headers

- `X-Workspace-Code` string

## Request body

- PresentationPatchRequest
  - `expectedRevision` integer, required
  - `ops` union[], required
    - union
      - InsertSlidesOp
        - `op` 'insert_slides', required
        - `after` string, nullable: Slide to insert after; null inserts first; omit to append.
        - `slides` object[], required
      - ReplaceSlideOp
        - `op` 'replace_slide', required
        - `slideId` string, required
        - `slide` object, required
      - UpdateSlideOp
        - `op` 'update_slide', required
        - `slideId` string, required
        - `set` object, required: Slide fields to change: layout, accent, accentSize, overlay, align, background, notes, hidden.
      - DeleteSlidesOp
        - `op` 'delete_slides', required
        - `slideIds` string[], required
      - MoveSlidesOp
        - `op` 'move_slides', required
        - `slideIds` string[], required
        - `after` string, nullable: Slide to move after; null moves first; omit to move last.
      - InsertBlocksOp
        - `op` 'insert_blocks', required
        - `slideId` string, required
        - `parent` BlockParent
          - `columnId` string, required: A column of a `columns` block.
        - `after` string, nullable: Block to insert after; null inserts first; omit to append.
        - `blocks` object[], required
      - UpdateBlockOp
        - `op` 'update_block', required
        - `slideId` string, required
        - `blockId` string, required
        - `set` object, required: Type-specific block fields to change.
      - ReplaceBlockOp
        - `op` 'replace_block', required
        - `slideId` string, required
        - `blockId` string, required
        - `block` object, required
      - DeleteBlocksOp
        - `op` 'delete_blocks', required
        - `slideId` string, required
        - `blockIds` string[], required
      - MoveBlockOp
        - `op` 'move_block', required
        - `blockId` string, required
        - `toSlideId` string, required
        - `parent` BlockParent
          - `columnId` string, required: A column of a `columns` block.
        - `after` string, nullable: Block to move after; null moves first; omit to move last. On a free slide the order is the stacking order (bottom first).
        - `frame` object, nullable: Where the block goes on a free target slide (required when it moves to another free slide; a line keeps its endpoints). Not allowed for a flow target.
      - SetSlidePositioningOp
        - `op` 'set_slide_positioning', required
        - `slideId` string, required
        - `positioning` 'flow' | 'free', required
        - `frames` object, nullable: To free: a frame per block ID (blocks in columns become top-level boxes; sizing defaults to fixed). Omit to keep every block where the renderer draws it now.
        - `dropShapesAndLines` boolean: To flow: delete the slide's shape and line blocks, which a stack cannot hold.
      - SetPageSizeOp
        - `op` 'set_page_size', required
        - `size` '16:9' | 'a4-landscape', required: Free slides scale uniformly about the stage centre to fit the new size.
      - SetThemeOp
        - `op` 'set_theme', required
        - `theme` object, required
      - SetTitleOp
        - `op` 'set_title', required
        - `title` string, required
      - SetFooterOp
        - `op` 'set_footer', required
        - `footer` object, required

## Response `200`

Successful Response

- UpdatePublicPresentation200Envelope
  - `success` true, required
  - `data` PresentationData, required
    - `id` string, required
    - `programId` string, nullable
    - `workspaceId` string, required
    - `product` 'sanka' | 'flow', required
    - `kind` 'presentation'
    - `title` string, required
    - `revision` integer, required
    - `deck` Deck, required
      - `schema` 'sanka.deck/v1'
      - `page` DeckPage
        - `size` '16:9' | 'a4-landscape'
      - `theme` DeckTheme
        - `id` 'sanka-paper' | 'ink' | 'plain'
        - `version` integer, nullable
      - `footer` DeckFooter
        - `pageNumbers` boolean
        - `text` string
      - `slides` Slide[], required
        - `id` string, nullable
        - `positioning` 'flow' | 'free': `flow` stacks blocks in the layout's body; `free` places every top-level block in its `frame` (array order is stacking order, bottom first).
        - `layout` 'none' | 'accent-left' | 'accent-right' | 'accent-top' | 'accent-background'
        - `accent` union
          - ImageAccent
            - `type` 'image', required
            - `assetId` string, required
            - `fit` 'cover' | 'contain'
            - `focus` Focus
              - …
            - `alt` string
          - ToneAccent
            - `type` 'tone', required
            - `tone` 'accent' | 'accent-soft' | 'inverse' | 'surface', required
        - `accentSize` 's' | 'm' | 'l'
        - `overlay` 'dark' | 'light' | 'none', nullable: Shade over a background accent (accent-background only).
        - `align` SlideAlign
          - `x` 'start' | 'center'
          - `y` 'start' | 'center' | 'end'
        - `background` 'default' | 'surface' | 'accent-soft' | 'inverse'
        - `blocks` union[]
          - union
            - HeadingBlock
              - …
            - TextBlock
              - …
            - ImageBlock
              - …
            - TableBlock
              - …
            - CardsBlock
              - …
            - StatsBlock
              - …
            - StepsBlock
              - …
            - TimelineBlock
              - …
            - QuoteBlock
              - …
            - CalloutBlock
              - …
            - DiagramBlock
              - …
            - SankaDiagramBlock: A saved Sanka diagram. Every view shows its latest revision as an image, so edits to the diagram appear in the deck, its slideshow, share links and new exports.
              - …
            - DividerBlock
              - …
            - ColumnsBlock: Two or three side-by-side stacks of blocks; widths are twelfths and sum to 12.
              - …
            - ShapeBlock: A filled theme-colored shape with optional text (free slides only).
              - …
            - LineBlock: A straight line or arrow between two stage points (free slides only).
              - …
        - `notes` string
        - `hidden` boolean
    - `slideCount` integer, required
    - `outline` string, required: Read-only Markdown outline derived from the deck.
    - `updatedVia` 'app' | 'api' | 'mcp' | 'system', required
    - `sourceRef` string, nullable
    - `pinned` boolean
    - `archivedAt` union
      - string, date-time
      - string
    - `createdById` integer, nullable
    - `updatedById` integer, nullable
    - `createdAt` union
      - string, date-time
      - string
    - `updatedAt` union
      - string, date-time
      - string
    - `appPath` string, required: App-relative URL of the Docs page with this presentation open.
    - `warnings` PresentationWarning[]
      - `code` string, required
      - `path` string, required
      - `message` string, required
  - `meta` EnvelopeMeta, required
    - `ctx_id` string, required
    - `pagination` PaginationMeta
      - `page` integer, required
      - `page_size` integer, required
      - `total` integer, required
      - `next_cursor` string, nullable
    - `toast` ToastMessage
      - `variant` 'success' | 'error' | 'info' | 'warning', required
      - `code` string, required
      - `message` string, required
      - `i18n` ToastMessageI18n, required
        - `en` string, required
        - `ja` string, required

## Other responses

- `401`: Error response
- `403`: Error response
- `422`: Error response

## Changes

- **2026-10-18** `16f03a9e3ab9`: 1 breaking, 1 info
  - added `#/components/schemas/SankaDiagramBlock` to the `data/deck/slides/items/blocks/items/oneOf[subschema #14: ColumnsBlock]/columns/items/blocks/items/` response property `oneOf` list for the response status `200`
  - added `sankaDiagram` discriminator mapping keys to the `data/deck/slides/items/blocks/items/oneOf[subschema #14: ColumnsBlock]/columns/items/blocks/items/` response property for the response status `200`
- **2026-10-18** `cadc7ef65a04`: 1 breaking, 47 info
  - added `#/components/schemas/SankaDiagramBlock, #/components/schemas/ShapeBlock, #/components/schemas/LineBlock` to the `data/deck/slides/items/blocks/items/` response property `oneOf` list for the response status `200`
  - added the new optional request property `ops/items/oneOf[subschema #10: MoveBlockOp]/frame`
  - added `set_page_size, set_slide_positioning` discriminator mapping keys to the `ops/items/` request property
  - added `#/components/schemas/SetSlidePositioningOp, #/components/schemas/SetPageSizeOp` to the `ops/items/` request property `oneOf` list
  - …44 more
- **2026-10-09** `6224f51f9e33`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/sankahq/apis/sanka-public-api/changes/v2/public/documents/presentations/:presentation_id/patch.md)

---

[API](https://skmtc.dev/sankahq/apis/sanka-public-api.md) - [All operations](https://skmtc.dev/sankahq/apis/sanka-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/sankahq/apis/sanka-public-api/revisions/16f03a9e3ab9?raw)
