---
title: "Preview caption theme"
method: POST
path: "/caption-themes/preview"
tags: ["Captions and Themes"]
---

# Preview caption theme

`POST /caption-themes/preview`

## Request

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

Preview caption theme.

## Request body

- object
  - `settings` object, required
    - `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
  - `sample_text` string
  - `aspect_ratio` '9:16' | '16:9' | '1:1'
  - `target_width` number
  - `image_format` 'png' | 'jpeg'

## Response `200`

Successful response

- object
  - `preview_url` string, required
  - `expires_at` string, required
  - `width` number, required
  - `height` number, required

## Other responses

- `400`: Invalid input data
- `401`: Authorization not provided
- `403`: Insufficient access
- `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)
