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

> Creates a copy of the specified video. Optionally specify a new name for the duplicate.



## OpenAPI

````yaml /openapi.json post /v1/videos/{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 100 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: >-
      Viewing analytics for a video or across the workspace: plays, watch time,
      retention, geography, referrers
    name: Analytics
  - 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: Webhook endpoint management
    name: Webhooks
externalDocs:
  description: API versioning and deprecation policy
  url: https://www.tella.com/docs/versioning
paths:
  /v1/videos/{id}/duplicate:
    post:
      tags:
        - Videos
      summary: Duplicate a video
      description: >-
        Creates a copy of the specified video. Optionally specify a new name for
        the duplicate.
      operationId: duplicateVideo
      parameters:
        - description: Unique video identifier
          in: path
          name: id
          required: true
          schema:
            description: Unique video identifier
            example: vid_abc123def456
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DuplicateVideoRequest'
        required: false
      responses:
        '200':
          content:
            application/json:
              schema:
                additionalProperties: false
                properties:
                  video:
                    $ref: '#/components/schemas/VideoDetail'
                required:
                  - video
                type: object
          description: OK
          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:
    DuplicateVideoRequest:
      additionalProperties: false
      description: Request body for duplicating a video
      properties:
        name:
          description: >-
            Name for the duplicated video. Defaults to original name with '
            (Copy)' suffix.
          example: My Video (Copy)
          maxLength: 255
          minLength: 1
          type: string
        trim:
          allOf:
            - $ref: '#/components/schemas/TrimRequest'
          description: >-
            Optional trim parameters. Specify startTime+endTime for time range
            trim (duration must be at least 1 second), or chapterIndex to
            extract a specific chapter.
      type: object
    VideoDetail:
      additionalProperties: false
      description: >-
        Detailed information about a video including chapters, transcript, and
        exports
      properties:
        aspectRatio:
          description: Video aspect ratio (e.g., '16:9', '9:16')
          example: '16:9'
          type: string
        autoRatio:
          description: >-
            Whether the canvas is in Auto ratio (sized from the video's
            recording and following it as layouts change), the editor's Setup →
            Size → Auto.
          example: false
          type: boolean
        backgroundMusic:
          allOf:
            - $ref: '#/components/schemas/BackgroundMusic'
          description: >-
            Video-wide track that loops over the whole video and is included in
            exports
          nullable: true
        chapters:
          description: Video chapters/sections
          items:
            $ref: '#/components/schemas/Chapter'
          type: array
        clipIds:
          description: >-
            Ordered IDs of the clips in the video. Use
            `/v1/videos/{id}/clips/{clipId}` to fetch each one.
          example:
            - cl_abc123
            - cl_def456
          items:
            type: string
          type: array
        createdAt:
          description: ISO 8601 datetime
          example: '2024-01-15T10:30:00.000Z'
          format: date-time
          type: string
        description:
          description: Video description
          example: Learn how to create and share your first video
          maxLength: 5000
          type: string
        dimensions:
          additionalProperties: false
          description: Canvas size in pixels
          example:
            height: 1080
            width: 1920
          properties:
            height:
              type: number
            width:
              type: number
          required:
            - width
            - height
          type: object
        durationSeconds:
          description: Video duration in seconds
          example: 125.5
          minimum: 0
          type: number
        exports:
          description: Available exports and their status
          items:
            $ref: '#/components/schemas/ExportStatus'
          type: array
        id:
          description: Unique video identifier
          example: vid_abc123def456
          type: string
        links:
          allOf:
            - $ref: '#/components/schemas/VideoLinks'
          description: Related URLs for the video
        name:
          description: Video title
          example: Getting Started with Tella
          maxLength: 255
          minLength: 1
          type: string
        playlistIds:
          description: IDs of playlists containing this video
          example:
            - pl_abc123
            - pl_def456
          items:
            type: string
          type: array
        settings:
          allOf:
            - $ref: '#/components/schemas/VideoSettings'
        thumbnails:
          allOf:
            - $ref: '#/components/schemas/Thumbnails'
          description: Available thumbnail URLs by format and resolution
        transcript:
          allOf:
            - $ref: '#/components/schemas/Transcript'
        updatedAt:
          description: ISO 8601 datetime
          example: '2024-01-15T14:45:00.000Z'
          format: date-time
          type: string
        views:
          description: Total view count
          example: 1234
          maximum: 9007199254740991
          minimum: 0
          type: integer
      required:
        - id
        - name
        - description
        - views
        - aspectRatio
        - dimensions
        - autoRatio
        - createdAt
        - updatedAt
        - durationSeconds
        - chapters
        - transcript
        - thumbnails
        - exports
        - settings
        - links
        - playlistIds
        - clipIds
        - backgroundMusic
      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
            - 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
    TrimRequest:
      additionalProperties: false
      description: >-
        Trim parameters. Use either startTime+endTime for time range or
        chapterIndex for chapter extraction.
      properties:
        chapterIndex:
          description: >-
            Index of the chapter to extract (0-based). Cannot be combined with
            startTime/endTime. Get chapter count from the video's chapters
            array.
          example: 0
          maximum: 9007199254740991
          minimum: 0
          type: integer
        endTime:
          description: >-
            End time in seconds for the trimmed video. Required when using time
            range trim.
          example: 60
          minimum: 0
          type: number
        startTime:
          description: >-
            Start time in seconds for the trimmed video. Required when using
            time range trim.
          example: 10.5
          minimum: 0
          type: number
      type: object
    BackgroundMusic:
      additionalProperties: false
      description: >-
        One video-wide track that loops over the whole video and is included in
        exports
      properties:
        durationMs:
          description: Audio track duration in milliseconds
          example: 180036
          exclusiveMinimum: true
          minimum: 0
          type: number
        name:
          description: Optional display name for the track
          example: Calm Product Tour
          nullable: true
          type: string
        url:
          description: HTTPS URL of the audio track
          example: https://ucarecdn.com/example-track/
          format: uri
          pattern: ^https:\/\/.*
          type: string
        volume:
          description: Track volume from 0 (silent) to 1 (full volume)
          example: 0.2
          maximum: 1
          minimum: 0
          type: number
      required:
        - url
        - durationMs
        - volume
        - name
      type: object
    Chapter:
      additionalProperties: false
      description: A chapter/section within a video
      properties:
        description:
          description: Chapter description
          example: Overview of what we'll cover
          maxLength: 5000
          type: string
        timestampSeconds:
          description: Chapter start time in seconds
          example: 0
          minimum: 0
          type: number
        title:
          description: Chapter title
          example: Introduction
          maxLength: 255
          minLength: 1
          type: string
      required:
        - title
        - description
        - timestampSeconds
      type: object
    ExportStatus:
      additionalProperties: false
      description: Status of a video export job
      properties:
        downloadUrl:
          description: Download URL when export is completed, null otherwise
          example: https://cdn.tella.tv/exports/vid_abc123/video.mp4
          format: uri
          nullable: true
          type: string
        exportId:
          description: Unique identifier for the export job
          example: >-
            Export-Story-vid_abc123def456/2026-01-15T10:00:00Z/Story/1920x1080/30FPS
          type: string
        progress:
          description: Export progress percentage (0-100), null if not started
          example: 100
          maximum: 100
          minimum: 0
          nullable: true
          type: number
        status:
          description: Current export status
          enum:
            - queued
            - running
            - completed
            - failed
          example: completed
          type: string
        updatedAt:
          description: ISO 8601 datetime of last status update
          example: '2024-01-15T15:00:00.000Z'
          format: date-time
          type: string
      required:
        - exportId
        - status
        - progress
        - downloadUrl
        - updatedAt
      type: object
    VideoLinks:
      additionalProperties: false
      description: URLs related to a video
      properties:
        embedPage:
          description: URL for embedding the video
          example: https://www.tella.tv/video/vid_abc123def456/embed
          format: uri
          type: string
        viewPage:
          description: URL to view the video on Tella
          example: https://www.tella.tv/video/vid_abc123def456/view
          format: uri
          type: string
      required:
        - viewPage
        - embedPage
      type: object
    VideoSettings:
      additionalProperties: false
      description: Video playback and access settings
      properties:
        allowedEmbedDomains:
          description: >-
            Restrict embedding to these domains only (Premium feature). Empty
            array allows all domains.
          example:
            - example.com
            - mysite.org
          items:
            type: string
          type: array
        captionGrouping:
          description: 'How subtitle text is grouped: sentence chunks or one word at a time.'
          enum:
            - chunked
            - singleWord
          example: chunked
          type: string
        captionPosition:
          allOf:
            - $ref: '#/components/schemas/CaptionPosition'
          description: >-
            Normalized subtitle position, or null for automatic placement.
            Applies if subtitles are enabled on the video.
          nullable: true
        captionSize:
          description: Subtitle text size. Applies if subtitles are enabled on the video.
          enum:
            - small
            - medium
            - large
          example: medium
          type: string
        captionStyle:
          $ref: '#/components/schemas/CaptionStyle'
        captionsDefaultEnabled:
          description: Show subtitles to viewers by default
          example: true
          type: boolean
        commentEmailsEnabled:
          description: Send email notifications for new comments
          example: false
          type: boolean
        commentsEnabled:
          description: Allow viewers to comment
          example: true
          type: boolean
        cursor:
          $ref: '#/components/schemas/CursorSettings'
        customThumbnailURL:
          description: Custom thumbnail image URL
          example: https://example.com/custom-thumbnail.jpg
          format: uri
          nullable: true
          type: string
        defaultClipTransition:
          allOf:
            - $ref: '#/components/schemas/TransitionStyle'
          description: >-
            How each clip enters from the previous one, unless the clip
            overrides it via its own `transition`.
          example: hard_cut
        defaultPlaybackRate:
          description: Default playback speed (0.5-2.0). Viewers can still adjust.
          example: 1
          maximum: 2
          minimum: 0.5
          type: number
        downloadsEnabled:
          description: Allow viewers to download the video
          example: true
          type: boolean
        linkScope:
          allOf:
            - $ref: '#/components/schemas/VideoSettingsLinkScope'
          description: Current access level, including `org` for workspace-visible videos
        microphoneVolume:
          description: >-
            Volume of the microphone (webcam) audio across the video. 1 is the
            recorded level, 0 mutes it, 2 doubles it. A clip can override it for
            one of its sources.
          example: 1
          maximum: 2
          minimum: 0
          type: number
        motionBlur:
          description: >-
            Blur fast zoom, pan, and cursor movement. Defaults on for new
            videos.
          example: true
          type: boolean
        publishDateEnabled:
          description: Show publish date on video page
          example: true
          type: boolean
        rawDownloadsEnabled:
          description: Allow viewers to download raw source files
          example: false
          type: boolean
        searchEngineIndexingEnabled:
          description: Allow search engines to index the video page
          example: true
          type: boolean
        shrinkCameraDuringZooms:
          description: Shrink camera bubbles while a zoom is active. Defaults on.
          example: true
          type: boolean
        studioSound:
          description: >-
            Studio Sound (AI audio enhancement) master switch for the video.
            Individual clips can opt out via the clip's `studioSound` field.
          example: false
          type: boolean
        subtitlesEnabled:
          description: Allow viewers to enable subtitles
          example: true
          type: boolean
        systemAudioVolume:
          description: >-
            Volume of the system/screen audio across the video — everything that
            is not microphone audio. 1 is the recorded level, 0 mutes it, 2
            doubles it. A clip can override it for one of its sources.
          example: 1
          maximum: 2
          minimum: 0
          type: number
        thumbnailInpointMs:
          description: >-
            Time in ms on the video's playback timeline of the frame picked as
            the thumbnail (set via `inpointMs`). Null when the thumbnail is an
            uploaded image or the default. A picked frame leaves
            `customThumbnailURL` null, so check this field to verify it.
          example: 12000
          maximum: 9007199254740991
          minimum: 0
          nullable: true
          type: integer
        transcriptsEnabled:
          description: Show transcript panel to viewers
          example: true
          type: boolean
        viewCountEnabled:
          description: Show view count on video page
          example: true
          type: boolean
      required:
        - defaultPlaybackRate
        - captionsDefaultEnabled
        - subtitlesEnabled
        - captionStyle
        - captionSize
        - captionGrouping
        - captionPosition
        - transcriptsEnabled
        - publishDateEnabled
        - viewCountEnabled
        - commentsEnabled
        - commentEmailsEnabled
        - downloadsEnabled
        - rawDownloadsEnabled
        - linkScope
        - searchEngineIndexingEnabled
        - allowedEmbedDomains
        - customThumbnailURL
        - thumbnailInpointMs
        - studioSound
        - defaultClipTransition
        - microphoneVolume
        - systemAudioVolume
        - motionBlur
        - shrinkCameraDuringZooms
        - cursor
      type: object
    Thumbnails:
      additionalProperties: false
      description: Video thumbnails organized by size, with format options for each
      properties:
        large:
          allOf:
            - $ref: '#/components/schemas/ThumbnailFormats'
          description: >-
            Large thumbnails (1280x720 landscape, 720x1280 portrait, 1080x1080
            square)
        medium:
          allOf:
            - $ref: '#/components/schemas/ThumbnailFormats'
          description: >-
            Medium thumbnails with animated formats (640x360 landscape, 360x640
            portrait, 640x640 square)
        small:
          allOf:
            - $ref: '#/components/schemas/ThumbnailFormats'
          description: >-
            Small thumbnails with animated formats (320x180 landscape, 180x320
            portrait, 320x320 square)
        xl:
          allOf:
            - $ref: '#/components/schemas/ThumbnailFormats'
          description: >-
            Extra large thumbnails (1920x1080 landscape, 1080x1920 portrait,
            1080x1080 square)
      type: object
    Transcript:
      additionalProperties: false
      description: Video transcript data
      properties:
        language:
          description: Detected language code (e.g., 'en', 'es')
          example: en
          nullable: true
          type: string
        sentences:
          description: Sentences with timestamps
          items:
            $ref: '#/components/schemas/Sentence'
          nullable: true
          type: array
        status:
          description: Transcript generation status
          enum:
            - ready
            - processing
            - failed
          example: ready
          type: string
        text:
          description: Full transcript text
          example: Hello and welcome to this tutorial...
          nullable: true
          type: string
      required:
        - status
        - language
        - text
        - sentences
      type: object
    CaptionPosition:
      additionalProperties: false
      description: >-
        Normalized subtitle position. Applies if subtitles are enabled on the
        video. Null uses automatic placement.
      properties:
        x:
          maximum: 1
          minimum: 0
          type: number
        'y':
          maximum: 1
          minimum: 0
          type: number
      required:
        - x
        - 'y'
      type: object
    CaptionStyle:
      description: >-
        Subtitle style. Applies if subtitles are enabled on the video.
        Background, shadow, and outline colors and toggles are available on
        every style.
      discriminator:
        mapping:
          backdrop:
            $ref: '#/components/schemas/BackdropCaptionStyle'
          cannes:
            $ref: '#/components/schemas/CannesCaptionStyle'
          classic:
            $ref: '#/components/schemas/ClassicCaptionStyle'
          highlight:
            $ref: '#/components/schemas/HighlightCaptionStyle'
          mono:
            $ref: '#/components/schemas/MonoCaptionStyle'
        propertyName: name
      oneOf:
        - $ref: '#/components/schemas/BackdropCaptionStyle'
        - $ref: '#/components/schemas/HighlightCaptionStyle'
        - $ref: '#/components/schemas/MonoCaptionStyle'
        - $ref: '#/components/schemas/CannesCaptionStyle'
        - $ref: '#/components/schemas/ClassicCaptionStyle'
      type: object
    CursorSettings:
      additionalProperties: false
      description: Animated cursor settings
      properties:
        clickRipple:
          description: Show a ripple on mouse clicks. Defaults off for new videos.
          example: false
          type: boolean
        hideWhenInactive:
          description: >-
            Fade the animated cursor out while inactive and back in when
            activity resumes.
          example: false
          type: boolean
        returnToStart:
          description: >-
            Move the cursor back to its opening position at the end for cleaner
            loops.
          example: false
          type: boolean
        size:
          description: Animated cursor size multiplier.
          example: 3.05
          maximum: 6
          minimum: 0.5
          type: number
        smoothing:
          description: Smooth cursor movement. Defaults off for new videos.
          example: false
          type: boolean
        style:
          $ref: '#/components/schemas/CursorStyle'
      required:
        - style
        - size
        - smoothing
        - clickRipple
        - hideWhenInactive
        - returnToStart
      type: object
    TransitionStyle:
      description: >-
        How one thing gives way to the next: `smooth` eases across the change,
        `hard_cut` swaps instantly.
      enum:
        - smooth
        - hard_cut
      example: smooth
      type: string
    VideoSettingsLinkScope:
      description: >-
        Current video access level. The read-only `org` value means the video is
        visible across its workspace; public updates intentionally do not accept
        that value.
      enum:
        - public
        - private
        - org
        - password
        - embedonly
      example: org
      type: string
    ThumbnailFormats:
      additionalProperties: false
      description: Thumbnail URLs in various formats for a specific size
      properties:
        gif:
          description: Animated GIF thumbnail URL (medium and small sizes only)
          example: https://cdn.tella.tv/thumbnails/vid_abc123/640x360.gif
          format: uri
          type: string
        jpg:
          description: JPEG thumbnail URL
          example: https://cdn.tella.tv/thumbnails/vid_abc123/1920x1080.jpg
          format: uri
          type: string
        mp4:
          description: Animated MP4 thumbnail URL (medium and small sizes only)
          example: https://cdn.tella.tv/thumbnails/vid_abc123/640x360.mp4
          format: uri
          type: string
        webp:
          description: WebP thumbnail URL
          example: https://cdn.tella.tv/thumbnails/vid_abc123/1920x1080.webp
          format: uri
          type: string
      type: object
    Sentence:
      additionalProperties: false
      description: A sentence from the transcript with timestamps
      properties:
        endSeconds:
          description: Sentence end time in seconds
          example: 2.3
          minimum: 0
          type: number
        startSeconds:
          description: Sentence start time in seconds
          example: 0.5
          minimum: 0
          type: number
        text:
          description: Sentence text
          example: Hello and welcome to this tutorial.
          type: string
      required:
        - text
        - startSeconds
        - endSeconds
      type: object
    BackdropCaptionStyle:
      additionalProperties: false
      properties:
        activeWordTextColor:
          description: >-
            Text color of the spoken word when highlightMode is background.
            Defaults to textColor.
          example: '#5E51F8FF'
          pattern: ^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$
          type: string
        backgroundColor:
          description: >-
            Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase
            #RRGGBBAA.
          example: '#5E51F8FF'
          pattern: ^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$
          type: string
        backgroundEnabled:
          type: boolean
        highlightColor:
          description: >-
            Spoken-word color. Omit to retain the legacy text-opacity
            progression.
          example: '#5E51F8FF'
          pattern: ^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$
          type: string
        highlightMode:
          description: How the spoken word is emphasized. Defaults to text.
          enum:
            - text
            - background
            - fadeRest
          type: string
        name:
          enum:
            - backdrop
          type: string
        outlineColor:
          description: >-
            Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase
            #RRGGBBAA.
          example: '#5E51F8FF'
          pattern: ^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$
          type: string
        outlineEnabled:
          type: boolean
        shadowColor:
          description: >-
            Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase
            #RRGGBBAA.
          example: '#5E51F8FF'
          pattern: ^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$
          type: string
        shadowEnabled:
          type: boolean
        textCase:
          description: Letter case applied to every caption word. Defaults to original.
          enum:
            - original
            - uppercase
            - lowercase
          type: string
        textColor:
          description: >-
            Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase
            #RRGGBBAA.
          example: '#5E51F8FF'
          pattern: ^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$
          type: string
        wordLevelHighlights:
          type: boolean
      required:
        - backgroundColor
        - name
        - textColor
        - wordLevelHighlights
      title: Backdrop
      type: object
    CannesCaptionStyle:
      additionalProperties: false
      properties:
        activeWordTextColor:
          description: >-
            Text color of the spoken word when highlightMode is background.
            Defaults to textColor.
          example: '#5E51F8FF'
          pattern: ^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$
          type: string
        backgroundColor:
          description: >-
            Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase
            #RRGGBBAA.
          example: '#5E51F8FF'
          pattern: ^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$
          type: string
        backgroundEnabled:
          type: boolean
        highlightColor:
          description: Spoken-word color. Defaults to textColor.
          example: '#5E51F8FF'
          pattern: ^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$
          type: string
        highlightMode:
          description: How the spoken word is emphasized. Defaults to text.
          enum:
            - text
            - background
            - fadeRest
          type: string
        name:
          enum:
            - cannes
          type: string
        outlineColor:
          description: >-
            Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase
            #RRGGBBAA.
          example: '#5E51F8FF'
          pattern: ^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$
          type: string
        outlineEnabled:
          type: boolean
        shadowColor:
          description: >-
            Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase
            #RRGGBBAA.
          example: '#5E51F8FF'
          pattern: ^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$
          type: string
        shadowEnabled:
          type: boolean
        textCase:
          description: Letter case applied to every caption word. Defaults to original.
          enum:
            - original
            - uppercase
            - lowercase
          type: string
        textColor:
          description: >-
            Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase
            #RRGGBBAA.
          example: '#5E51F8FF'
          pattern: ^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$
          type: string
        wordLevelHighlights:
          description: Highlight each word as it is spoken. Defaults to false.
          type: boolean
      required:
        - shadowColor
        - name
        - textColor
      title: Cannes
      type: object
    ClassicCaptionStyle:
      additionalProperties: false
      properties:
        activeWordTextColor:
          description: >-
            Text color of the spoken word when highlightMode is background.
            Defaults to textColor.
          example: '#5E51F8FF'
          pattern: ^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$
          type: string
        backgroundColor:
          description: >-
            Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase
            #RRGGBBAA.
          example: '#5E51F8FF'
          pattern: ^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$
          type: string
        backgroundEnabled:
          type: boolean
        highlightColor:
          description: Spoken-word color. Defaults to textColor.
          example: '#5E51F8FF'
          pattern: ^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$
          type: string
        highlightMode:
          description: How the spoken word is emphasized. Defaults to text.
          enum:
            - text
            - background
            - fadeRest
          type: string
        name:
          enum:
            - classic
          type: string
        outlineColor:
          description: >-
            Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase
            #RRGGBBAA.
          example: '#5E51F8FF'
          pattern: ^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$
          type: string
        outlineEnabled:
          type: boolean
        shadowColor:
          description: >-
            Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase
            #RRGGBBAA.
          example: '#5E51F8FF'
          pattern: ^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$
          type: string
        shadowEnabled:
          type: boolean
        textCase:
          description: Letter case applied to every caption word. Defaults to original.
          enum:
            - original
            - uppercase
            - lowercase
          type: string
        textColor:
          description: >-
            Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase
            #RRGGBBAA.
          example: '#5E51F8FF'
          pattern: ^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$
          type: string
        wordLevelHighlights:
          description: Highlight each word as it is spoken. Defaults to false.
          type: boolean
      required:
        - outlineColor
        - name
        - textColor
      title: Classic
      type: object
    HighlightCaptionStyle:
      additionalProperties: false
      properties:
        backgroundColor:
          description: >-
            Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase
            #RRGGBBAA.
          example: '#5E51F8FF'
          pattern: ^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$
          type: string
        backgroundEnabled:
          type: boolean
        highlightColor:
          description: >-
            Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase
            #RRGGBBAA.
          example: '#5E51F8FF'
          pattern: ^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$
          type: string
        highlightMode:
          description: How the spoken word is emphasized. Defaults to background.
          enum:
            - text
            - background
            - fadeRest
          type: string
        name:
          enum:
            - highlight
          type: string
        outlineColor:
          description: >-
            Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase
            #RRGGBBAA.
          example: '#5E51F8FF'
          pattern: ^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$
          type: string
        outlineEnabled:
          type: boolean
        primaryTextColor:
          description: >-
            Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase
            #RRGGBBAA.
          example: '#5E51F8FF'
          pattern: ^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$
          type: string
        secondaryTextColor:
          description: >-
            Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase
            #RRGGBBAA.
          example: '#5E51F8FF'
          pattern: ^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$
          type: string
        shadowColor:
          description: >-
            Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase
            #RRGGBBAA.
          example: '#5E51F8FF'
          pattern: ^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$
          type: string
        shadowEnabled:
          type: boolean
        textCase:
          description: Letter case applied to every caption word. Defaults to original.
          enum:
            - original
            - uppercase
            - lowercase
          type: string
        wordLevelHighlights:
          description: Highlight each word as it is spoken. Defaults to true.
          type: boolean
      required:
        - name
        - primaryTextColor
        - secondaryTextColor
        - highlightColor
      title: Highlight
      type: object
    MonoCaptionStyle:
      additionalProperties: false
      properties:
        activeWordTextColor:
          description: >-
            Text color of the spoken word when highlightMode is background.
            Defaults to textColor.
          example: '#5E51F8FF'
          pattern: ^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$
          type: string
        backgroundColor:
          description: >-
            Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase
            #RRGGBBAA.
          example: '#5E51F8FF'
          pattern: ^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$
          type: string
        backgroundEnabled:
          type: boolean
        highlightColor:
          description: >-
            Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase
            #RRGGBBAA.
          example: '#5E51F8FF'
          pattern: ^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$
          type: string
        highlightMode:
          description: How the spoken word is emphasized. Defaults to text.
          enum:
            - text
            - background
            - fadeRest
          type: string
        name:
          enum:
            - mono
          type: string
        outlineColor:
          description: >-
            Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase
            #RRGGBBAA.
          example: '#5E51F8FF'
          pattern: ^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$
          type: string
        outlineEnabled:
          type: boolean
        shadowColor:
          description: >-
            Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase
            #RRGGBBAA.
          example: '#5E51F8FF'
          pattern: ^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$
          type: string
        shadowEnabled:
          type: boolean
        textCase:
          description: Letter case applied to every caption word. Defaults to original.
          enum:
            - original
            - uppercase
            - lowercase
          type: string
        textColor:
          description: >-
            Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase
            #RRGGBBAA.
          example: '#5E51F8FF'
          pattern: ^#(?:[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$
          type: string
        wordLevelHighlights:
          description: Highlight each word as it is spoken. Defaults to true.
          type: boolean
      required:
        - name
        - textColor
        - highlightColor
      title: Mono
      type: object
    CursorStyle:
      description: >-
        Animated cursor artwork. mac is the pre-Tahoe style; macTahoe and
        macGoldenGate match those macOS generations; windows and touch use
        platform-specific artwork.
      enum:
        - mac
        - macTahoe
        - macGoldenGate
        - windows
        - touch
      example: macTahoe
      type: string
  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

- [Videos](/docs/mcp-tools/videos.md)
- [Duplicate a clip](/docs/api-reference/clips/duplicate-a-clip.md)
- [Clips](/docs/mcp-tools/clips.md)
- [Add text to your video](/docs/help/editing/text-overlays.md)
- [Remix & reuse videos and clips](/docs/help/editing/remix-and-reuse-videos-and-clips.md)
