This page documents frontend workflow-configurable fields only. Backend-only runtime fields are intentionally omitted.
Where Overrides Go
Add one of these fields toPOST /trigger-template:
nodeConfigsnodeConfigOverridesactionConfigs
nodeConfigs.
How Overrides Apply
- Overrides are keyed by workflow node type, such as
add_brolloradd_subtitles. - The public API resolves each node type to the matching node in the selected workflow.
- If the workflow does not contain that node type, the override is skipped and the workflow still runs.
- If the workflow contains the node but the config has invalid field names, invalid types, or invalid enum values, the request returns
INVALID_NODE_CONFIG. - Structured overrides win over legacy flat fields when both set the same nested value.
broll: true and nodeConfigs.add_broll.enabled: false, the structured nodeConfigs value wins for add_broll.enabled.
Quick Example
This example changes clip length, b-roll, subtitles, and vertical reframe behavior for one trigger:Supported Node Types
Per-Node Examples
find_clips
Controls the clip discovery step.
convert_to_vertical
Controls the Reframe / Convert to Vertical node.
add_broll
Controls B-roll generation and sourcing.
add_subtitles
Controls subtitle placement and styling.
speakerStyles array entry fields:
style_video
Controls the complete visual treatment from the Style Video
node. All styling elements are optional; an empty layers array is a valid
no-op.
Layer fields:
Style Video supports multiple title, watermark, and media-overlay layers. It
supports at most one subtitle layer and one lower-third layer. Watermark layers
require
config.url; media overlays require config.mediaUrl.
Color grading fields:
add_music
Controls background music.
Music option fields:
add_watermark
Controls watermark rendering config.
apply_branding
Controls the Apply Branding node.
add_title_overlay
Controls the Title Overlay node.
title_config fields:
By default this node generates a title for each clip with AI and ignores
text. To use your own fixed title instead, set generateTitle to false and provide text:
Title variables
Define as many variables as your title needs intitleVariables. A variable
can generate a result, hold a fixed value, or reference current workflow data.
Its id is the stable token used by templates; name is the editable display
label shown on its colored block in the editor. Existing variables without a
source retain generated behavior.
titleVariableBindings maps text element IDs to reusable text templates.
Use text-primary for a custom title’s main text and for most presets’ primary
text. The older __primary__ key is still accepted and is saved as the primary
element’s ID. Supporting fields use the preset’s editable element IDs, such as
text-author, text-secondary, or text-likes for the tweet designs.
Each template can combine fixed copy with multiple tokens, and a token may be
repeated or reused across fields. Numbers and booleans render as text,
including 0 and false. Unknown, malformed, or unfinished tokens render as
empty text. Braces inside a variable’s resolved value remain literal text and
are not expanded again. Variables change field contents while preserving
typography, placement, animation, and uploaded graphics.
titleVariableImageBindings maps a preset’s image slot to exactly one image
token, such as { "avatar-image": "{{logo}}" }. You can use a fixed image
variable or a current-input image reference such as {{clip.thumbnail}}.
Image bindings also accept a fixed HTTP(S) image URL or an empty string to
clear the slot. They do not combine multiple tokens or interpolate surrounding
text. The slot retains its authored fitting, crop, and animation.
Available workflow references:
Use text and number keys directly in text templates or generated prompts, for example
{{source.title}} or Summarize these points: {{clip.transcript}}. For an image
slot, use an image reference. The workflow picker exposes only references
available from upstream inputs, not fields from downstream or disconnected
nodes. Runtime references are refreshed from the current input. Missing or
incompatible references resolve empty; saved sample values cannot stand in for
missing input from another run.
title_config object as a Style Video title layer’s
layers[].config, or pass the wrapper under nodeConfigs.add_title_overlay.
At run time, generated variables run independently for each clip, fixed values
stay unchanged, and references read the current input. Set
generateTitle: false to use generated samples without AI generation; this
does not freeze references.
A primary variable binding supplies the title instead of the legacy headline
prompt. When Use Source Title resolves a source title, that exact title
takes precedence for the primary field; supporting variable fields still use
their generated values.
The workflow editor simulates one generated variable using sample inputs from
Preview workflow values; Studio uses the current clip’s context. Preview
samples do not override the actual input used by a workflow run.
Definitions, text/image bindings, and resolved values are retained with the
saved title so Studio can reopen and edit them. Reusable templates keep the
sources, prompts, fixed values, and bindings for subsequent runs.
Styled title templates
SettitlePresetId to render one of the built-in styled title templates — the same templates available in the workflow editor’s Text panel — instead of the flat title styling. The same fields work inside the top-level titleConfig object of the trigger endpoint. The AI-generated title fills the template’s primary line, and the template’s design (fonts, colors, backplate, animation) is preserved.
Supplying titlePresetId selects that template from a clean preset state for the run. Any palette, presetOverrides, presetTextOverrides, or presetGenerationBlocks stored on the workflow’s previously selected template are cleared first. The API seeds the template’s editor sample text and semantic generation blocks, then applies the fields in your request. This matches selecting a different template in the workflow editor and prevents customizations from the old template leaking into the new one.
Available titlePresetId values:
The workflow runtime also recognizes these twelve library presets when called
directly with
title_config.titlePresetId; callers do not need to copy
presetGenerationBlocks from the editor. It supplies each preset’s default
duration, placement, palette, and semantic generation blocks before applying
caller overrides. Speaker Spotlight generates a featured person’s name.
Both tweet variants generate a 15–35 word post body. Supporting text and attribution
fields remain fixed unless explicitly configured for generation.
iOS Text Message generates a 10–25 word message; Reddit Post generates a
6–15 word post title. Both supply a format-specific default prompt, while an
explicit caller prompt takes precedence. Their image slot IDs are
contact-image and community-image, respectively. iOS palettes are
imessage, sms, and dark; Reddit palettes are light, dark, and dim.
Optional customizations layered on the chosen template:
titlePaletteId— a palette id for templates that define palettes.cyan-block-titleandcyan-divider-title:breaking-news,national-news,politics,world-news,local-news,weather,entertainment.tiktok-3d:tiktok,grape-lime,sunset.instagram-wrap:clean,midnight,peach.presetOverrides— an object of style/position tweaks applied on top of the template. Supported keys includefontColor,fontFamily,fontWeight,fontStyle("italic"/"normal"),textAlign,textTransform,lineHeight,letterSpacing,wrapWidth,maxLines,backgroundColor,backgroundStyle,padding,borderRadius,textShadow,boxShadow, and geometry (xPosition,yPosition,scale,width,height,rotation). Positions are0–1fractions of the frame.presetTextOverrides— fixed text for a template’s secondary line(s), keyed by element id (e.g.{ "text-secondary": "Episode #4" }for the Daily Vlog subtitle). The primary line uses the generated title or fixedtext; a configured variable binding supplies the contents of its bound field.presetOverrides.graphicSources— image URLs keyed by the preset’s image slot:brand-logofor the new branded title designs, oravatar-imagefor Tweet Card. Set a source to""to remove it. The source is saved with the title and retains its authored placement, fit, and animation.
nodeConfigs.add_title_overlay for a workflow trigger. For a Style Video title
layer, place the inner title_config object in layers[].config. Tweet Card’s
palette IDs are light, dim, and dark. For the backgroundless version,
select tweet-overlay; it defaults to the white palette and yPosition: 0.22,
with blue and warm accent palettes also available. Both versions share the
same text and avatar IDs. Author, handle, timestamp/source, and
counts are editable display values; generation does not retrieve a real post.
Example — a Breaking News headline template, recolored and nudged higher:
When
titlePresetId is set, the flat typography/background fields (fontFamily, backgroundColor, etc.) are ignored — adjust the template with presetOverrides instead.add_lower_thirds
Adds a speaker-name lower-third card when each speaker first talks.
Add the Add Lower Thirds node to your workflow in the portal and style it there (preset, colours, position). Then name the people in each video on the trigger call with speaker_names — the names change every run, the styling does not.
speaker_names is positional, ordered by who speaks first. The first entry names the first person heard in the video, the second entry the second, and so on — the same “Speaker 1 / Speaker 2” model used in the studio editor. title is optional; omit it for a name-only card.
To leave one speaker unnamed while naming a later one, pass null (or {}) in their position so the remaining names stay aligned:
speaker_names is available through the API only — there is no field for it in the workflow builder, because who appears in a video changes with every run.Overriding the styling
lower_thirds_config overrides the styling set in the builder. It merges, so send only what you want to change and everything else is kept:
Changing
titlePresetId resets that preset’s colours and palette to their defaults (a colour chosen for one template does not carry to another), but keeps your position. To change template and colours in one call, send both in the same request.filler_words
Controls filler word, stutter, and silence cleanup.
smart_zoom
Controls Smart Zoom.
add_outro
Controls end card and outro music.
add_audiogram
Controls audiogram display.
remove_watermark
Controls watermark removal.
Watermark removal finds logos, watermarks, and sponsor badges placed on top of the video. Captions, subtitles,
lower-third bars, chat overlays, full-width show banners, and anything physically in the scene are left alone. Parts
of the video where the watermark isn’t on screen, such as full-screen B-roll, are left untouched.
If removal fails or no watermark is found, the clip passes through unchanged with
watermarkRemovalFailed: true.
add_brainrot
Controls Brainrot split-screen style.
media_overlay
Controls media overlays.
remove_curse_words
Controls curse word handling.
Legacy Flat Fields
These flat trigger fields still work and are converted into node configs internally:Trigger Template
Use node config overrides when triggering a workflow template