Save custom caption preset
save_custom_presetFree. Design and save your own full caption preset for this key (or the account when the key is claimed). Either pass style (the full document) or basePreset (e.g. 'hormozi-style', 'Clarity', or custom:cp_...) plus overrides (deep-merged; null removes a field). The style is validated with the same schema the renderer uses; invalid styles return 422 invalid_style with errors [{path, message}]. Returns id custom:cp_...: pass it as preset to burn_captions, caption_video, preview, shorts, prepare_client_burn, review or plan; server and browser renders are identical. Up to 50 presets, 20 KB each. Private until you call submit_custom_preset. Tip: get_style_reference lists every field with examples (wordHighlights rules, smartEmphasis, wordStateStyles); validate_preset_style and preview (one still) before a paid burn.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| style | No | Full caption style JSON, the same document list_presets returns in style and the web editor stores: fontFamily, fontWeight, fontSize (px at 720p), color, strokeWidth/strokeColor, backgroundEnabled/backgroundColor/backgroundOpacity/paddingX/paddingY/borderRadius, shadow*, position (top|center|bottom), margin, subtitleWidth, textTransform, letterSpacing, revealMode (none|full|progressive|word-by-word), animationEnabled + animation (Fade|Zoom In|Zoom Out|Slide Up|Slide Down), motion*, wordStateStyles {active|past|upcoming|future: partial style}, wordHighlights {rules,customLists}, smartEmphasis, segmentColorCycle. Unknown fields are rejected. fontFamily (also inside wordStateStyles) must be a bundled font: Inter, Poppins, Oswald, Roboto, Anton, Bebas Neue, Playfair Display, Caveat, IBM Plex Mono (list_presets returns fonts). Caption forms: maxWordsPerCaption 1-8 (1 = one big word at a time; wins over the autoFit words cap). activeWordReflow true = a scaled active word pushes neighbours aside. wordEntrance bounce|slide-up|fade (+ wordEntranceDuration seconds) animates each word when spoken. positionMode cycle|keyword (+ positionCycle [top|center|bottom], positionKeywords [words], keywordPosition) moves captions, always inside the safe zone. captionLayout stacked = poster, one word per line with a bigger hero word (posterHeroScale 1-3). faceAvoid true = burns detect faces and move captions off them; the result returns faceAvoid.faceLayout, store it as style.faceLayout to reuse. | |
| overrides | No | Style fields to change on top of basePreset (or of style). | |
| basePreset | No | Start from this preset (id, slug, name, or custom:cp_...) instead of a full style. | |
| description | No |