---
title: "Apply a subtitle preset"
method: PUT
path: "/v1/videos/{id}/subtitle-preset"
tags: ["Videos"]
---

# Apply a subtitle preset

`PUT /v1/videos/{id}/subtitle-preset`

Apply a preset returned by GET /v1/subtitle-presets. Built-in presets restore style, font, weight, and size, preserving position, grouping, and lines per block. Personal presets also restore those saved layout settings. Does not change transcript text or whether subtitles are enabled. Changes sync to open editors; reapplying the same preset is safe.

## Path parameters

- `id` string, required — Unique video identifier

## Request body

- object
  - `presetId` string, required

## Response `200`

Preset applied

- object
  - `preset` SubtitlePreset, required
    - `captionStyle` union, required — Subtitle style. Applies if subtitles are enabled on the video. Background, shadow, and outline colors and toggles are available on every style.
      - object
        - `activeWordTextColor` string — Text color of the spoken word when highlightMode is background. Defaults to textColor.
        - `backgroundColor` string, required — Caption background color in #RRGGBB or #RRGGBBAA form. Its alpha channel is rendered exactly; #RRGGBB is fully opaque. Responses use uppercase #RRGGBBAA and report the effective rendered color.
        - `backgroundEnabled` boolean
        - `highlightColor` string — Spoken-word color. Omit to retain the legacy text-opacity progression.
        - `highlightMode` 'text' | 'background' | 'fadeRest' — How the spoken word is emphasized. Defaults to text.
        - `name` 'backdrop', required
        - `outlineColor` string — Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase #RRGGBBAA.
        - `outlineEnabled` boolean
        - `shadowColor` string — Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase #RRGGBBAA.
        - `shadowEnabled` boolean
        - `textCase` 'original' | 'uppercase' | 'lowercase' — Letter case applied to every caption word. Defaults to original.
        - `textColor` string, required — Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase #RRGGBBAA.
        - `wordLevelHighlights` boolean, required
      - object
        - `backgroundColor` string — Caption background color in #RRGGBB or #RRGGBBAA form. Its alpha channel is rendered exactly; #RRGGBB is fully opaque. Responses use uppercase #RRGGBBAA and report the effective rendered color.
        - `backgroundEnabled` boolean
        - `highlightColor` string, required — Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase #RRGGBBAA.
        - `highlightMode` 'text' | 'background' | 'fadeRest' — How the spoken word is emphasized. Defaults to background.
        - `name` 'highlight', required
        - `outlineColor` string — Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase #RRGGBBAA.
        - `outlineEnabled` boolean
        - `primaryTextColor` string, required — Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase #RRGGBBAA.
        - `secondaryTextColor` string, required — Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase #RRGGBBAA.
        - `shadowColor` string — Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase #RRGGBBAA.
        - `shadowEnabled` boolean
        - `textCase` 'original' | 'uppercase' | 'lowercase' — Letter case applied to every caption word. Defaults to original.
        - `wordLevelHighlights` boolean — Highlight each word as it is spoken. Defaults to true.
      - object
        - `activeWordTextColor` string — Text color of the spoken word when highlightMode is background. Defaults to textColor.
        - `backgroundColor` string — Caption background color in #RRGGBB or #RRGGBBAA form. Its alpha channel is rendered exactly; #RRGGBB is fully opaque. Responses use uppercase #RRGGBBAA and report the effective rendered color.
        - `backgroundEnabled` boolean
        - `highlightColor` string, required — Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase #RRGGBBAA.
        - `highlightMode` 'text' | 'background' | 'fadeRest' — How the spoken word is emphasized. Defaults to text.
        - `name` 'mono', required
        - `outlineColor` string — Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase #RRGGBBAA.
        - `outlineEnabled` boolean
        - `shadowColor` string — Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase #RRGGBBAA.
        - `shadowEnabled` boolean
        - `textCase` 'original' | 'uppercase' | 'lowercase' — Letter case applied to every caption word. Defaults to original.
        - `textColor` string, required — Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase #RRGGBBAA.
        - `wordLevelHighlights` boolean — Highlight each word as it is spoken. Defaults to true.
      - object
        - `activeWordTextColor` string — Text color of the spoken word when highlightMode is background. Defaults to textColor.
        - `backgroundColor` string — Caption background color in #RRGGBB or #RRGGBBAA form. Its alpha channel is rendered exactly; #RRGGBB is fully opaque. Responses use uppercase #RRGGBBAA and report the effective rendered color.
        - `backgroundEnabled` boolean
        - `highlightColor` string — Spoken-word color. Defaults to textColor.
        - `highlightMode` 'text' | 'background' | 'fadeRest' — How the spoken word is emphasized. Defaults to text.
        - `name` 'cannes', required
        - `outlineColor` string — Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase #RRGGBBAA.
        - `outlineEnabled` boolean
        - `shadowColor` string, required — Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase #RRGGBBAA.
        - `shadowEnabled` boolean
        - `textCase` 'original' | 'uppercase' | 'lowercase' — Letter case applied to every caption word. Defaults to original.
        - `textColor` string, required — Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase #RRGGBBAA.
        - `wordLevelHighlights` boolean — Highlight each word as it is spoken. Defaults to false.
      - object
        - `activeWordTextColor` string — Text color of the spoken word when highlightMode is background. Defaults to textColor.
        - `backgroundColor` string — Caption background color in #RRGGBB or #RRGGBBAA form. Its alpha channel is rendered exactly; #RRGGBB is fully opaque. Responses use uppercase #RRGGBBAA and report the effective rendered color.
        - `backgroundEnabled` boolean
        - `highlightColor` string — Spoken-word color. Defaults to textColor.
        - `highlightMode` 'text' | 'background' | 'fadeRest' — How the spoken word is emphasized. Defaults to text.
        - `name` 'classic', required
        - `outlineColor` string, required — Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase #RRGGBBAA.
        - `outlineEnabled` boolean
        - `shadowColor` string — Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase #RRGGBBAA.
        - `shadowEnabled` boolean
        - `textCase` 'original' | 'uppercase' | 'lowercase' — Letter case applied to every caption word. Defaults to original.
        - `textColor` string, required — Hex color in #RRGGBB or #RRGGBBAA form. Responses use uppercase #RRGGBBAA.
        - `wordLevelHighlights` boolean — Highlight each word as it is spoken. Defaults to false.
    - `name` string, required
    - `presetId` string, required — Pass this ID to PUT /v1/videos/{id}/subtitle-preset
    - `scope` 'default' | 'personal', required

## Other responses

- `400` — The request was malformed or contained invalid parameters.
- `401` — Authentication is required. Provide a valid API key.
- `403` — You don't have permission to access this resource.
- `404` — The requested resource was not found.
- `409` — 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.
- `429` — You have exceeded the rate limit. Please slow down.
- `500` — An unexpected error occurred
- `501` — The requested operation is not implemented.
- `503` — A dependency was unavailable and the request was not executed. Safe to resend unchanged after the Retry-After delay.

## Changes

> 18 revisions in range; 1 not diffed.

- **2026-09-28** `ac47c99c144f` — 9 warning
  - added the new `edit_conflict` enum value to the `error` response property for the response status `400`
  - added the new `edit_conflict` enum value to the `error` response property for the response status `401`
  - added the new `edit_conflict` enum value to the `error` response property for the response status `403`
  - added the new `edit_conflict` enum value to the `error` response property for the response status `404`
  - …5 more
- **2026-09-12** `955068d95b7e` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/withchima/apis/tella-public-api/changes/v1/videos/:id/subtitle-preset/put.md)

---

[API](https://skmtc.dev/withchima/apis/tella-public-api.md) · [All operations](https://skmtc.dev/withchima/apis/tella-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/withchima/apis/tella-public-api/revisions/704d6fc3bc60?raw)
