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

# Update a node



## OpenAPI

````yaml /api/openapi.json patch /api/v1/canvases/{canvasId}/direct/nodes/{nodeId}
openapi: 3.0.2
info:
  title: Melius API
  version: '1'
  description: >-
    The Melius REST API. Authenticate with an API key as a bearer token
    (`Authorization: Bearer mel_...`) and select the team to act on with the
    `x-team-id` header. Generations run through the same node + run pipeline as
    the app: create a node on a canvas, start a run, poll the run, then read the
    resulting version asset.
servers:
  - url: https://api.melius.com
security:
  - apiKey: []
    teamId: []
paths:
  /api/v1/canvases/{canvasId}/direct/nodes/{nodeId}:
    patch:
      tags:
        - node
      summary: Update a node
      operationId: node.update
      parameters:
        - name: canvasId
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: nodeId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        description: Body
        content:
          application/json:
            schema:
              type: object
              properties:
                geometry:
                  type: object
                  properties:
                    x:
                      type: number
                    'y':
                      type: number
                    w:
                      type: number
                    h:
                      type: number
                    zIndex:
                      type: number
                  required:
                    - x
                    - 'y'
                    - w
                    - h
                nodeType:
                  type: string
                  enum:
                    - text
                    - image
                    - video
                    - audio
                    - file
                    - group
                    - custom_text
                    - pdf
                    - composite
                    - stitch
                    - magic_resize
                title:
                  type: string
                groupId:
                  type: string
                  format: uuid
                  nullable: true
                modelConfig:
                  type: object
                  properties:
                    model:
                      type: string
                    variant:
                      type: string
                    tier:
                      type: string
                      nullable: true
                    font:
                      type: object
                      properties:
                        source:
                          type: string
                          enum:
                            - custom
                            - google
                        familyName:
                          type: string
                      required:
                        - source
                        - familyName
                  required:
                    - model
                    - variant
                  nullable: true
                textPrompt:
                  type: string
                  nullable: true
                text:
                  type: string
                  maxLength: 100000
                outputAspectRatio:
                  type: string
                  enum:
                    - '21:9'
                    - '16:9'
                    - '4:3'
                    - '5:4'
                    - '3:2'
                    - '1:1'
                    - '2:3'
                    - '3:4'
                    - '4:5'
                    - '9:16'
                    - '9:21'
                  nullable: true
                outputDuration:
                  type: integer
                  minimum: 0
                  exclusiveMinimum: true
                  nullable: true
                outputResolution:
                  oneOf:
                    - type: string
                      enum:
                        - 360p
                        - 480p
                        - 540p
                        - 580p
                        - 720p
                        - 1080p
                        - 1440p
                        - 2160p
                        - 4k
                        - 0.5K
                        - 1K
                        - 2K
                        - 4K
                        - 1k
                        - 2k
                    - type: string
                matchAudioToVideoDuration:
                  type: boolean
                  nullable: true
                seed:
                  type: integer
                  minimum: 0
                  maximum: 2147483647
                  nullable: true
                negativePrompt:
                  type: string
                  nullable: true
                stitchClipOrder:
                  type: array
                  items:
                    type: string
                  nullable: true
                stitchScaleFit:
                  type: string
                  enum:
                    - fit
                    - stretch
                  nullable: true
                stitchAudioOverlays:
                  type: array
                  items:
                    type: object
                    properties:
                      nodeId:
                        type: string
                      startTimeSeconds:
                        type: number
                        minimum: 0
                      trimStartMs:
                        type: integer
                        minimum: 0
                      trimEndMs:
                        type: integer
                        minimum: 0
                        exclusiveMinimum: true
                    required:
                      - nodeId
                      - startTimeSeconds
                  nullable: true
                stitchClipTrims:
                  type: object
                  additionalProperties:
                    type: object
                    properties:
                      trimStartMs:
                        type: integer
                        minimum: 0
                      trimEndMs:
                        type: integer
                        minimum: 0
                        exclusiveMinimum: true
                  nullable: true
                voiceId:
                  type: string
                  minLength: 1
                  nullable: true
                customVoiceId:
                  type: string
                  format: uuid
                  nullable: true
                elevenLabsVoiceSettings:
                  type: object
                  properties:
                    speed:
                      type: number
                      minimum: 0.25
                      maximum: 4
                    stability:
                      type: number
                      minimum: 0
                      maximum: 1
                    similarityBoost:
                      type: number
                      minimum: 0
                      maximum: 1
                    style:
                      type: number
                      minimum: 0
                      maximum: 1
                    speakerBoost:
                      type: boolean
                    removeBackgroundNoise:
                      type: boolean
                    outputFormat:
                      type: string
                      enum:
                        - mp3_44100_128
                        - mp3_44100_192
                        - mp3_22050_32
                        - pcm_16000
                        - pcm_22050
                        - pcm_24000
                        - pcm_44100
                  nullable: true
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    format: uuid
                  nodeType:
                    type: string
                    enum:
                      - text
                      - image
                      - video
                      - audio
                      - file
                      - group
                      - custom_text
                      - pdf
                      - composite
                      - stitch
                      - magic_resize
                  geometry:
                    type: object
                    properties:
                      x:
                        type: number
                      'y':
                        type: number
                      w:
                        type: number
                      h:
                        type: number
                      zIndex:
                        type: number
                    required:
                      - x
                      - 'y'
                      - w
                      - h
                  groupId:
                    type: string
                    format: uuid
                    nullable: true
                  title:
                    type: string
                  autoModel:
                    type: boolean
                    nullable: true
                  fastModel:
                    type: boolean
                    nullable: true
                  modelConfig:
                    type: object
                    properties:
                      model:
                        type: string
                      variant:
                        type: string
                      tier:
                        type: string
                        nullable: true
                      ratios:
                        type: array
                        items:
                          type: string
                      resolution:
                        type: string
                      voiceId:
                        type: string
                      customVoiceId:
                        type: string
                        format: uuid
                      font:
                        type: object
                        properties:
                          source:
                            type: string
                            enum:
                              - custom
                              - google
                          familyName:
                            type: string
                        required:
                          - source
                          - familyName
                    required:
                      - model
                      - variant
                    nullable: true
                  textPrompt:
                    type: string
                    nullable: true
                  outputAspectRatio:
                    type: string
                    enum:
                      - '21:9'
                      - '16:9'
                      - '4:3'
                      - '5:4'
                      - '3:2'
                      - '1:1'
                      - '2:3'
                      - '3:4'
                      - '4:5'
                      - '9:16'
                      - '9:21'
                    nullable: true
                  outputDuration:
                    type: integer
                    minimum: 0
                    exclusiveMinimum: true
                    nullable: true
                  outputResolution:
                    oneOf:
                      - type: string
                        enum:
                          - 360p
                          - 480p
                          - 540p
                          - 580p
                          - 720p
                          - 1080p
                          - 1440p
                          - 2160p
                          - 4k
                          - 0.5K
                          - 1K
                          - 2K
                          - 4K
                          - 1k
                          - 2k
                      - type: string
                  matchAudioToVideoDuration:
                    type: boolean
                    nullable: true
                  seed:
                    type: integer
                    minimum: 0
                    maximum: 2147483647
                    nullable: true
                  negativePrompt:
                    type: string
                    nullable: true
                  stitchClipOrder:
                    type: array
                    items:
                      type: string
                    nullable: true
                  stitchScaleFit:
                    type: string
                    enum:
                      - fit
                      - stretch
                    nullable: true
                  stitchAudioOverlays:
                    type: array
                    items:
                      type: object
                      properties:
                        nodeId:
                          type: string
                        startTimeSeconds:
                          type: number
                          minimum: 0
                        trimStartMs:
                          type: integer
                          minimum: 0
                        trimEndMs:
                          type: integer
                          minimum: 0
                          exclusiveMinimum: true
                      required:
                        - nodeId
                        - startTimeSeconds
                    nullable: true
                  stitchClipTrims:
                    type: object
                    additionalProperties:
                      type: object
                      properties:
                        trimStartMs:
                          type: integer
                          minimum: 0
                        trimEndMs:
                          type: integer
                          minimum: 0
                          exclusiveMinimum: true
                    nullable: true
                  voiceId:
                    type: string
                    nullable: true
                  customVoiceId:
                    type: string
                    nullable: true
                  elevenLabsVoiceSettings:
                    type: object
                    properties:
                      speed:
                        type: number
                        minimum: 0.25
                        maximum: 4
                      stability:
                        type: number
                        minimum: 0
                        maximum: 1
                      similarityBoost:
                        type: number
                        minimum: 0
                        maximum: 1
                      style:
                        type: number
                        minimum: 0
                        maximum: 1
                      speakerBoost:
                        type: boolean
                      removeBackgroundNoise:
                        type: boolean
                      outputFormat:
                        type: string
                        enum:
                          - mp3_44100_128
                          - mp3_44100_192
                          - mp3_22050_32
                          - pcm_16000
                          - pcm_22050
                          - pcm_24000
                          - pcm_44100
                    nullable: true
                  src:
                    type: string
                    nullable: true
                  previewSrc:
                    type: string
                    nullable: true
                  mediaType:
                    type: string
                    enum:
                      - image
                      - video
                      - audio
                      - pdf
                    nullable: true
                  generatedText:
                    type: string
                    nullable: true
                  activeVersionId:
                    type: string
                    format: uuid
                    nullable: true
                  assetDurationInMs:
                    type: integer
                    minimum: 0
                    nullable: true
                  createdByUserId:
                    type: string
                    format: uuid
                    nullable: true
                required:
                  - id
                  - nodeType
                  - geometry
                  - groupId
                  - title
                  - modelConfig
                  - textPrompt
                  - outputAspectRatio
                  - outputDuration
                  - outputResolution
                  - seed
                  - negativePrompt
                  - src
                  - previewSrc
                  - mediaType
                  - generatedText
                  - activeVersionId
                  - assetDurationInMs
                  - createdByUserId
        '401':
          description: Missing, invalid, expired, or revoked API key.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  error:
                    type: string
                  message:
                    type: string
                required:
                  - statusCode
                  - message
        '403':
          description: The API key's user is not a member of the requested team.
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  error:
                    type: string
                  message:
                    type: string
                required:
                  - statusCode
                  - message
        '404':
          description: '404'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
        '409':
          description: '409'
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
        '429':
          description: Rate limit reached — retry after the `Retry-After` header.
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
          content:
            application/json:
              schema:
                type: object
                properties:
                  statusCode:
                    type: integer
                  error:
                    type: string
                  message:
                    type: string
                  retryAfterSeconds:
                    type: integer
                required:
                  - statusCode
                  - message
components:
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: 'A Melius API key (`mel_...`), sent as `Authorization: Bearer <key>`.'
    teamId:
      type: apiKey
      in: header
      name: x-team-id
      description: The team (workspace) to act on. Defaults to the key's team when omitted.

````