> ## 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.

# Update a zoom



## OpenAPI

````yaml /openapi.json patch /v1/videos/{id}/clips/{clipId}/zooms/{zoomId}
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 100 requests per minute per organization.

    Rate limit information is returned in response headers:

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

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

    - `X-RateLimit-Reset`: Unix timestamp when the window resets
  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: Webhook endpoint management
    name: Webhooks
paths:
  /v1/videos/{id}/clips/{clipId}/zooms/{zoomId}:
    patch:
      tags:
        - Clips
      summary: Update a zoom
      operationId: updateClipZoom
      parameters:
        - description: Video ID
          in: path
          name: id
          required: true
          schema:
            description: Video ID
            type: string
        - description: Clip ID
          in: path
          name: clipId
          required: true
          schema:
            description: Clip ID
            type: string
        - description: Zoom ID
          in: path
          name: zoomId
          required: true
          schema:
            description: Zoom ID
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateClipZoomRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClipZoomResponse'
          description: OK
        '400':
          content:
            application/json:
              example:
                error:
                  code: bad_request
                  doc_url: https://tella.tv/docs/api-reference/errors#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.
        '401':
          content:
            application/json:
              example:
                error:
                  code: unauthorized
                  doc_url: https://tella.tv/docs/api-reference/errors#unauthorized
                  message: Authentication is required. Provide a valid API key.
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Authentication is required. Provide a valid API key.
        '403':
          content:
            application/json:
              example:
                error:
                  code: forbidden
                  doc_url: https://tella.tv/docs/api-reference/errors#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.
        '404':
          content:
            application/json:
              example:
                error:
                  code: not_found
                  doc_url: https://tella.tv/docs/api-reference/errors#not-found
                  message: The requested resource was not found.
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: The requested resource was not found.
        '422':
          content:
            application/json:
              example:
                error:
                  code: unprocessable_entity
                  doc_url: >-
                    https://tella.tv/docs/api-reference/errors#unprocessable-entity
                  message: The request was well-formed but contained semantic errors.
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: The request was well-formed but contained semantic errors.
        '429':
          content:
            application/json:
              example:
                error:
                  code: rate_limit_exceeded
                  doc_url: >-
                    https://tella.tv/docs/api-reference/errors#rate-limit-exceeded
                  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.
        '500':
          content:
            application/json:
              example:
                error:
                  code: internal_server_error
                  doc_url: >-
                    https://tella.tv/docs/api-reference/errors#internal-server-error
                  message: An unexpected error occurred on the server.
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: An unexpected error occurred on the server.
      security:
        - BearerAuth: []
components:
  schemas:
    UpdateClipZoomRequest:
      additionalProperties: false
      description: Update an existing zoom
      properties:
        durationMs:
          exclusiveMinimum: true
          maximum: 9007199254740991
          type: integer
        focusPoint:
          allOf:
            - $ref: '#/components/schemas/ZoomFocusPoint'
        scale:
          description: Magnification factor (1 = no zoom, 3.5 = max).
          example: 2
          maximum: 3.5
          minimum: 1
          type: number
        startTimeMs:
          description: Start time in ms on the clip's playback timeline (cuts applied)
          maximum: 9007199254740991
          minimum: 0
          type: integer
        type:
          description: >-
            `manualZoom` zooms into a fixed `focusPoint` on the screen.
            `trackingZoom` automatically follows the cursor in the screen
            recording.
          enum:
            - manualZoom
            - trackingZoom
          example: manualZoom
          type: string
      type: object
    ClipZoomResponse:
      additionalProperties: false
      description: A zoom on a clip
      properties:
        zoom:
          $ref: '#/components/schemas/ClipZoom'
      required:
        - zoom
      type: object
    ErrorResponse:
      additionalProperties: false
      description: Standard error response format
      properties:
        error:
          additionalProperties: false
          description: Error details
          properties:
            code:
              description: Machine-readable error code
              enum:
                - bad_request
                - unauthorized
                - forbidden
                - not_found
                - unprocessable_entity
                - rate_limit_exceeded
                - internal_server_error
              example: not_found
              type: string
            doc_url:
              description: Link to documentation for this error
              example: https://tella.tv/docs/api-reference/errors#not-found
              format: uri
              type: string
            message:
              description: Human-readable error message
              example: The requested resource was not found.
              type: string
          required:
            - code
            - message
            - doc_url
          type: object
      required:
        - error
      type: object
    ZoomFocusPoint:
      description: >-
        Point on the screen recording to zoom into, expressed as percentages of
        the screen dimensions. Required for `manualZoom`; ignored for
        `trackingZoom`.
      properties:
        xPct:
          description: Horizontal position on the screen frame (0-100). 0 = left edge.
          example: 50
          maximum: 100
          minimum: 0
          type: number
        yPct:
          description: Vertical position on the screen frame (0-100). 0 = top edge.
          example: 50
          maximum: 100
          minimum: 0
          type: number
      required:
        - xPct
        - yPct
      type: object
    ClipZoom:
      additionalProperties: false
      description: >-
        A zoom effect applied to the clip's screen layer (does not affect the
        camera). Use `manualZoom` with a `focusPoint`, or `trackingZoom` to
        follow the cursor automatically. Times are in ms on the clip's playback
        timeline (cuts applied). Internally the zoom stays anchored to the
        footage, so it doesn't drift when cuts change later.
      properties:
        durationMs:
          description: >-
            Duration in ms of playback. 0 when the zoom's footage is entirely
            cut out.
          example: 2000
          minimum: 0
          type: number
        focusPoint:
          allOf:
            - $ref: '#/components/schemas/ZoomFocusPointOutput'
          nullable: true
        id:
          description: Zoom ID
          example: ef_abc123
          type: string
        scale:
          description: Magnification factor (1 = no zoom, 3.5 = max).
          example: 2
          maximum: 3.5
          minimum: 1
          nullable: true
          type: number
        startTimeMs:
          description: Start time in ms on the clip's playback timeline (cuts applied)
          example: 1000
          minimum: 0
          type: number
        type:
          description: >-
            `manualZoom` zooms into a fixed `focusPoint` on the screen.
            `trackingZoom` automatically follows the cursor in the screen
            recording.
          enum:
            - manualZoom
            - trackingZoom
          example: manualZoom
          type: string
      required:
        - id
        - type
        - startTimeMs
        - durationMs
      type: object
    ZoomFocusPointOutput:
      additionalProperties: false
      description: >-
        Point on the screen recording to zoom into, expressed as percentages of
        the screen dimensions. Required for `manualZoom`; ignored for
        `trackingZoom`.
      properties:
        xPct:
          description: Horizontal position on the screen frame (0-100). 0 = left edge.
          example: 50
          maximum: 100
          minimum: 0
          type: number
        yPct:
          description: Vertical position on the screen frame (0-100). 0 = top edge.
          example: 50
          maximum: 100
          minimum: 0
          type: number
      required:
        - xPct
        - yPct
      type: object
  securitySchemes:
    BearerAuth:
      description: API key obtained from your Tella account settings
      scheme: bearer
      type: http

````