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

# Duplicate a Tella Motion document

> Copies a document under the same owner and optionally edits the copy in the same request with `commands`. Use it to reuse a design with other content, such as the same title card with another heading. The copy is independent of the original.



## OpenAPI

````yaml /openapi.json post /v1/motion/documents/{id}/duplicate
openapi: 3.0.3
info:
  description: >-
    The Tella Public API allows you to programmatically access your videos and
    playlists, including transcripts, chapters, and thumbnails.


    ## Authentication


    All requests require a Bearer token in the Authorization header:

    ```

    Authorization: Bearer tella_pk_xxxxx...

    ```


    API keys can be generated in your Tella workspace settings.


    ## Rate Limiting


    The API is rate-limited to 200 requests per minute per user within a
    workspace.

    Rate limit information is returned in response headers:

    - `RateLimit-Policy`: Named quota, request limit, and window in seconds

    - `RateLimit`: Remaining quota and seconds until reset

    - `X-RateLimit-Limit`: Maximum requests per window

    - `X-RateLimit-Remaining`: Remaining requests in current window

    - `X-RateLimit-Reset`: Unix timestamp in milliseconds when the window resets


    A `429 Too Many Requests` response also includes `Retry-After` in seconds.
  title: Tella Public API
  version: 1.0.0
servers:
  - description: Production
    url: https://api.tella.com
security: []
tags:
  - description: Video operations
    name: Videos
  - description: Sections of a video
    name: Clips
  - description: Playlist operations
    name: Playlists
  - description: Sidebar groups for organizing playlists
    name: Playlist Groups
  - description: Tags for categorizing and filtering videos
    name: Tags
  - description: 'Tella''s editor agent, working in a video: start a chat and follow it'
    name: Agent chats
  - description: >-
      Viewing analytics for a video or across the workspace: plays, watch time,
      retention, geography, referrers
    name: Analytics
  - description: The signed-in user, their workspace, its plan and agent credits
    name: Account
  - description: Personal, workspace, and default video backgrounds
    name: Backgrounds
  - description: >-
      Reusable media saved to a workspace, plus Tella's curated sound effect and
      background music catalogs — the same items the editor's media panels show
    name: Library
  - description: >-
      Motion graphics documents a video plays live as a Tella Motion clip,
      overlay or b-roll, edited with the editor's own commands
    name: Tella Motion
  - description: >-
      Screen walkthroughs an agent films of a web page with no one recording.
      Takes are started and read over the MCP server
    name: Auto Capture
  - description: Webhook endpoint management
    name: Webhooks
externalDocs:
  description: API versioning and deprecation policy
  url: https://www.tella.com/docs/versioning
paths:
  /v1/motion/documents/{id}/duplicate:
    post:
      tags:
        - Tella Motion
      summary: Duplicate a Tella Motion document
      description: >-
        Copies a document under the same owner and optionally edits the copy in
        the same request with `commands`. Use it to reuse a design with other
        content, such as the same title card with another heading. The copy is
        independent of the original.
      operationId: duplicateMotionDocument
      parameters:
        - description: Tella Motion document ID (ffd_…), from `GET /v1/motion/documents`.
          in: path
          name: id
          required: true
          schema:
            description: Tella Motion document ID (ffd_…), from `GET /v1/motion/documents`.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DuplicateMotionDocumentRequest'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DuplicateMotionDocumentResponse'
          description: Created
          headers:
            Deprecation:
              $ref: '#/components/headers/Deprecation'
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimitPolicy'
            Sunset:
              $ref: '#/components/headers/Sunset'
            X-RateLimit-Limit:
              $ref: '#/components/headers/XRateLimitLimit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/XRateLimitRemaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/XRateLimitReset'
        '400':
          content:
            application/json:
              example:
                docsUrl: https://docs.tella.com/
                error: bad_request
                message: The request was malformed or contained invalid parameters.
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: The request was malformed or contained invalid parameters.
          headers:
            Deprecation:
              $ref: '#/components/headers/Deprecation'
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimitPolicy'
            Sunset:
              $ref: '#/components/headers/Sunset'
            X-RateLimit-Limit:
              $ref: '#/components/headers/XRateLimitLimit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/XRateLimitRemaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/XRateLimitReset'
        '401':
          content:
            application/json:
              example:
                docsUrl: https://docs.tella.com/
                error: unauthorized
                message: Authentication is required. Provide a valid API key.
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Authentication is required. Provide a valid API key.
          headers:
            Deprecation:
              $ref: '#/components/headers/Deprecation'
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimitPolicy'
            Sunset:
              $ref: '#/components/headers/Sunset'
            X-RateLimit-Limit:
              $ref: '#/components/headers/XRateLimitLimit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/XRateLimitRemaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/XRateLimitReset'
        '403':
          content:
            application/json:
              example:
                docsUrl: https://docs.tella.com/
                error: forbidden
                message: You don't have permission to access this resource.
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: You don't have permission to access this resource.
          headers:
            Deprecation:
              $ref: '#/components/headers/Deprecation'
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimitPolicy'
            Sunset:
              $ref: '#/components/headers/Sunset'
            X-RateLimit-Limit:
              $ref: '#/components/headers/XRateLimitLimit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/XRateLimitRemaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/XRateLimitReset'
        '404':
          content:
            application/json:
              example:
                docsUrl: https://docs.tella.com/
                error: not_found
                message: The requested resource was not found.
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: The requested resource was not found.
          headers:
            Deprecation:
              $ref: '#/components/headers/Deprecation'
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimitPolicy'
            Sunset:
              $ref: '#/components/headers/Sunset'
            X-RateLimit-Limit:
              $ref: '#/components/headers/XRateLimitLimit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/XRateLimitRemaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/XRateLimitReset'
        '409':
          content:
            application/json:
              example:
                docsUrl: https://docs.tella.com/
                error: conflict
                message: >-
                  The request conflicts with the resource's current state, e.g.
                  an Idempotency-Key whose first request is still in progress.
                  Retry once it settles.
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: >-
            The request conflicts with the resource's current state, e.g. an
            Idempotency-Key whose first request is still in progress. Retry once
            it settles.
          headers:
            Deprecation:
              $ref: '#/components/headers/Deprecation'
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimitPolicy'
            Sunset:
              $ref: '#/components/headers/Sunset'
            X-RateLimit-Limit:
              $ref: '#/components/headers/XRateLimitLimit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/XRateLimitRemaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/XRateLimitReset'
        '429':
          content:
            application/json:
              example:
                docsUrl: https://docs.tella.com/
                error: rate_limited
                message: You have exceeded the rate limit. Please slow down.
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: You have exceeded the rate limit. Please slow down.
          headers:
            Deprecation:
              $ref: '#/components/headers/Deprecation'
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimitPolicy'
            Retry-After:
              $ref: '#/components/headers/RetryAfter'
            Sunset:
              $ref: '#/components/headers/Sunset'
            X-RateLimit-Limit:
              $ref: '#/components/headers/XRateLimitLimit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/XRateLimitRemaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/XRateLimitReset'
        '500':
          content:
            application/json:
              example:
                docsUrl: https://docs.tella.com/
                error: server_error
                message: An unexpected error occurred
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: An unexpected error occurred
          headers:
            Deprecation:
              $ref: '#/components/headers/Deprecation'
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimitPolicy'
            Sunset:
              $ref: '#/components/headers/Sunset'
            X-RateLimit-Limit:
              $ref: '#/components/headers/XRateLimitLimit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/XRateLimitRemaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/XRateLimitReset'
        '501':
          content:
            application/json:
              example:
                docsUrl: https://docs.tella.com/
                error: not_implemented
                message: The requested operation is not implemented.
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: The requested operation is not implemented.
          headers:
            Deprecation:
              $ref: '#/components/headers/Deprecation'
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimitPolicy'
            Sunset:
              $ref: '#/components/headers/Sunset'
            X-RateLimit-Limit:
              $ref: '#/components/headers/XRateLimitLimit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/XRateLimitRemaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/XRateLimitReset'
        '503':
          content:
            application/json:
              example:
                docsUrl: https://docs.tella.com/
                error: unavailable
                message: >-
                  A dependency was unavailable and the request was not executed.
                  Safe to resend unchanged after the Retry-After delay.
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: >-
            A dependency was unavailable and the request was not executed. Safe
            to resend unchanged after the Retry-After delay.
          headers:
            Deprecation:
              $ref: '#/components/headers/Deprecation'
            RateLimit:
              $ref: '#/components/headers/RateLimit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimitPolicy'
            Sunset:
              $ref: '#/components/headers/Sunset'
            X-RateLimit-Limit:
              $ref: '#/components/headers/XRateLimitLimit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/XRateLimitRemaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/XRateLimitReset'
      security:
        - BearerAuth: []
components:
  schemas:
    DuplicateMotionDocumentRequest:
      description: >-
        Copy a document under the same owner. The copy is independent: later
        edits to either do not reach the other.
      properties:
        commands:
          description: >-
            Edits to run on the copy, as `POST
            /v1/motion/documents/{id}/commands` takes them, e.g. `setTitle` to
            give the same title card another heading.
          items:
            $ref: '#/components/schemas/MotionEdit'
          maxItems: 256
          minItems: 1
          type: array
        name:
          description: The copy's name.
          example: 'Topic title: Pricing'
          minLength: 1
          type: string
      required:
        - name
      type: object
    DuplicateMotionDocumentResponse:
      additionalProperties: false
      description: The copy and, with commands, the batch's result
      properties:
        applied:
          allOf:
            - $ref: '#/components/schemas/MotionApplyResult'
          description: 'With `commands`: the batch''s result on the copy.'
        document:
          $ref: '#/components/schemas/MotionDocument'
      required:
        - document
      type: object
    ErrorResponse:
      additionalProperties: false
      description: Standard error response format
      properties:
        docsUrl:
          description: Link to Tella API documentation
          example: https://docs.tella.com/
          format: uri
          type: string
        error:
          description: Machine-readable error code
          enum:
            - bad_request
            - unauthorized
            - forbidden
            - not_found
            - rate_limited
            - server_error
            - conflict
            - edit_conflict
            - not_implemented
            - unavailable
          example: not_found
          type: string
        message:
          description: Human-readable error message
          example: Resource not found
          type: string
      required:
        - error
        - message
        - docsUrl
      type: object
    MotionEdit:
      anyOf:
        - $ref: '#/components/schemas/MotionCommandSetCurve'
        - $ref: '#/components/schemas/MotionCommandBindProperty'
        - $ref: '#/components/schemas/MotionCommandSplit'
        - $ref: '#/components/schemas/MotionCommandTrim'
        - $ref: '#/components/schemas/MotionCommandDelete'
        - $ref: '#/components/schemas/MotionCommandDuplicate'
        - $ref: '#/components/schemas/MotionCommandSetSpeed'
        - $ref: '#/components/schemas/MotionCommandSetTransition'
        - $ref: '#/components/schemas/MotionCommandAddTitle'
        - $ref: '#/components/schemas/MotionCommandAddShape'
        - $ref: '#/components/schemas/MotionCommandAddMedia'
        - $ref: '#/components/schemas/MotionCommandSetTitle'
        - $ref: '#/components/schemas/MotionCommandSetShape'
        - $ref: '#/components/schemas/MotionCommandAnimate'
        - $ref: '#/components/schemas/MotionCommandSetProperty'
        - $ref: '#/components/schemas/MotionCommandSetKeyframes'
        - $ref: '#/components/schemas/MotionCommandEditKeyframe'
        - $ref: '#/components/schemas/MotionCommandRemoveKeyframes'
        - $ref: '#/components/schemas/MotionCommandAddEffect'
        - $ref: '#/components/schemas/MotionCommandSetEffect'
        - $ref: '#/components/schemas/MotionCommandRemoveEffect'
        - $ref: '#/components/schemas/MotionCommandMoveEffect'
        - $ref: '#/components/schemas/MotionCommandSetMasks'
        - $ref: '#/components/schemas/MotionCommandSetMatte'
        - $ref: '#/components/schemas/MotionCommandGroup'
        - $ref: '#/components/schemas/MotionCommandUngroup'
        - $ref: '#/components/schemas/MotionCommandStagger'
        - $ref: '#/components/schemas/MotionCommandApplyLook'
        - $ref: '#/components/schemas/MotionCommandFitCanvas'
        - $ref: '#/components/schemas/MotionCommandSetMarkers'
        - $ref: '#/components/schemas/MotionCommandSetTimeRemap'
        - $ref: '#/components/schemas/MotionCommandSetExpression'
        - $ref: '#/components/schemas/MotionCommandSetTextAnimation'
        - $ref: '#/components/schemas/MotionCommandAddPath'
        - $ref: '#/components/schemas/MotionCommandSetPath'
        - $ref: '#/components/schemas/MotionCommandDuck'
        - $ref: '#/components/schemas/MotionCommandExpect'
        - $ref: '#/components/schemas/MotionCommandSetFades'
        - $ref: '#/components/schemas/MotionOp'
      description: >-
        One edit in a batch: an editor command (camelCase `type`, times in
        seconds) or an op (dotted `type`, raw render timeline values). See
        https://docs.tella.com/mcp-tools/motion-commands for every command and
        op with an example.
    MotionApplyResult:
      additionalProperties: {}
      description: >-
        The outcome of a batch. On failure `ok` is false and the error names the
        failing item's index; nothing is applied.
      properties:
        changed:
          type: boolean
        ok:
          type: boolean
        seq:
          description: The document's revision after the batch.
          maximum: 9007199254740991
          minimum: -9007199254740991
          type: integer
      required:
        - ok
      type: object
    MotionDocument:
      additionalProperties: false
      description: >-
        A Tella Motion document: a render timeline (a tree of media, sound,
        text, shape, sequence and composition nodes) that a Tella Motion clip,
        overlay or b-roll plays live, so edits show in the video at once.
      properties:
        createdAt:
          example: '2026-10-22T10:00:00.000Z'
          type: string
        id:
          description: Document ID
          example: ffd_abc123
          type: string
        name:
          example: Lower third
          type: string
        ownerID:
          description: >-
            The owner's ID: the video's, for `story` documents; yours, for
            `user` documents.
          example: vid_abc123
          type: string
        sceneID:
          description: >-
            The clip that plays this document, when it is a Tella Motion clip's.
            Absent for overlays and b-roll.
          type: string
        scope:
          description: >-
            Who owns the document: `story` for a video's own documents (its
            Tella Motion clips, overlays and b-roll), `user` for one of yours
            that no video plays yet.
          example: story
          type: string
      required:
        - id
        - name
        - scope
        - ownerID
        - createdAt
      type: object
    MotionCommandSetCurve:
      additionalProperties: false
      description: >-
        Sets a named curve: a number, keys on the canvas clock, or an expression
        over other curves. `null` removes it.
      properties:
        name:
          description: The curve's name.
          pattern: ^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$
          type: string
        type:
          enum:
            - setCurve
          type: string
        value:
          anyOf:
            - type: number
            - items:
                additionalProperties: false
                properties:
                  at:
                    description: Seconds on the canvas clock.
                    minimum: 0
                    type: number
                  easing:
                    description: >-
                      Into the next key; hold steps (a shot's value until a
                      cut).
                    enum:
                      - linear
                      - hold
                      - ease
                      - easeIn
                      - easeOut
                    type: string
                  value:
                    type: number
                required:
                  - at
                  - value
                type: object
              maxItems: 1000
              minItems: 1
              type: array
            - $ref: '#/components/schemas/__schema0'
          description: >-
            A number, keys, or an expression over other curves; null removes it.
            Every reader (bindProperty, a shader uniform) sees the same value at
            the same canvas time.
          nullable: true
      required:
        - type
        - name
        - value
      title: setCurve
      type: object
    MotionCommandBindProperty:
      additionalProperties: false
      description: >-
        Binds a node's property to an expression: a curve, the time, arithmetic
        over them, or where a canvas point lands through a lens shader's camera.
        Bound to a title's `text`, the title shows the number.
      properties:
        node:
          maxLength: 4096
          minLength: 1
          type: string
        property:
          description: >-
            A numeric property in the units commands take (x, y px, rotation °,
            scale and opacity as fractions, a field:… such as a shader uniform),
            or text on a title: its text becomes the number.
          type: string
        text:
          additionalProperties: false
          description: 'For text: around the number (0 decimals by default).'
          properties:
            decimals:
              maximum: 6
              minimum: 0
              type: integer
            prefix:
              maxLength: 200
              type: string
            suffix:
              maxLength: 200
              type: string
          type: object
        to:
          $ref: '#/components/schemas/__schema0'
          allOf:
            - $ref: '#/components/schemas/__schema1'
          description: >-
            {curve}, {time: 'seconds'}, {op, args}, or {project, axis}: where a
            canvas point lands through a camera, so a label follows a box a lens
            shader films. A plain number unbinds it.
        type:
          enum:
            - bindProperty
          type: string
      required:
        - type
        - node
        - property
        - to
      title: bindProperty
      type: object
    MotionCommandSplit:
      additionalProperties: false
      description: Splits a node in two at a time.
      properties:
        at:
          description: Where to split, on the node's composition clock.
          minimum: 0
          type: number
        newNodeId:
          description: The second half's id; generated when left out.
          maxLength: 200
          minLength: 1
          type: string
        node:
          description: >-
            A node's id: ids are unique in the document, so a node inside a
            composition is named by its id alone. A path through instances
            (scene.1/title) is accepted too.
          maxLength: 2000
          type: string
        type:
          enum:
            - split
          type: string
      required:
        - type
        - node
        - at
      title: split
      type: object
    MotionCommandTrim:
      additionalProperties: false
      description: >-
        Moves a node's start or end. A new start trims the head: what plays
        stays put.
      properties:
        end:
          description: The new end.
          minimum: 0
          type: number
        node:
          description: >-
            A node's id: ids are unique in the document, so a node inside a
            composition is named by its id alone. A path through instances
            (scene.1/title) is accepted too.
          maxLength: 2000
          type: string
        ripple:
          description: >-
            In a sequence, the node keeps its start and what follows moves by as
            much as its length changes.
          type: boolean
        start:
          description: The new start; what plays stays put.
          minimum: 0
          type: number
        type:
          enum:
            - trim
          type: string
      required:
        - type
        - node
      title: trim
      type: object
    MotionCommandDelete:
      additionalProperties: false
      description: Removes a node. `ripple` closes the gap it leaves in a sequence.
      properties:
        node:
          description: >-
            A node's id: ids are unique in the document, so a node inside a
            composition is named by its id alone. A path through instances
            (scene.1/title) is accepted too.
          maxLength: 2000
          type: string
        ripple:
          description: In a sequence, close the gap it leaves.
          type: boolean
        type:
          enum:
            - delete
          type: string
      required:
        - type
        - node
      title: delete
      type: object
    MotionCommandDuplicate:
      additionalProperties: false
      description: Copies a node, with its keys and effects, next to itself.
      properties:
        newNodeId:
          description: The copy's id; generated when left out.
          maxLength: 200
          minLength: 1
          type: string
        node:
          description: >-
            A node's id: ids are unique in the document, so a node inside a
            composition is named by its id alone. A path through instances
            (scene.1/title) is accepted too.
          maxLength: 2000
          type: string
        type:
          enum:
            - duplicate
          type: string
      required:
        - type
        - node
      title: duplicate
      type: object
    MotionCommandSetSpeed:
      additionalProperties: false
      description: Plays a node faster or slower (0.05 to 20).
      properties:
        node:
          description: >-
            A node's id: ids are unique in the document, so a node inside a
            composition is named by its id alone. A path through instances
            (scene.1/title) is accepted too.
          maxLength: 2000
          type: string
        speed:
          description: 2 plays twice as fast.
          maximum: 20
          minimum: 0.05
          type: number
        type:
          enum:
            - setSpeed
          type: string
      required:
        - type
        - node
        - speed
      title: setSpeed
      type: object
    MotionCommandSetTransition:
      additionalProperties: false
      description: >-
        Sets the transition into a sequence child from the child that ends where
        it starts.
      properties:
        duration:
          description: Seconds, 0.5 by default; never longer than either child.
          exclusiveMinimum: true
          minimum: 0
          type: number
        kind:
          description: >-
            crossfade dissolves; left, right, up and down wipe in that
            direction; none removes the transition.
          enum:
            - none
            - crossfade
            - left
            - right
            - up
            - down
          type: string
        node:
          description: >-
            The sequence child the transition leads into; another child must end
            where it starts.
          maxLength: 2000
          type: string
        type:
          enum:
            - setTransition
          type: string
      required:
        - type
        - node
        - kind
      title: setTransition
      type: object
    MotionCommandAddTitle:
      additionalProperties: false
      description: >-
        Adds a title (text). `box` places the top-left of its first line and the
        width it wraps and aligns in.
      properties:
        align:
          description: Within the box's width; center for a new title.
          enum:
            - left
            - center
            - right
          type: string
        box:
          additionalProperties: false
          description: >-
            Where the text lays out, px in its composition: x, y the top-left of
            the first line's box (fontSize × lineHeight tall, glyphs sit inside
            it by their font's metrics), width what it wraps and aligns in.
          properties:
            width:
              exclusiveMinimum: true
              minimum: 0
              type: number
            x:
              type: number
            'y':
              type: number
          required:
            - x
            - 'y'
            - width
          type: object
        color:
          description: Text colour; white for a new title.
          pattern: ^#[0-9a-fA-F]{6}$
          type: string
        duration:
          description: Seconds; 3 by default.
          exclusiveMinimum: true
          minimum: 0
          type: number
        font:
          description: >-
            A font from list_motion_fonts: a catalog slug, e.g. inter, or a font
            uploaded to your library or your workspace's by its id (mi_…).
          type: string
        fontSize:
          description: Px; 96 for a new title.
          exclusiveMinimum: true
          maximum: 2000
          minimum: 0
          type: number
        letterSpacing:
          description: >-
            Added between characters, in em: 0.05 is 5% of the font size. 0 for
            a new title.
          maximum: 2
          minimum: -1
          type: number
        lineHeight:
          description: A multiple of the font size; 1.2 for a new title.
          maximum: 4
          minimum: 0.5
          type: number
        nodeId:
          description: The new node's id; generated when left out.
          maxLength: 200
          minLength: 1
          type: string
        parent:
          description: >-
            Where the new node goes: a sequence, a group, a composition instance
            (its composition's root), or "" for the canvas. The canvas when left
            out.
          maxLength: 2000
          type: string
        start:
          description: On the clock of the composition it goes in.
          minimum: 0
          type: number
        text:
          description: What it says; `Title` for a new title.
          maxLength: 2000
          type: string
        type:
          enum:
            - addTitle
          type: string
        weight:
          description: >-
            100 (thin) to 900 (black); list_motion_fonts gives each font's
            range, and a font draws the nearest weight it has.
          maximum: 900
          minimum: 100
          type: integer
      required:
        - type
        - start
      title: addTitle
      type: object
    MotionCommandAddShape:
      additionalProperties: false
      description: >-
        Adds a shape: `fill` covers its composition, `rect` and `circle` draw in
        `box`. A `#00000000` fill with backdrop effects is an adjustment layer.
      properties:
        box:
          additionalProperties: false
          description: >-
            Where a rect or circle draws, px in its composition; a circle fits
            the box's smaller side, centred. A rect or circle keeps its box when
            left out.
          properties:
            height:
              exclusiveMinimum: true
              minimum: 0
              type: number
            width:
              exclusiveMinimum: true
              minimum: 0
              type: number
            x:
              type: number
            'y':
              type: number
          required:
            - x
            - 'y'
            - width
            - height
          type: object
        color:
          description: >-
            #rrggbbaa for a see-through fill; #00000000 makes a shape whose
            backdrop effects adjust what is beneath it.
          pattern: ^#[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$
          type: string
        duration:
          description: Seconds; 3 by default.
          exclusiveMinimum: true
          minimum: 0
          type: number
        nodeId:
          description: The new node's id; generated when left out.
          maxLength: 200
          minLength: 1
          type: string
        parent:
          description: >-
            Where the new node goes: a sequence, a group, a composition instance
            (its composition's root), or "" for the canvas. The canvas when left
            out.
          maxLength: 2000
          type: string
        radius:
          description: A rect's corner radius, px.
          minimum: 0
          type: number
        shape:
          description: fill covers its composition; rect when box is given.
          enum:
            - fill
            - rect
            - circle
          type: string
        start:
          description: On the clock of the composition it goes in.
          minimum: 0
          type: number
        type:
          enum:
            - addShape
          type: string
      required:
        - type
        - start
      title: addShape
      type: object
    MotionCommandAddMedia:
      additionalProperties: false
      description: >-
        Places a video, image or sound: `mediaId` for media already in the
        document (`list_motion_media`), or `sourceId` for an upload, which Tella
        reads as the image, video or sound it is.
      properties:
        duration:
          description: >-
            How long it plays: an image 3s by default; video and audio play from
            their start for this long, else whole, cut where the composition
            ends.
          exclusiveMinimum: true
          minimum: 0
          type: number
        mediaId:
          description: Media already in the document, from list_motion_media.
          maxLength: 200
          minLength: 1
          type: string
        nodeId:
          description: The new node's id; generated when left out.
          maxLength: 200
          minLength: 1
          type: string
        parent:
          description: >-
            Where the new node goes: a sequence, a group, a composition instance
            (its composition's root), or "" for the canvas. The canvas when left
            out.
          maxLength: 2000
          type: string
        ripple:
          description: >-
            Into a sequence: what starts at start or later moves on to make
            room, instead of refusing an overlap. A clip that start falls inside
            is still refused; split it first.
          type: boolean
        sourceId:
          description: >-
            Or an upload (su_…): a source from create_source, a chat attachment,
            or a library item's sourceId. Tella reads from the upload whether it
            is an image, a video or a sound and declares the asset to match.
            Pass exactly one of mediaId and sourceId.
          maxLength: 200
          minLength: 1
          type: string
        start:
          description: On the clock of the composition it goes in.
          minimum: 0
          type: number
        type:
          enum:
            - addMedia
          type: string
      required:
        - type
        - start
      title: addMedia
      type: object
    MotionCommandSetTitle:
      additionalProperties: false
      description: Changes a title's text, box, font, size, colour or spacing.
      properties:
        align:
          description: Within the box's width; center for a new title.
          enum:
            - left
            - center
            - right
          type: string
        box:
          additionalProperties: false
          description: >-
            Where the text lays out, px in its composition: x, y the top-left of
            the first line's box (fontSize × lineHeight tall, glyphs sit inside
            it by their font's metrics), width what it wraps and aligns in.
          properties:
            width:
              exclusiveMinimum: true
              minimum: 0
              type: number
            x:
              type: number
            'y':
              type: number
          required:
            - x
            - 'y'
            - width
          type: object
        color:
          description: Text colour; white for a new title.
          pattern: ^#[0-9a-fA-F]{6}$
          type: string
        font:
          description: >-
            A font from list_motion_fonts: a catalog slug, e.g. inter, or a font
            uploaded to your library or your workspace's by its id (mi_…).
          type: string
        fontSize:
          description: Px; 96 for a new title.
          exclusiveMinimum: true
          maximum: 2000
          minimum: 0
          type: number
        letterSpacing:
          description: >-
            Added between characters, in em: 0.05 is 5% of the font size. 0 for
            a new title.
          maximum: 2
          minimum: -1
          type: number
        lineHeight:
          description: A multiple of the font size; 1.2 for a new title.
          maximum: 4
          minimum: 0.5
          type: number
        node:
          description: >-
            A node's id: ids are unique in the document, so a node inside a
            composition is named by its id alone. A path through instances
            (scene.1/title) is accepted too.
          maxLength: 2000
          type: string
        text:
          description: What it says; `Title` for a new title.
          maxLength: 2000
          type: string
        type:
          enum:
            - setTitle
          type: string
        weight:
          description: >-
            100 (thin) to 900 (black); list_motion_fonts gives each font's
            range, and a font draws the nearest weight it has.
          maximum: 900
          minimum: 100
          type: integer
      required:
        - type
        - node
      title: setTitle
      type: object
    MotionCommandSetShape:
      additionalProperties: false
      description: Changes a shape's kind, box, colour or corner radius.
      properties:
        box:
          additionalProperties: false
          description: >-
            Where a rect or circle draws, px in its composition; a circle fits
            the box's smaller side, centred. A rect or circle keeps its box when
            left out.
          properties:
            height:
              exclusiveMinimum: true
              minimum: 0
              type: number
            width:
              exclusiveMinimum: true
              minimum: 0
              type: number
            x:
              type: number
            'y':
              type: number
          required:
            - x
            - 'y'
            - width
            - height
          type: object
        color:
          description: >-
            #rrggbbaa for a see-through fill; #00000000 makes a shape whose
            backdrop effects adjust what is beneath it.
          pattern: ^#[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$
          type: string
        node:
          description: >-
            A node's id: ids are unique in the document, so a node inside a
            composition is named by its id alone. A path through instances
            (scene.1/title) is accepted too.
          maxLength: 2000
          type: string
        radius:
          description: A rect's corner radius, px.
          minimum: 0
          type: number
        shape:
          description: fill covers its composition; rect when box is given.
          enum:
            - fill
            - rect
            - circle
          type: string
        type:
          enum:
            - setShape
          type: string
      required:
        - type
        - node
      title: setShape
      type: object
    MotionCommandAnimate:
      additionalProperties: false
      description: >-
        Applies an In or Out preset: two keys on opacity, position or scale from
        an edge at the node's start, or to one at its end. They are ordinary
        keys afterwards.
      properties:
        in:
          additionalProperties: false
          description: Keys from an edge at its start to where it is duration later.
          properties:
            duration:
              description: Seconds.
              exclusiveMinimum: true
              minimum: 0
              type: number
            easing:
              anyOf:
                - enum:
                    - linear
                    - hold
                    - easyEase
                    - easyEaseIn
                    - easyEaseOut
                    - autoBezier
                    - easeInOutSine
                    - easeInOutCubic
                    - easeInOutExpo
                    - easeOutCubic
                    - easeInCubic
                    - easeOutBack
                    - easeInOutBack
                    - springGentle
                    - springBouncy
                  type: string
                - additionalProperties: false
                  properties:
                    x1:
                      maximum: 1
                      minimum: 0
                      type: number
                    x2:
                      maximum: 1
                      minimum: 0
                      type: number
                    y1:
                      type: number
                    y2:
                      type: number
                  required:
                    - x1
                    - y1
                    - x2
                    - y2
                  type: object
                - additionalProperties: false
                  description: >-
                    Continuous bezier keys: one speed (units per second) on both
                    sides of each key, derived from its neighbours when left
                    out, with handles inInfluence and outInfluence of the
                    segments around it (1/6 by default). autoBezier derives the
                    speed from the keys either side; numbers only.
                  properties:
                    inInfluence:
                      maximum: 1
                      minimum: 0
                      type: number
                    outInfluence:
                      maximum: 1
                      minimum: 0
                      type: number
                    speed:
                      type: number
                  type: object
            kind:
              enum:
                - fade
                - slideLeft
                - slideRight
                - slideUp
                - slideDown
                - pop
              type: string
          required:
            - kind
            - duration
          type: object
        node:
          description: >-
            A node's id: ids are unique in the document, so a node inside a
            composition is named by its id alone. A path through instances
            (scene.1/title) is accepted too.
          maxLength: 2000
          type: string
        out:
          additionalProperties: false
          description: Keys from where it is duration before its end to an edge there.
          properties:
            duration:
              description: Seconds.
              exclusiveMinimum: true
              minimum: 0
              type: number
            easing:
              anyOf:
                - enum:
                    - linear
                    - hold
                    - easyEase
                    - easyEaseIn
                    - easyEaseOut
                    - autoBezier
                    - easeInOutSine
                    - easeInOutCubic
                    - easeInOutExpo
                    - easeOutCubic
                    - easeInCubic
                    - easeOutBack
                    - easeInOutBack
                    - springGentle
                    - springBouncy
                  type: string
                - additionalProperties: false
                  properties:
                    x1:
                      maximum: 1
                      minimum: 0
                      type: number
                    x2:
                      maximum: 1
                      minimum: 0
                      type: number
                    y1:
                      type: number
                    y2:
                      type: number
                  required:
                    - x1
                    - y1
                    - x2
                    - y2
                  type: object
                - additionalProperties: false
                  description: >-
                    Continuous bezier keys: one speed (units per second) on both
                    sides of each key, derived from its neighbours when left
                    out, with handles inInfluence and outInfluence of the
                    segments around it (1/6 by default). autoBezier derives the
                    speed from the keys either side; numbers only.
                  properties:
                    inInfluence:
                      maximum: 1
                      minimum: 0
                      type: number
                    outInfluence:
                      maximum: 1
                      minimum: 0
                      type: number
                    speed:
                      type: number
                  type: object
            kind:
              enum:
                - fade
                - slideLeft
                - slideRight
                - slideUp
                - slideDown
                - pop
              type: string
          required:
            - kind
            - duration
          type: object
        type:
          enum:
            - animate
          type: string
      required:
        - type
        - node
      title: animate
      type: object
    MotionCommandSetProperty:
      additionalProperties: false
      description: >-
        Sets a property. On an animated property `at` is required and sets the
        key there; without `value` it adds a key holding the value at `at`.
        `blendMode`, `flipX` and `flipY` are set without `at`.
      properties:
        at:
          description: >-
            Where to set it when the property is animated: the key there is
            added or changed. Required then.
          minimum: 0
          type: number
        node:
          description: >-
            A node's id: ids are unique in the document, so a node inside a
            composition is named by its id alone. A path through instances
            (scene.1/title) is accepted too.
          maxLength: 2000
          type: string
        property:
          description: >-
            A property name (x, y, scale, rotation, opacity, volume, …) or a
            field:… path; inspect_motion_node_properties lists a node's.
          type: string
        type:
          enum:
            - setProperty
          type: string
        value:
          anyOf:
            - anyOf:
                - type: number
                - pattern: ^#[0-9a-fA-F]{6}$
                  type: string
            - type: boolean
            - enum:
                - normal
                - clear
                - src
                - dst
                - srcOver
                - dstOver
                - srcIn
                - dstIn
                - srcOut
                - dstOut
                - srcATop
                - dstATop
                - xor
                - plus
                - modulate
                - screen
                - overlay
                - darken
                - lighten
                - colorDodge
                - colorBurn
                - hardLight
                - softLight
                - difference
                - exclusion
                - multiply
                - hue
                - saturation
                - color
                - luminosity
                - linearBurn
                - vividLight
                - linearLight
                - pinLight
                - hardMix
                - subtract
                - divide
                - darkerColor
                - lighterColor
                - stencilAlpha
                - stencilLuma
                - silhouetteAlpha
                - silhouetteLuma
                - dissolve
                - animatedDissolve
                - premultipliedColorBurn
                - premultipliedColorDodge
                - premultipliedDifference
                - alphaAdd
              type: string
          description: Left out, a key at `at` holding the value the property has there.
      required:
        - type
        - node
        - property
      title: setProperty
      type: object
    MotionCommandSetKeyframes:
      additionalProperties: false
      description: >-
        Replaces a property's animation with these keys. `easing: "continuous"`
        carries speed through each key (auto bezier), so moves ease into each
        other without a jolt.
      properties:
        easing:
          anyOf:
            - anyOf:
                - enum:
                    - linear
                    - hold
                    - easyEase
                    - easyEaseIn
                    - easyEaseOut
                    - autoBezier
                    - easeInOutSine
                    - easeInOutCubic
                    - easeInOutExpo
                    - easeOutCubic
                    - easeInCubic
                    - easeOutBack
                    - easeInOutBack
                    - springGentle
                    - springBouncy
                  type: string
                - additionalProperties: false
                  properties:
                    x1:
                      maximum: 1
                      minimum: 0
                      type: number
                    x2:
                      maximum: 1
                      minimum: 0
                      type: number
                    y1:
                      type: number
                    y2:
                      type: number
                  required:
                    - x1
                    - y1
                    - x2
                    - y2
                  type: object
                - additionalProperties: false
                  description: >-
                    Continuous bezier keys: one speed (units per second) on both
                    sides of each key, derived from its neighbours when left
                    out, with handles inInfluence and outInfluence of the
                    segments around it (1/6 by default). autoBezier derives the
                    speed from the keys either side; numbers only.
                  properties:
                    inInfluence:
                      maximum: 1
                      minimum: 0
                      type: number
                    outInfluence:
                      maximum: 1
                      minimum: 0
                      type: number
                    speed:
                      type: number
                  type: object
            - enum:
                - continuous
              type: string
          description: Every key's easing into the next, unless the key sets its own.
        keys:
          items:
            additionalProperties: false
            properties:
              at:
                description: Seconds on the node's composition clock.
                minimum: 0
                type: number
              easing:
                anyOf:
                  - anyOf:
                      - enum:
                          - linear
                          - hold
                          - easyEase
                          - easyEaseIn
                          - easyEaseOut
                          - autoBezier
                          - easeInOutSine
                          - easeInOutCubic
                          - easeInOutExpo
                          - easeOutCubic
                          - easeInCubic
                          - easeOutBack
                          - easeInOutBack
                          - springGentle
                          - springBouncy
                        type: string
                      - additionalProperties: false
                        properties:
                          x1:
                            maximum: 1
                            minimum: 0
                            type: number
                          x2:
                            maximum: 1
                            minimum: 0
                            type: number
                          y1:
                            type: number
                          y2:
                            type: number
                        required:
                          - x1
                          - y1
                          - x2
                          - y2
                        type: object
                      - additionalProperties: false
                        description: >-
                          Continuous bezier keys: one speed (units per second)
                          on both sides of each key, derived from its neighbours
                          when left out, with handles inInfluence and
                          outInfluence of the segments around it (1/6 by
                          default). autoBezier derives the speed from the keys
                          either side; numbers only.
                        properties:
                          inInfluence:
                            maximum: 1
                            minimum: 0
                            type: number
                          outInfluence:
                            maximum: 1
                            minimum: 0
                            type: number
                          speed:
                            type: number
                        type: object
                  - enum:
                      - continuous
                    type: string
                description: >-
                  Into the next key. continuous (auto bezier) carries the speed
                  through the keys around it, so a fast move eases into a slow
                  one and out again without a jolt and without overshooting;
                  numbers only.
              value:
                anyOf:
                  - type: number
                  - pattern: ^#[0-9a-fA-F]{6}$
                    type: string
                description: In the property's units.
            required:
              - at
              - value
            type: object
          maxItems: 200
          minItems: 1
          type: array
        node:
          description: >-
            A node's id: ids are unique in the document, so a node inside a
            composition is named by its id alone. A path through instances
            (scene.1/title) is accepted too.
          maxLength: 2000
          type: string
        property:
          description: >-
            A property name (x, y, scale, rotation, opacity, volume, …) or a
            field:… path; inspect_motion_node_properties lists a node's.
          type: string
        type:
          enum:
            - setKeyframes
          type: string
      required:
        - type
        - node
        - property
        - keys
      title: setKeyframes
      type: object
    MotionCommandEditKeyframe:
      additionalProperties: false
      description: >-
        Moves, revalues or re-eases one key by its id
        (`inspect_motion_node_properties` lists ids), or re-eases several keys,
        or every key when neither `key` nor `keys` is given.
      properties:
        at:
          description: Moves the key here.
          minimum: 0
          type: number
        easing:
          anyOf:
            - enum:
                - linear
                - hold
                - easyEase
                - easyEaseIn
                - easyEaseOut
                - autoBezier
                - easeInOutSine
                - easeInOutCubic
                - easeInOutExpo
                - easeOutCubic
                - easeInCubic
                - easeOutBack
                - easeInOutBack
                - springGentle
                - springBouncy
              type: string
            - additionalProperties: false
              properties:
                x1:
                  maximum: 1
                  minimum: 0
                  type: number
                x2:
                  maximum: 1
                  minimum: 0
                  type: number
                y1:
                  type: number
                y2:
                  type: number
              required:
                - x1
                - y1
                - x2
                - y2
              type: object
            - additionalProperties: false
              description: >-
                Continuous bezier keys: one speed (units per second) on both
                sides of each key, derived from its neighbours when left out,
                with handles inInfluence and outInfluence of the segments around
                it (1/6 by default). autoBezier derives the speed from the keys
                either side; numbers only.
              properties:
                inInfluence:
                  maximum: 1
                  minimum: 0
                  type: number
                outInfluence:
                  maximum: 1
                  minimum: 0
                  type: number
                speed:
                  type: number
              type: object
          description: Into the next key.
        key:
          description: >-
            A keyframe's id, as inspect_motion_node_properties lists it; it
            stays as the key moves.
          maxLength: 64
          minLength: 1
          type: string
        keys:
          description: >-
            Several keys to ease at once; every key when neither key nor keys is
            given. Easing only.
          items:
            description: >-
              A keyframe's id, as inspect_motion_node_properties lists it; it
              stays as the key moves.
            maxLength: 64
            minLength: 1
            type: string
          maxItems: 200
          minItems: 1
          type: array
        node:
          description: >-
            A node's id: ids are unique in the document, so a node inside a
            composition is named by its id alone. A path through instances
            (scene.1/title) is accepted too.
          maxLength: 2000
          type: string
        property:
          description: >-
            A property name (x, y, scale, rotation, opacity, volume, …) or a
            field:… path; inspect_motion_node_properties lists a node's.
          type: string
        type:
          enum:
            - editKeyframe
          type: string
        value:
          anyOf:
            - type: number
            - pattern: ^#[0-9a-fA-F]{6}$
              type: string
          description: The key's new value.
      required:
        - type
        - node
        - property
      title: editKeyframe
      type: object
    MotionCommandRemoveKeyframes:
      additionalProperties: false
      description: >-
        Removes keys by id or time, or all of them, leaving the property at its
        value there.
      properties:
        at:
          description: >-
            The keys' times; all of them (the property holds its value there)
            when left out.
          items:
            minimum: 0
            type: number
          type: array
        keys:
          description: The keys' ids.
          items:
            description: >-
              A keyframe's id, as inspect_motion_node_properties lists it; it
              stays as the key moves.
            maxLength: 64
            minLength: 1
            type: string
          maxItems: 200
          minItems: 1
          type: array
        node:
          description: >-
            A node's id: ids are unique in the document, so a node inside a
            composition is named by its id alone. A path through instances
            (scene.1/title) is accepted too.
          maxLength: 2000
          type: string
        property:
          description: >-
            A property name (x, y, scale, rotation, opacity, volume, …) or a
            field:… path; inspect_motion_node_properties lists a node's.
          type: string
        type:
          enum:
            - removeKeyframes
          type: string
      required:
        - type
        - node
        - property
      title: removeKeyframes
      type: object
    MotionCommandAddEffect:
      additionalProperties: false
      description: >-
        Adds an effect to a node's stack. `kind: "shader"` runs your own SkSL.
        `backdrop: true` filters what is beneath the node instead (frosted
        glass; on a transparent shape, an adjustment layer).
      properties:
        backdrop:
          description: >-
            Filter what is drawn beneath the node's bounds instead of the node
            (frosted glass; on a transparent shape, an adjustment layer). Pixel
            filters only.
          type: boolean
        effectId:
          description: >-
            The effect's id in the node's stack, as
            inspect_motion_node_properties lists it.
          pattern: ^[A-Za-z0-9_-]{1,64}$
          type: string
        index:
          description: >-
            Place in the stack, 0 innermost (applied first); outermost when left
            out.
          maximum: 9007199254740991
          minimum: 0
          type: integer
        inputs:
          additionalProperties:
            description: >-
              A node's id: ids are unique in the document, so a node inside a
              composition is named by its id alone. A path through instances
              (scene.1/title) is accepted too.
            maxLength: 2000
            type: string
          description: >-
            For kind shader: each `uniform shader` input, a node of the same
            composition.
          type: object
        kind:
          description: >-
            An effect kind from list_motion_effects: a render timeline effect
            type (blur, glow, dropShadow, …), a built-in shader's name
            (fx.levels, fx.vignette, …), shader for your own SkSL in source, or
            an audio effect (parametricEq, compressor, reverb, …) for a node's
            sound, which runs in chain order and takes no backdrop.
          type: string
        node:
          description: >-
            A node's id: ids are unique in the document, so a node inside a
            composition is named by its id alone. A path through instances
            (scene.1/title) is accepted too.
          maxLength: 2000
          type: string
        params:
          additionalProperties:
            anyOf:
              - type: number
              - maxLength: 20000
                type: string
              - type: boolean
              - items:
                  type: number
                maxItems: 64
                type: array
              - items:
                  items:
                    type: number
                  maxItems: 2
                  type: array
                maxItems: 8
                type: array
              - additionalProperties: false
                properties:
                  x:
                    type: number
                  'y':
                    type: number
                required:
                  - x
                  - 'y'
                type: object
          description: >-
            Parameters by name, as list_motion_effects gives them: numbers,
            #rrggbb(aa) colours, [x, y] points, true/false, an option, or a node
            path.
          type: object
        preset:
          description: >-
            A preset of the kind, by name from list_motion_effects;
            list_motion_effects {kind, preset} shows the settings it sets, which
            params then override.
          maxLength: 64
          type: string
        source:
          description: >-
            For kind shader: SkSL with `uniform shader image;` (the node) and
            `half4 main(float2 p)`; `uniform float2 resolution` is bound to the
            node's size.
          maxLength: 50000
          minLength: 1
          type: string
        type:
          enum:
            - addEffect
          type: string
        uniforms:
          additionalProperties:
            items:
              type: number
            maxItems: 16
            minItems: 1
            type: array
          description: >-
            For kind shader: each other uniform's values, as many as it declares
            (float 1, float2 2, half4 4); the renderer checks them against the
            SkSL. Each value keys as a property afterwards.
          type: object
      required:
        - type
        - node
        - kind
      title: addEffect
      type: object
    MotionCommandSetEffect:
      additionalProperties: false
      description: >-
        Changes an effect's parameters or preset, or switches it off (`enabled:
        false` keeps its settings and keys).
      properties:
        backdrop:
          description: >-
            Filter what is drawn beneath the node's bounds instead of the node
            (frosted glass; on a transparent shape, an adjustment layer). Pixel
            filters only.
          type: boolean
        effectId:
          description: >-
            The effect's id in the node's stack, as
            inspect_motion_node_properties lists it.
          pattern: ^[A-Za-z0-9_-]{1,64}$
          type: string
        enabled:
          description: >-
            The effect's switch: false draws the node unaffected, keeping its
            settings and keyframes.
          type: boolean
        node:
          description: >-
            A node's id: ids are unique in the document, so a node inside a
            composition is named by its id alone. A path through instances
            (scene.1/title) is accepted too.
          maxLength: 2000
          type: string
        params:
          additionalProperties:
            anyOf:
              - type: number
              - maxLength: 20000
                type: string
              - type: boolean
              - items:
                  type: number
                maxItems: 64
                type: array
              - items:
                  items:
                    type: number
                  maxItems: 2
                  type: array
                maxItems: 8
                type: array
              - additionalProperties: false
                properties:
                  x:
                    type: number
                  'y':
                    type: number
                required:
                  - x
                  - 'y'
                type: object
          description: >-
            Parameters by name, as list_motion_effects gives them: numbers,
            #rrggbb(aa) colours, [x, y] points, true/false, an option, or a node
            path.
          type: object
        preset:
          description: >-
            A preset of the kind, by name from list_motion_effects;
            list_motion_effects {kind, preset} shows the settings it sets, which
            params then override.
          maxLength: 64
          type: string
        type:
          enum:
            - setEffect
          type: string
      required:
        - type
        - node
        - effectId
      title: setEffect
      type: object
    MotionCommandRemoveEffect:
      additionalProperties: false
      description: Removes an effect from a node's stack.
      properties:
        effectId:
          description: >-
            The effect's id in the node's stack, as
            inspect_motion_node_properties lists it.
          pattern: ^[A-Za-z0-9_-]{1,64}$
          type: string
        node:
          description: >-
            A node's id: ids are unique in the document, so a node inside a
            composition is named by its id alone. A path through instances
            (scene.1/title) is accepted too.
          maxLength: 2000
          type: string
        type:
          enum:
            - removeEffect
          type: string
      required:
        - type
        - node
        - effectId
      title: removeEffect
      type: object
    MotionCommandMoveEffect:
      additionalProperties: false
      description: Moves an effect in the stack; index 0 applies first.
      properties:
        effectId:
          description: >-
            The effect's id in the node's stack, as
            inspect_motion_node_properties lists it.
          pattern: ^[A-Za-z0-9_-]{1,64}$
          type: string
        index:
          description: Its new place, 0 innermost (applied first).
          maximum: 9007199254740991
          minimum: 0
          type: integer
        node:
          description: >-
            A node's id: ids are unique in the document, so a node inside a
            composition is named by its id alone. A path through instances
            (scene.1/title) is accepted too.
          maxLength: 2000
          type: string
        type:
          enum:
            - moveEffect
          type: string
      required:
        - type
        - node
        - effectId
        - index
      title: moveEffect
      type: object
    MotionCommandSetMasks:
      additionalProperties: false
      description: >-
        Replaces a node's masks (rectangles, ellipses or SVG paths), applied
        before its effects. `[]` removes them.
      properties:
        masks:
          description: >-
            Replaces the node's masks, applied before its effects; [] removes
            them. Their numbers key as properties afterwards.
          items:
            additionalProperties: false
            properties:
              expansion:
                description: Px the mask grows by; negative shrinks it.
                maximum: 1000
                minimum: -1000
                type: number
              feather:
                description: Px of soft edge.
                maximum: 1000
                minimum: 0
                type: number
              featherFalloff:
                description: How coverage falls across the feather; smooth by default.
                enum:
                  - smooth
                  - linear
                type: string
              featherPoints:
                description: >-
                  Variable-width feather: at is a fraction of the mask's outline
                  from its start, radius widens the feather outward (positive)
                  or inward (negative) there, interpolated between points.
                items:
                  additionalProperties: false
                  properties:
                    at:
                      maximum: 1
                      minimum: 0
                      type: number
                    id:
                      description: >-
                        The point's id, to keep a point setMasks is given again;
                        a new point gets one.
                      maxLength: 256
                      pattern: ^[A-Za-z0-9][A-Za-z0-9._:/-]*$
                      type: string
                    radius:
                      maximum: 1000
                      minimum: -1000
                      type: number
                  required:
                    - at
                    - radius
                  type: object
                maxItems: 256
                type: array
              height:
                exclusiveMinimum: true
                minimum: 0
                type: number
              inverted:
                description: Keep what is outside the mask instead.
                type: boolean
              mode:
                description: >-
                  How it combines with the masks before it; add by default. none
                  leaves it out, for a stack effect's mask.
                enum:
                  - add
                  - subtract
                  - intersect
                  - lighten
                  - darken
                  - difference
                  - none
                type: string
              opacity:
                maximum: 1
                minimum: 0
                type: number
              path:
                description: SVG path data in the pixels the node is placed in.
                maxLength: 20000
                type: string
              radius:
                description: A rect's corner radius.
                minimum: 0
                type: number
              shape:
                enum:
                  - rect
                  - ellipse
                  - path
                type: string
              width:
                exclusiveMinimum: true
                minimum: 0
                type: number
              x:
                description: >-
                  Left of a rect or ellipse, in the pixels the node is placed
                  in: masks do not follow its position, scale or rotation, so
                  key them with it.
                type: number
              'y':
                description: Top of a rect or ellipse, in the pixels the node is placed in.
                type: number
            required:
              - shape
            type: object
          maxItems: 32
          type: array
        node:
          description: >-
            A node's id: ids are unique in the document, so a node inside a
            composition is named by its id alone. A path through instances
            (scene.1/title) is accepted too.
          maxLength: 2000
          type: string
        type:
          enum:
            - setMasks
          type: string
      required:
        - type
        - node
        - masks
      title: setMasks
      type: object
    MotionCommandSetMatte:
      additionalProperties: false
      description: >-
        Shows a node through another node of the same composition (a track
        matte), by its alpha or luma. The matte node is hidden unless
        `showMatte`.
      properties:
        matte:
          description: A node in the same composition; null removes the matte.
          maxLength: 2000
          nullable: true
          type: string
        mode:
          description: >-
            Show the node where the matte is opaque (alpha) or bright (luma), or
            the inverse; alpha by default.
          enum:
            - alpha
            - alphaInverted
            - luma
            - lumaInverted
          type: string
        node:
          description: >-
            A node's id: ids are unique in the document, so a node inside a
            composition is named by its id alone. A path through instances
            (scene.1/title) is accepted too.
          maxLength: 2000
          type: string
        showMatte:
          description: Keep the matte node visible; it is hidden by default.
          type: boolean
        type:
          enum:
            - setMatte
          type: string
      required:
        - type
        - node
        - matte
      title: setMatte
      type: object
    MotionCommandGroup:
      additionalProperties: false
      description: >-
        Groups sibling nodes into one layer in the topmost one's place, to move,
        fade or add effects to them together.
      properties:
        name:
          description: The group's name in the editor.
          maxLength: 200
          type: string
        nodeId:
          description: The group's id; generated when left out.
          maxLength: 200
          minLength: 1
          type: string
        nodes:
          description: Siblings to group.
          items:
            description: >-
              A node's id: ids are unique in the document, so a node inside a
              composition is named by its id alone. A path through instances
              (scene.1/title) is accepted too.
            maxLength: 2000
            type: string
          maxItems: 200
          minItems: 1
          type: array
        type:
          enum:
            - group
          type: string
      required:
        - type
        - nodes
      title: group
      type: object
    MotionCommandUngroup:
      additionalProperties: false
      description: >-
        Puts a group's nodes back in its place. A moved group leaves a hidden
        null they follow; a clipped or filtered group is refused.
      properties:
        node:
          description: >-
            A node's id: ids are unique in the document, so a node inside a
            composition is named by its id alone. A path through instances
            (scene.1/title) is accepted too.
          maxLength: 2000
          type: string
        type:
          enum:
            - ungroup
          type: string
      required:
        - type
        - node
      title: ungroup
      type: object
    MotionCommandStagger:
      additionalProperties: false
      description: >-
        Starts each node `interval` seconds after the one before, moving their
        keys and effects with them.
      properties:
        interval:
          description: Seconds between one node's start and the next's.
          type: number
        nodes:
          description: In the order they start; each moves with its keys and effects.
          items:
            description: >-
              A node's id: ids are unique in the document, so a node inside a
              composition is named by its id alone. A path through instances
              (scene.1/title) is accepted too.
            maxLength: 2000
            type: string
          maxItems: 200
          minItems: 2
          type: array
        start:
          description: Where the first starts; where it starts now when left out.
          minimum: 0
          type: number
        type:
          enum:
            - stagger
          type: string
      required:
        - type
        - nodes
        - interval
      title: stagger
      type: object
    MotionCommandApplyLook:
      additionalProperties: false
      description: >-
        Copies one node's style (opacity, blend, flips, corners, colour, blur,
        shadow) and effect stack onto others. Where they sit and how big they
        are stay their own.
      properties:
        from:
          description: The node whose look is copied.
          maxLength: 2000
          type: string
        include:
          description: >-
            style: opacity, blend, flips, corners, colour, blur and shadow;
            effects: the effect stack, keys included. Both when left out. Where
            each node sits and how big it is stay its own.
          items:
            enum:
              - style
              - effects
            type: string
          minItems: 1
          type: array
        nodes:
          description: The nodes that take it.
          items:
            description: >-
              A node's id: ids are unique in the document, so a node inside a
              composition is named by its id alone. A path through instances
              (scene.1/title) is accepted too.
            maxLength: 2000
            type: string
          maxItems: 200
          minItems: 1
          type: array
        type:
          enum:
            - applyLook
          type: string
      required:
        - type
        - from
        - nodes
      title: applyLook
      type: object
    MotionCommandFitCanvas:
      additionalProperties: false
      description: >-
        Shrinks the canvas to what its nodes draw at rest, plus `padding`,
        moving them and their keys with it. Its note gives the rectangle to
        place the overlay at so the content stays where it was in the video.
      properties:
        padding:
          description: Px around the content, room for shadows and glows; 48 when left out.
          maximum: 2000
          minimum: 0
          type: number
        type:
          enum:
            - fitCanvas
          type: string
      required:
        - type
      title: fitCanvas
      type: object
    MotionCommandSetMarkers:
      additionalProperties: false
      description: >-
        Sets every marker a node keeps: moments or spans with labels, for timing
        other nodes to.
      properties:
        markers:
          description: Every marker the node has afterwards; [] removes them all.
          items:
            additionalProperties: false
            properties:
              at:
                description: On the node's composition clock, at or after its start.
                minimum: 0
                type: number
              duration:
                description: A span rather than a moment.
                exclusiveMinimum: true
                minimum: 0
                type: number
              id:
                description: Keep a marker's id to edit it; generated when left out.
                pattern: ^[A-Za-z0-9_.-]{1,64}$
                type: string
              label:
                description: Its text.
                maxLength: 500
                type: string
            required:
              - at
            type: object
          maxItems: 4096
          type: array
        node:
          description: >-
            A node's id: ids are unique in the document, so a node inside a
            composition is named by its id alone. A path through instances
            (scene.1/title) is accepted too.
          maxLength: 2000
          type: string
        type:
          enum:
            - setMarkers
          type: string
      required:
        - type
        - node
        - markers
      title: setMarkers
      type: object
    MotionCommandSetTimeRemap:
      additionalProperties: false
      description: >-
        Replaces a media node's or composition instance's timing with keys of
        which source time shows when: slow motion, speed ramps and freeze frames
        (`hold`). Media plays forward only.
      properties:
        keys:
          description: >-
            Replaces the node's timing with these keys (media forward only; an
            instance can reverse); null restores it.
          items:
            additionalProperties: false
            properties:
              at:
                description: On the node's composition clock.
                minimum: 0
                type: number
              easing:
                description: Into the next key; hold freezes the frame.
                enum:
                  - linear
                  - hold
                  - ease
                type: string
              source:
                description: The media's (or instance's composition's) time shown there.
                minimum: 0
                type: number
            required:
              - at
              - source
            type: object
          maxItems: 200
          minItems: 1
          nullable: true
          type: array
        node:
          description: >-
            A node's id: ids are unique in the document, so a node inside a
            composition is named by its id alone. A path through instances
            (scene.1/title) is accepted too.
          maxLength: 2000
          type: string
        type:
          enum:
            - setTimeRemap
          type: string
      required:
        - type
        - node
        - keys
      title: setTimeRemap
      type: object
    MotionCommandSetExpression:
      additionalProperties: false
      description: >-
        Adds a wiggle (random drift over the property's value) or a loop
        (repeats its keys) to a property, or removes one. The value and keys
        underneath stay editable.
      properties:
        expression:
          oneOf:
            - additionalProperties: false
              properties:
                amount:
                  description: How far it wanders, in the property's units.
                  minimum: 0
                  type: number
                frequency:
                  description: Wiggles per second.
                  exclusiveMinimum: true
                  maximum: 100
                  minimum: 0
                  type: number
                kind:
                  enum:
                    - wiggle
                  type: string
                seed:
                  description: Another seed gives another random path.
                  maximum: 1000000
                  minimum: 0
                  type: integer
              required:
                - kind
                - frequency
                - amount
              type: object
            - additionalProperties: false
              properties:
                kind:
                  enum:
                    - noWiggle
                  type: string
              required:
                - kind
              type: object
            - additionalProperties: false
              properties:
                amount:
                  description: >-
                    Added at full scale, in the property's units: the property
                    becomes its value plus amount × the sound's RMS level (0..1)
                    over the frame ending now.
                  type: number
                band:
                  additionalProperties: false
                  description: 'Hertz: the level of these frequencies alone.'
                  properties:
                    from:
                      maximum: 24000
                      minimum: 0
                      type: number
                    to:
                      maximum: 24000
                      minimum: 0
                      type: number
                  required:
                    - from
                    - to
                  type: object
                channel:
                  enum:
                    - mono
                    - left
                    - right
                  type: string
                kind:
                  enum:
                    - audio
                  type: string
                sound:
                  description: >-
                    The node of the same composition whose sound drives it (a
                    voice, music, a tone).
                  maxLength: 200
                  minLength: 1
                  type: string
              required:
                - kind
                - sound
                - amount
              type: object
            - additionalProperties: false
              properties:
                kind:
                  enum:
                    - noAudio
                  type: string
              required:
                - kind
              type: object
            - additionalProperties: false
              properties:
                direction:
                  description: >-
                    out repeats after the last key (loopOut), in before the
                    first.
                  enum:
                    - in
                    - out
                  type: string
                keyframes:
                  description: Loop only the last (or first) this many keys.
                  maximum: 9007199254740991
                  minimum: 2
                  type: integer
                kind:
                  enum:
                    - loop
                  type: string
                mode:
                  description: >-
                    cycle repeats the keys, pingPong plays them back and forth,
                    offset repeats them from where the last cycle ended,
                    continue carries on at the last key's speed.
                  enum:
                    - cycle
                    - pingPong
                    - offset
                    - continue
                  type: string
              required:
                - kind
                - direction
                - mode
              type: object
            - additionalProperties: false
              properties:
                direction:
                  enum:
                    - in
                    - out
                  type: string
                kind:
                  enum:
                    - noLoop
                  type: string
              required:
                - kind
                - direction
              type: object
          type: object
        node:
          description: >-
            A node's id: ids are unique in the document, so a node inside a
            composition is named by its id alone. A path through instances
            (scene.1/title) is accepted too.
          maxLength: 2000
          type: string
        property:
          description: >-
            A property name (x, y, scale, rotation, opacity, volume, …) or a
            field:… path; inspect_motion_node_properties lists a node's.
          type: string
        type:
          enum:
            - setExpression
          type: string
      required:
        - type
        - node
        - property
        - expression
      title: setExpression
      type: object
    MotionCommandSetTextAnimation:
      additionalProperties: false
      description: >-
        Animates a title per character, word or line as it comes in or goes out.
        `preset: null` removes it.
      properties:
        duration:
          description: Seconds each unit takes (0.4 by default).
          exclusiveMinimum: true
          maximum: 10
          minimum: 0
          type: number
        from:
          description: Which units go first; start by default.
          enum:
            - start
            - end
            - center
            - edges
            - random
          type: string
        node:
          description: >-
            A node's id: ids are unique in the document, so a node inside a
            composition is named by its id alone. A path through instances
            (scene.1/title) is accepted too.
          maxLength: 2000
          type: string
        phase:
          description: in as the title appears; out ends as the title ends.
          enum:
            - in
            - out
          type: string
        preset:
          description: null removes the phase's animation.
          enum:
            - typewriter
            - fade
            - rise
            - drop
            - pop
            - blur
            - slideLeft
            - slideRight
            - spread
            - spin
          nullable: true
          type: string
        stagger:
          description: Seconds between units' starts (0.04 by default).
          maximum: 5
          minimum: 0
          type: number
        type:
          enum:
            - setTextAnimation
          type: string
        unit:
          description: What animates one at a time; character by default.
          enum:
            - character
            - word
            - line
          type: string
      required:
        - type
        - node
        - phase
        - preset
      title: setTextAnimation
      type: object
    MotionCommandAddPath:
      additionalProperties: false
      description: >-
        Adds a vector path from SVG path data in canvas pixels, filled, stroked
        or both.
      properties:
        cap:
          description: How a stroke's open ends are drawn.
          enum:
            - butt
            - round
            - square
          type: string
        color:
          description: Fill and stroke colour.
          pattern: ^#[0-9a-fA-F]{6}$
          type: string
        duration:
          description: Seconds; 3 by default.
          exclusiveMinimum: true
          minimum: 0
          type: number
        join:
          description: How a stroke's corners are drawn.
          enum:
            - miter
            - round
            - bevel
          type: string
        nodeId:
          description: The new node's id; generated when left out.
          maxLength: 200
          minLength: 1
          type: string
        paint:
          description: Fill the path's inside, stroke its line, or both.
          enum:
            - fill
            - stroke
            - both
          type: string
        parent:
          description: >-
            Where the new node goes: a sequence, a group, a composition instance
            (its composition's root), or "" for the canvas. The canvas when left
            out.
          maxLength: 2000
          type: string
        path:
          description: SVG path data in canvas pixels.
          maxLength: 100000
          type: string
        start:
          description: On the clock of the composition it goes in.
          minimum: 0
          type: number
        strokeWidth:
          description: Px.
          maximum: 1000
          minimum: 0
          type: number
        type:
          enum:
            - addPath
          type: string
      required:
        - type
        - start
        - path
      title: addPath
      type: object
    MotionCommandSetPath:
      additionalProperties: false
      description: >-
        Changes a path's points or paint, or morphs it between keyed paths
        (matching point counts morph point for point).
      properties:
        cap:
          description: How a stroke's open ends are drawn.
          enum:
            - butt
            - round
            - square
          type: string
        color:
          description: Fill and stroke colour.
          pattern: ^#[0-9a-fA-F]{6}$
          type: string
        join:
          description: How a stroke's corners are drawn.
          enum:
            - miter
            - round
            - bevel
          type: string
        keys:
          description: >-
            Morph keys: the shape takes each path at its time, morphing between
            (matching point counts morph point for point).
          items:
            additionalProperties: false
            properties:
              at:
                description: Seconds on the node's composition clock.
                minimum: 0
                type: number
              easing:
                anyOf:
                  - enum:
                      - linear
                      - hold
                      - easyEase
                      - easyEaseIn
                      - easyEaseOut
                      - autoBezier
                      - easeInOutSine
                      - easeInOutCubic
                      - easeInOutExpo
                      - easeOutCubic
                      - easeInCubic
                      - easeOutBack
                      - easeInOutBack
                      - springGentle
                      - springBouncy
                    type: string
                  - additionalProperties: false
                    properties:
                      x1:
                        maximum: 1
                        minimum: 0
                        type: number
                      x2:
                        maximum: 1
                        minimum: 0
                        type: number
                      y1:
                        type: number
                      y2:
                        type: number
                    required:
                      - x1
                      - y1
                      - x2
                      - y2
                    type: object
                  - additionalProperties: false
                    description: >-
                      Continuous bezier keys: one speed (units per second) on
                      both sides of each key, derived from its neighbours when
                      left out, with handles inInfluence and outInfluence of the
                      segments around it (1/6 by default). autoBezier derives
                      the speed from the keys either side; numbers only.
                    properties:
                      inInfluence:
                        maximum: 1
                        minimum: 0
                        type: number
                      outInfluence:
                        maximum: 1
                        minimum: 0
                        type: number
                      speed:
                        type: number
                    type: object
                description: Into the next key.
              path:
                description: SVG path data at this key.
                maxLength: 100000
                type: string
            required:
              - at
              - path
            type: object
          maxItems: 100
          minItems: 1
          type: array
        node:
          description: >-
            A node's id: ids are unique in the document, so a node inside a
            composition is named by its id alone. A path through instances
            (scene.1/title) is accepted too.
          maxLength: 2000
          type: string
        paint:
          description: Fill the path's inside, stroke its line, or both.
          enum:
            - fill
            - stroke
            - both
          type: string
        path:
          description: New points, constant.
          maxLength: 100000
          type: string
        strokeWidth:
          description: Px.
          maximum: 1000
          minimum: 0
          type: number
        type:
          enum:
            - setPath
          type: string
      required:
        - type
        - node
      title: setPath
      type: object
    MotionCommandDuck:
      additionalProperties: false
      description: >-
        Turns a sound (music) down while other nodes (voice) play. Its level and
        fades stay editable; `under: []` removes the duck.
      properties:
        amountDb:
          description: '-12 by default.'
          maximum: 0
          minimum: -60
          type: number
        attack:
          description: Seconds, 0.3 by default.
          maximum: 5
          minimum: 0
          type: number
        node:
          description: The sound to turn down (music).
          maxLength: 2000
          type: string
        release:
          description: Seconds, 0.5 by default.
          maximum: 5
          minimum: 0
          type: number
        type:
          enum:
            - duck
          type: string
        under:
          description: Nodes (voice) it ducks under while they play; [] removes the duck.
          items:
            description: >-
              A node's id: ids are unique in the document, so a node inside a
              composition is named by its id alone. A path through instances
              (scene.1/title) is accepted too.
            maxLength: 2000
            type: string
          maxItems: 500
          type: array
      required:
        - type
        - node
        - under
      title: duck
      type: object
    MotionCommandExpect:
      additionalProperties: false
      description: >-
        Fails the batch unless a node exists (or not), or a property has a value
        at a time, within `tolerance`.
      properties:
        at:
          description: Seconds on the node's composition clock.
          minimum: 0
          type: number
        exists:
          description: 'true: the node must exist; false: it must not.'
          type: boolean
        node:
          description: >-
            A node's id: ids are unique in the document, so a node inside a
            composition is named by its id alone. A path through instances
            (scene.1/title) is accepted too.
          maxLength: 2000
          type: string
        property:
          description: >-
            A property name (x, y, scale, rotation, opacity, volume, …) or a
            field:… path; inspect_motion_node_properties lists a node's.
          type: string
        tolerance:
          description: How far the value may be from `value`.
          minimum: 0
          type: number
        type:
          enum:
            - expect
          type: string
        value:
          anyOf:
            - type: number
            - pattern: ^#[0-9a-fA-F]{6}$
              type: string
          description: The property's value at `at` (its start by default).
      required:
        - type
      title: expect
      type: object
    MotionCommandSetFades:
      additionalProperties: false
      description: Sets a sound's fade in and fade out, in seconds.
      properties:
        fadeIn:
          description: Seconds.
          minimum: 0
          type: number
        fadeOut:
          description: Seconds.
          minimum: 0
          type: number
        node:
          description: >-
            A node's id: ids are unique in the document, so a node inside a
            composition is named by its id alone. A path through instances
            (scene.1/title) is accepted too.
          maxLength: 2000
          type: string
        type:
          enum:
            - setFades
          type: string
      required:
        - type
        - node
      title: setFades
      type: object
    MotionOp:
      additionalProperties: {}
      properties:
        type:
          description: >-
            The op: what the document stores, with render timeline values. `GET
            /v1/motion/schema?schema=edits&type=…` gives each one's fields.
          enum:
            - document.rename
            - canvas.set
            - node.insert
            - node.remove
            - node.patch
            - node.move
            - node.trim
            - node.wrap
            - node.unwrap
            - node.rewrap
            - node.split
            - meta.set
            - asset.set
            - asset.remove
            - composition.set
            - composition.remove
            - transition.set
            - transition.remove
            - curve.set
          example: node.patch
          type: string
      required:
        - type
      title: op
      type: object
    __schema0:
      allOf:
        - $ref: '#/components/schemas/__schema1'
    __schema1:
      anyOf:
        - type: number
        - additionalProperties: false
          properties:
            curve:
              description: The curve's name.
              pattern: ^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$
              type: string
          required:
            - curve
          type: object
        - additionalProperties: false
          properties:
            time:
              enum:
                - seconds
              type: string
          required:
            - time
          type: object
        - additionalProperties: false
          properties:
            args:
              items:
                $ref: '#/components/schemas/__schema0'
              maxItems: 4
              minItems: 1
              type: array
            op:
              enum:
                - add
                - subtract
                - multiply
                - divide
                - min
                - max
                - abs
                - negate
                - sin
                - cos
                - pow
                - sqrt
                - floor
                - round
                - mod
                - mix
                - clamp
                - step
                - smoothstep
              type: string
          required:
            - op
            - args
          type: object
        - additionalProperties: false
          properties:
            axis:
              enum:
                - x
                - 'y'
              type: string
            project:
              additionalProperties: false
              properties:
                camera:
                  additionalProperties: false
                  description: >-
                    A virtual camera filming the canvas as a tilted plane, as a
                    lens shader would: the canvas point it aims at lands in the
                    middle.
                  properties:
                    aimX:
                      $ref: '#/components/schemas/__schema0'
                    aimY:
                      $ref: '#/components/schemas/__schema0'
                    focal:
                      description: 1.7.
                      exclusiveMinimum: true
                      maximum: 100
                      minimum: 0
                      type: number
                    roll:
                      allOf:
                        - $ref: '#/components/schemas/__schema0'
                      description: Radians.
                    tiltX:
                      allOf:
                        - $ref: '#/components/schemas/__schema0'
                      description: Radians; positive tips the top away.
                    tiltY:
                      allOf:
                        - $ref: '#/components/schemas/__schema0'
                      description: Radians; positive turns the right side away.
                    zoom:
                      $ref: '#/components/schemas/__schema0'
                      allOf:
                        - $ref: '#/components/schemas/__schema1'
                      description: 1 shows the whole canvas.
                  required:
                    - aimX
                    - aimY
                    - zoom
                  type: object
                point:
                  additionalProperties: false
                  description: A point on the canvas, in px.
                  properties:
                    x:
                      $ref: '#/components/schemas/__schema0'
                    'y':
                      $ref: '#/components/schemas/__schema0'
                  required:
                    - x
                    - 'y'
                  type: object
              required:
                - point
                - camera
              type: object
          required:
            - project
            - axis
          type: object
  headers:
    Deprecation:
      description: Indicates that an API operation is deprecated, following RFC 9745
      example: '@1767225600'
      schema:
        type: string
    RateLimit:
      description: >-
        Current quota with remaining requests (`r`) and seconds until reset
        (`t`)
      example: '"public-api";r=95;t=42'
      schema:
        type: string
    RateLimitPolicy:
      description: >-
        Named quota policy with the request limit (`q`) and window in seconds
        (`w`)
      example: '"public-api";q=100;w=60'
      schema:
        type: string
    Sunset:
      description: >-
        Indicates when a deprecated API operation will become unavailable,
        following RFC 8594
      example: Tue, 30 Jun 2026 23:59:59 GMT
      schema:
        type: string
    XRateLimitLimit:
      description: Maximum requests allowed in the current window
      example: 100
      schema:
        type: integer
    XRateLimitRemaining:
      description: Requests remaining in the current window
      example: 95
      schema:
        type: integer
    XRateLimitReset:
      description: Unix timestamp in milliseconds when the window resets
      example: 1704067200000
      schema:
        format: int64
        type: integer
    RetryAfter:
      description: Seconds to wait before retrying a rate-limited request
      example: 45
      schema:
        minimum: 1
        type: integer
  securitySchemes:
    BearerAuth:
      description: API key obtained from your Tella account settings
      scheme: bearer
      type: http

````

## Related topics

- [Tella Motion](https://www.tella.com/docs/mcp-tools/motion.md)
- [Edit a Tella Motion document](https://www.tella.com/docs/api-reference/tella-motion/edit-a-tella-motion-document.md)
- [List Tella Motion documents](https://www.tella.com/docs/api-reference/tella-motion/list-tella-motion-documents.md)
- [Create a Tella Motion document](https://www.tella.com/docs/api-reference/tella-motion/create-a-tella-motion-document.md)
- [Download a Tella Motion document](https://www.tella.com/docs/api-reference/tella-motion/download-a-tella-motion-document.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.