---
title: "Update caption theme"
method: PATCH
path: "/caption-themes/{themeId}"
tags: ["Captions and Themes"]
---

# Update caption theme

`PATCH /caption-themes/{themeId}`

## Request

- Base URL: `https://blitzreels.com/api/v1`
- URL: `https://blitzreels.com/api/v1/caption-themes/{themeId}`
- Auth: API key in header `Authorization`

Update caption theme.

## Path parameters

- `themeId` string, required

## Request body

- object
  - `name` string
  - `description` string
  - `settings` object
    - `fontSize` number
    - `fontFamily` string
    - `fontWeight` string
    - `fontStyle` 'normal' | 'italic', nullable
    - `color` string
    - `backgroundColor` string
    - `borderRadius` number
    - `textAlign` 'left' | 'center' | 'right' | 'justify'
    - `activeWordScale` number, nullable
    - `activeWordTransition` 'spring' | 'instant'
    - `activeWordLayout` 'reserved' | 'reflow'
    - `captionMotion` 'none' | 'tremble'
    - `lineWrap` 'balanced' | 'greedy'
    - `customPositionAnchor` 'top' | 'center'
    - `emphasisFontStyle` 'normal' | 'italic', nullable
    - `activeWordColor` string
    - `activeWordBackgroundColor` string
    - `activeWordAnimation` 'highlight' | 'scale' | 'glow' | 'lift' | 'bounce' | 'punch' | 'slam' | 'elastic' | 'shake' | 'none'
    - `emojiOverlaySizePx` union
      - 0
      - number
    - `showActiveWord` boolean
    - `maxLinesPerCaption` integer
    - `lineHeight` number
    - `letterSpacing` number
    - `wordSpacingPx` number, nullable
    - `position` 'bottom' | 'middle' | 'top' | 'custom'
    - `customPositionY` number, nullable
    - `textShadow` string
    - `shadowMode` 'text-shadow' | 'drop-shadow', nullable
    - `border` string
    - `textFillStyle` 'solid' | 'gradient'
    - `textGradientFrom` string
    - `textGradientTo` string
    - `textGradientAngleDeg` number
    - `textGradientStops` string, nullable
    - `textStrokeEnabled` boolean
    - `textStrokeColor` string
    - `textStrokeWidthPx` number
    - `textStrokeBlurPx` number
    - `wordRevealAnimation` 'none' | 'fade' | 'scale' | 'slide-up' | 'slide-left' | 'slide-mix' | 'pop' | 'drop' | 'slam' | 'typewriter' | 'glitch' | 'mask-reveal' | 'bounce-up' | 'split-reveal'
    - `wordsPerLineLimit` number, nullable
    - `activeWordHoldMs` number
    - `spokenWordColorDurationMs` number, nullable
    - `paragraphMode` 'off' | 'auto' | 'manual'
    - `paragraphTransition` 'fade' | 'slide-up'
    - `paragraphFadeMs` number
    - `revealMode` 'single' | 'sequential' | 'static'
    - `paragraphReveal` 'sequential' | 'static'
    - `pageCombineMs` number

## Response `200`

Successful response

- object
  - `id` string, required
  - `name` string, required
  - `description` string, nullable, required
  - `settings` unknown, required
  - `is_public` boolean, required
  - `usage_count` number, required
  - `created_at` string, nullable, required
  - `updated_at` string, nullable, required

## Other responses

- `400`: Invalid input data
- `401`: Authorization not provided
- `403`: Insufficient access
- `404`: Not found
- `500`: Internal server error

---

[API](https://skmtc.dev/blitzreels/apis/blitzreels-api.md) · [All operations](https://skmtc.dev/blitzreels/apis/blitzreels-api/llms.txt) · [OpenAPI document](https://skmtc.dev/blitzreels/apis/blitzreels-api/revisions/35608b12471d?raw)
