> ## Documentation Index
> Fetch the complete documentation index at: https://docs.versuno.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Patch specific blocks

> Applies id-based partial updates to selected blocks without replacing the full block tree.

Patch one or many blocks by ID. Only the provided fields are changed on each block.

This endpoint only supports field updates (`content`, `inline`, `meta`).
Structural changes like wrapping and block-type transforms are handled by `POST /assets/{assetId}/blocks/operations`.

<Warning>This endpoint does not create a manual version checkpoint. Use `POST /assets/{assetId}/versions` for manual versioning.</Warning>


## OpenAPI

````yaml /openapi.yaml patch /assets/{assetId}/blocks
openapi: 3.1.0
info:
  title: Versuno Public API
  description: >
    The Versuno Public API lets you manage AI assets, projects, and version
    history programmatically.


    All endpoints except key management require a Bearer API key in the
    `Authorization` header.

    API keys are formatted as
    `uk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`.
  version: 1.0.0
  contact:
    email: support@versuno.ai
servers:
  - url: https://versuno.ai/api/public
    description: Production
  - url: http://localhost:3000/api/public
    description: Local development
security:
  - bearerAuth: []
tags:
  - name: Authentication
    description: Verify API key validity and retrieve the caller's identity.
  - name: Teams
    description: Teams the authenticated user owns or is an active member of.
  - name: Assets
    description: AI assets — prompts, personas, contexts, system prompts, and skills.
  - name: Asset Trash
    description: Single-asset soft-delete, restore, and permanent delete lifecycle.
  - name: Bulk Asset Trash
    description: Bulk trash operations across multiple assets at once.
  - name: Projects
    description: Project folders for organising assets and teams.
  - name: Project Trash
    description: Project trash lifecycle — trashing deletes the entire subtree.
  - name: Versioning
    description: Full-snapshot version history with non-destructive revert support.
  - name: Public Brains
    description: >-
      Graph-based knowledge structures composed of containers (folders/groups)
      and nodes (content items). Read the graph, or run semantic RAG queries
      against it.
  - name: Memory
    description: >-
      The universal agent-memory layer. Capture coding-agent memory, recall it
      semantically, and resolve contradictions. Capture-only, scoped to your API
      key's account.
  - name: Key Management
    description: >-
      Create, update, and delete API keys. These endpoints do not require a
      Bearer token.
paths:
  /assets/{assetId}/blocks:
    patch:
      tags:
        - Assets
      summary: Patch specific blocks
      description: >-
        Applies id-based partial updates to selected blocks without replacing
        the full block tree.
      operationId: patchAssetBlocks
      parameters:
        - name: assetId
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: assetType
          in: query
          required: false
          description: >-
            Optional type guard. If supplied, it must match the asset's actual
            type.
          schema:
            type: string
            enum:
              - prompt
              - persona
              - context
              - system_prompt
              - skill
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - contentBlocks
              properties:
                contentBlocks:
                  type: array
                  minItems: 1
                  items:
                    type: object
                    required:
                      - id
                    properties:
                      id:
                        type: string
                      content:
                        anyOf:
                          - type: string
                          - type: 'null'
                      inline:
                        type: array
                        items:
                          type: object
                          additionalProperties: true
                      meta:
                        type: object
                        additionalProperties: true
            example:
              contentBlocks:
                - id: b_35effee2-0c97-463b-9a0a-8973eca1b4da
                  content: Only this block is updated
      responses:
        '200':
          description: Patched blocks and full updated block tree.
          content:
            application/json:
              schema:
                type: object
                properties:
                  assetId:
                    type: string
                    format: uuid
                  updatedBlockIds:
                    type: array
                    items:
                      type: string
                  content:
                    type: string
                  contentBlocks:
                    type: array
                    items:
                      $ref: '#/components/schemas/Block'
        '400':
          description: Invalid UUID, invalid body, or bad `assetType`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error400'
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error401'
        '403':
          description: Forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error403'
        '404':
          description: Asset or one of the target blocks not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
components:
  schemas:
    Block:
      type: object
      description: A single editor block in an asset's structured content tree.
      required:
        - id
        - type
        - meta
      properties:
        id:
          type: string
          description: Stable block identifier.
          example: b_35effee2-0c97-463b-9a0a-8973eca1b4da
        type:
          type: string
          enum:
            - paragraph
            - heading
            - code
            - divider
            - bullet_list
            - ordered_list
            - todo_list
            - toggle
            - quote
            - callout
            - table
            - block_snippet
            - block_ref
            - asset_ref
          example: paragraph
        content:
          anyOf:
            - type: string
            - type: 'null'
          description: Optional block textual content.
          example: This block was updated
        inline:
          type: array
          description: Optional inline span model.
          items:
            type: object
            additionalProperties: true
        meta:
          type: object
          additionalProperties: true
          description: Block metadata for type-specific attributes.
          example: {}
        children:
          type: array
          items:
            $ref: '#/components/schemas/Block'
    Error400:
      type: object
      properties:
        error:
          type: string
          example: 'Wrong data: assetType is required'
    Error401:
      type: object
      properties:
        error:
          type: string
          example: Invalid API key
    Error403:
      type: object
      properties:
        error:
          type: string
          example: Forbidden
    Error404:
      type: object
      properties:
        error:
          type: string
          example: Not found
  securitySchemes:
    bearerAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        Versuno API key. Must be prefixed with `Bearer`. Format: `Bearer
        uk_live_...`
      x-default: Bearer uk_live_your_api_key_here

````