> ## Documentation Index
> Fetch the complete documentation index at: https://docs.overlap.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Node Config

> Override workflow action node settings when triggering a template

Use node config overrides when a trigger needs to change the same settings a user can configure in the workflow builder. This is the most precise way to customize a run without editing the saved workflow template.

<Info>
  This page documents frontend workflow-configurable fields only. Backend-only runtime fields are intentionally omitted.
</Info>

## Where Overrides Go

Add one of these fields to `POST /trigger-template`:

* `nodeConfigs`
* `nodeConfigOverrides`
* `actionConfigs`

They all behave the same way. Most integrations should use `nodeConfigs`.

```json theme={null}
{
  "companyId": "company-id-from-your-overlap-account",
  "workflowId": "workflow-id-from-the-overlap-workflow-url",
  "url": "public-source-video-url",
  "nodeConfigs": {
    "add_broll": {
      "enable_ai_broll": true,
      "broll_frequency": "high"
    }
  }
}
```

You can also send overrides as a list:

```json theme={null}
{
  "nodeConfigs": [
    {
      "nodeType": "add_broll",
      "config": {
        "enable_ai_broll": true,
        "broll_frequency": "high"
      }
    }
  ]
}
```

## How Overrides Apply

* Overrides are keyed by workflow node type, such as `add_broll` or `add_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.

For example, if you send both `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:

```json theme={null}
{
  "nodeConfigs": {
    "find_clips": {
      "min_length": 30,
      "max_length": 90,
      "model_key": "multimodal",
      "prompt": "Find clips where the speaker explains a concrete product benefit."
    },
    "add_broll": {
      "enable_ai_broll": true,
      "broll_frequency": "high",
      "allowed_methods": ["google_images", "youtube"]
    },
    "add_subtitles": {
      "subtitle_config": {
        "speakerStyles": [
          {
            "subtitleY": 50
          }
        ]
      }
    },
    "convert_to_vertical": {
      "style": "adaptive",
      "split_view": true,
      "force_split_view": true,
      "ignore_content_tiles": false
    }
  }
}
```

## Supported Node Types

| Node type             | Frontend-configurable fields                                                                                                                                                |
| --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `find_clips`          | `min_length`, `max_length`, `model_key`, `prompt`, `promptAdjustment`, `pinnedTimestamps`, `pinnedTimestampsOnly`, `pinnedTimestampMode`                                    |
| `convert_to_vertical` | `aspect_ratio`, `style`, `centerVertical`, `zoom` and `gaussian_blur` when `centerVertical` is `true`, `y_offset`, `split_view`, `force_split_view`, `ignore_content_tiles` |
| `add_broll`           | `prompt`, `broll_frequency`, `allowed_methods`, `enable_ai_broll`, `use_broll_library`, `library_folder_ids`                                                                |
| `add_subtitles`       | `subtitle_config`                                                                                                                                                           |
| `add_music`           | `background_music_option`, `background_music_options`                                                                                                                       |
| `add_watermark`       | `watermark_config`                                                                                                                                                          |
| `apply_branding`      | `style`, `watermark_config`, `outro_music_url`, `outro_card_url`, `overlay_url`, `title_config`                                                                             |
| `add_title_overlay`   | `title_config`, `titleConfig`                                                                                                                                               |
| `filler_words`        | `filler_words_config`                                                                                                                                                       |
| `smart_zoom`          | `smart_zoom_config`                                                                                                                                                         |
| `add_outro`           | `end_card_option`, `outro_music_option`                                                                                                                                     |
| `add_audiogram`       | `template`, `audiogram_config`                                                                                                                                              |
| `remove_watermark`    | `remove_watermark_config`                                                                                                                                                   |
| `add_brainrot`        | `brainrot_config`                                                                                                                                                           |
| `media_overlay`       | `media_overlay_config`                                                                                                                                                      |
| `remove_curse_words`  | `remove_curse_words_config`                                                                                                                                                 |

## Per-Node Examples

### `find_clips`

Controls the clip discovery step.

```json theme={null}
{
  "nodeConfigs": {
    "find_clips": {
      "min_length": 30,
      "max_length": 90,
      "model_key": "multimodal",
      "prompt": "Find clips with clear explanations, strong takeaways, and minimal setup.",
      "promptAdjustment": "Prioritize customer proof points for this run.",
      "pinnedTimestamps": [{ "start": 120, "end": 165 }],
      "pinnedTimestampsOnly": false,
      "pinnedTimestampMode": "search_within"
    }
  }
}
```

Fields:

| Field                  | Type      | Notes                                                                                                               |
| ---------------------- | --------- | ------------------------------------------------------------------------------------------------------------------- |
| `min_length`           | number    | Minimum target clip length in seconds.                                                                              |
| `max_length`           | number    | Maximum target clip length in seconds.                                                                              |
| `model_key`            | string    | `conversational` or `multimodal`.                                                                                   |
| `prompt`               | string    | Replaces the node's clip-finding prompt for this run.                                                               |
| `promptAdjustment`     | string    | Adds one-run guidance to the saved node prompt.                                                                     |
| `pinnedTimestamps`     | object\[] | Source-video ranges such as `{ "start": 120, "end": 165 }` to include as clips.                                     |
| `pinnedTimestampsOnly` | boolean   | When `true`, skip automatic discovery and return only `pinnedTimestamps` clips. Defaults to `false`.                |
| `pinnedTimestampMode`  | string    | Use `search_within` to discover individual clips inside `pinnedTimestamps`; omit it for guaranteed timestamp clips. |

### `convert_to_vertical`

Controls the Reframe / Convert to Vertical node.

```json theme={null}
{
  "nodeConfigs": {
    "convert_to_vertical": {
      "aspect_ratio": "9:16",
      "style": "style_three",
      "centerVertical": true,
      "zoom": 1,
      "gaussian_blur": false,
      "y_offset": 0.5,
      "split_view": true,
      "force_split_view": true,
      "ignore_content_tiles": false
    }
  }
}
```

Fields:

| Field                  | Type    | Notes                                                                                                                                  |
| ---------------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| `aspect_ratio`         | string  | Usually `9:16` for vertical output.                                                                                                    |
| `style`                | string  | `style_one`, `style_two`, `style_three`, `style_four`, `style_none`, or `adaptive`.                                                    |
| `centerVertical`       | boolean | Enables centered vertical crop mode. `zoom` and `gaussian_blur` only apply when this is `true`.                                        |
| `zoom`                 | number  | Zoom multiplier for centered vertical crop mode. Values below `1` are normalized to `1`. Only applies when `centerVertical` is `true`. |
| `y_offset`             | number  | Vertical offset used by supported styles.                                                                                              |
| `gaussian_blur`        | boolean | Enables blurred background for centered vertical crop mode. Only applies when `centerVertical` is `true`.                              |
| `split_view`           | boolean | Enables split view when reframing.                                                                                                     |
| `force_split_view`     | boolean | Forces split view for adaptive reframing.                                                                                              |
| `ignore_content_tiles` | boolean | Ignores content tiles for adaptive reframing.                                                                                          |

### `add_broll`

Controls B-roll generation and sourcing.

```json theme={null}
{
  "nodeConfigs": {
    "add_broll": {
      "prompt": "Use product screenshots, event footage, and relevant visual metaphors. Avoid generic stock photos.",
      "broll_frequency": "high",
      "allowed_methods": ["google_images", "youtube"],
      "enable_ai_broll": false,
      "use_broll_library": true,
      "library_folder_ids": ["folder-id-from-your-overlap-library"]
    }
  }
}
```

Fields:

| Field                | Type      | Notes                                                |
| -------------------- | --------- | ---------------------------------------------------- |
| `prompt`             | string    | Custom guidance for B-roll selection.                |
| `broll_frequency`    | string    | `low`, `medium`, or `high`.                          |
| `allowed_methods`    | string\[] | Any of `google_images`, `youtube`, `getty`.          |
| `enable_ai_broll`    | boolean   | Enables AI-generated B-roll.                         |
| `use_broll_library`  | boolean   | Uses your uploaded B-roll library.                   |
| `library_folder_ids` | string\[] | Folder IDs to search. Empty array means all folders. |

### `add_subtitles`

Controls subtitle placement and styling.

```json theme={null}
{
  "nodeConfigs": {
    "add_subtitles": {
      "subtitle_config": {
        "maxCharsPerLine": 28,
        "maxLines": 1,
        "wrapWidthPct": 80,
        "subtitleX": 50,
        "subtitleY": 50,
        "speakerStyles": [
          {
            "styleId": "custom",
            "fontColor": "#FFFFFF",
            "fontFamily": "Forma-DJR",
            "fontSize": "42",
            "fontWeight": "900",
            "backgroundColor": "#000000",
            "backgroundOpacity": 0.85,
            "backgroundFillStyle": "block",
            "subtitleX": 50,
            "subtitleY": 50
          }
        ]
      }
    }
  }
}
```

Fields:

| Field                              | Type                | Notes                                                                                                                                                                                                                                                                                 |
| ---------------------------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `subtitle_config`                  | object              | Advanced subtitle configuration from the workflow subtitle editor. Send this as a JSON object, not a string.                                                                                                                                                                          |
| `subtitle_config.speakerStyles`    | object\[] or object | Per-speaker subtitle styles. Prefer an array for API requests: index `0` is speaker 0, index `1` is speaker 1, and so on. An object map with numeric keys, such as `{ "0": { ... } }`, is also accepted.                                                                              |
| `subtitle_config.speakerStyles[0]` | object              | Default style for the first speaker and the fallback style most subtitle renders inherit from. For most integrations, put subtitle styling and positioning fields here. If only `speakerStyles[0]` is defined, subtitles inherit that style unless a later speaker has its own entry. |
| `subtitle_config.speakerStyles[n]` | object              | Optional override for speaker `n`. Use this only when a specific speaker needs different styling from `speakerStyles[0]`.                                                                                                                                                             |
| `subtitle_config.maxCharsPerLine`  | number              | Maximum characters per subtitle line. This can be set at the root because it controls line breaking for the subtitle layer.                                                                                                                                                           |
| `subtitle_config.maxLines`         | number              | Maximum number of subtitle lines to display at once.                                                                                                                                                                                                                                  |
| `subtitle_config.wrapWidthPct`     | number              | Subtitle text wrapping width as a percentage of the video width.                                                                                                                                                                                                                      |
| `subtitle_config.subtitleX`        | number              | Horizontal subtitle position as a percentage of video width, where `50` is centered. Set this in `speakerStyles[0]` for the usual one-style subtitle setup, or at the root when you intentionally need a layer default.                                                               |
| `subtitle_config.subtitleY`        | number              | Vertical subtitle position as a percentage of video height. Set this in `speakerStyles[0]` for the usual one-style subtitle setup, or at the root when you intentionally need a layer default.                                                                                        |
| `subtitle_config.selectedSpeaker`  | number              | Editor selection state. Usually omit this in API overrides.                                                                                                                                                                                                                           |
| `subtitle_config.resolvedStyle`    | object              | Editor-resolved style metadata. Usually omit this in API overrides.                                                                                                                                                                                                                   |

<Tip>
  For most subtitle overrides, set style fields inside `subtitle_config.speakerStyles[0]`. For example, `subtitle_config.speakerStyles[0].subtitleY` sets the default subtitle Y position, and that value is inherited by subtitles when no more specific speaker style is present.
</Tip>

`speakerStyles` array entry fields:

| Field                              | Type             | Notes                                                                 |
| ---------------------------------- | ---------------- | --------------------------------------------------------------------- |
| `styleId`                          | string           | Subtitle preset/style identifier.                                     |
| `name`                             | string           | Display name for the subtitle style.                                  |
| `fontFamily`                       | string           | Font family used for subtitle text.                                   |
| `fontUrl`                          | string           | Optional font file URL used by the renderer.                          |
| `fontSize`                         | string or number | Subtitle font size.                                                   |
| `fontWeight`                       | string           | CSS-style font weight such as `400`, `700`, or `900`.                 |
| `fontColor`                        | string           | Subtitle text color, usually a hex color.                             |
| `isItalic`                         | boolean          | Renders subtitle text in italic.                                      |
| `textCase`                         | string           | Text case transform, such as `none`, `uppercase`, or `lowercase`.     |
| `textAlign`                        | string           | `left`, `center`, or `right`.                                         |
| `textSpacing`                      | string or number | Letter spacing.                                                       |
| `verticalStretch`                  | string or number | Vertical text stretch.                                                |
| `opacity`                          | number           | Overall subtitle opacity, usually between `0` and `1`.                |
| `captionPosition`                  | string           | `top`, `middle`, or `bottom`.                                         |
| `subtitleX`                        | number           | Horizontal subtitle position as a percentage of video width.          |
| `subtitleY`                        | number           | Vertical subtitle position as a percentage of video height.           |
| `maxCharsPerLine`                  | number           | Maximum characters per subtitle line for this speaker style.          |
| `maxLines`                         | number           | Maximum subtitle lines for this speaker style.                        |
| `wrapWidthPct`                     | number           | Wrapping width as a percentage of video width for this speaker style. |
| `backgroundColor`                  | string           | Subtitle background color.                                            |
| `backgroundOpacity`                | number           | Background opacity, usually between `0` and `1`.                      |
| `backgroundFillStyle`              | string           | `wrap`, `block`, or `none`.                                           |
| `backgroundBorderRadius`           | string or number | Subtitle background corner radius.                                    |
| `backgroundPadding`                | string or number | Subtitle background padding.                                          |
| `backgroundPaddingX`               | string           | Horizontal background padding.                                        |
| `backgroundPaddingY`               | string           | Vertical background padding.                                          |
| `outlineColor`                     | string           | Text outline color.                                                   |
| `outlineStyle`                     | string           | Text outline style.                                                   |
| `outlineWidth`                     | string or number | Text outline width.                                                   |
| `shadowEnabled`                    | boolean          | Enables text shadow.                                                  |
| `shadowColor`                      | string           | Text shadow color.                                                    |
| `shadowBlur`                       | string or number | Text shadow blur amount.                                              |
| `shadowOffsetX`                    | string or number | Text shadow horizontal offset.                                        |
| `shadowOffsetY`                    | string or number | Text shadow vertical offset.                                          |
| `shadowIntensity`                  | number           | Shadow strength.                                                      |
| `amplifySpokenWords`               | boolean          | Enables emphasized/current-word styling.                              |
| `amplifiedColor`                   | string           | Color used for amplified spoken words.                                |
| `amplifiedColors`                  | object\[]        | Optional multi-color or gradient amplified-word settings.             |
| `amplifiedOpacity`                 | number           | Opacity for amplified spoken words.                                   |
| `amplifyOpacityTransitionDuration` | number           | Transition duration for amplified-word opacity.                       |
| `highlightWordsColor`              | string           | Color used for highlighted words.                                     |
| `highlightWordsBaseStyle`          | object           | Base style applied to highlighted words.                              |
| `highlightKeywordStyles`           | object           | Per-keyword highlight style overrides.                                |
| `textHighlightPersists`            | boolean          | Keeps highlighted-word styling after the word is spoken.              |
| `currentWordBlock`                 | boolean          | Enables block styling for the current word.                           |
| `currentWordBlockBackgroundColor`  | string           | Current-word block background color.                                  |
| `currentWordBlockBorderRadius`     | string           | Current-word block corner radius.                                     |
| `currentWordBlockOpacity`          | number           | Current-word block opacity.                                           |
| `currentWordBlockPadding`          | string           | Current-word block padding.                                           |
| `randomColors`                     | object           | Random word-color settings.                                           |
| `shinySegmentHighlight`            | boolean          | Enables shiny segment highlighting.                                   |
| `shinyWordHighlight`               | boolean          | Enables shiny word highlighting.                                      |
| `animationStyle`                   | string           | Subtitle animation style.                                             |

### `add_music`

Controls background music.

```json theme={null}
{
  "nodeConfigs": {
    "add_music": {
      "background_music_options": [
        {
          "id": "music-track-id",
          "name": "Selected music track",
          "url": "public-music-file-url",
          "thumbnailUrl": "public-thumbnail-url",
          "duration": 120,
          "volume": 0.35
        }
      ]
    }
  }
}
```

Fields:

| Field                      | Type      | Notes                                                     |
| -------------------------- | --------- | --------------------------------------------------------- |
| `background_music_option`  | object    | Legacy single-song option.                                |
| `background_music_options` | object\[] | Multiple music options. The workflow can select per clip. |

Music option fields:

| Field          | Type   | Notes                                           |
| -------------- | ------ | ----------------------------------------------- |
| `id`           | string | Track ID.                                       |
| `name`         | string | Display name.                                   |
| `url`          | string | Public audio URL.                               |
| `thumbnailUrl` | string | Optional thumbnail URL.                         |
| `duration`     | number | Track duration in seconds.                      |
| `volume`       | number | Volume multiplier, usually between `0` and `1`. |

### `add_watermark`

Controls watermark rendering config.

```json theme={null}
{
  "nodeConfigs": {
    "add_watermark": {
      "watermark_config": {
        "enabled": true,
        "url": "public-watermark-image-url",
        "position": 3,
        "size": 18,
        "padding": 24,
        "opacity": 0.9
      }
    }
  }
}
```

Fields:

| Field                       | Type    | Notes                                 |
| --------------------------- | ------- | ------------------------------------- |
| `watermark_config.enabled`  | boolean | Enables or disables the watermark.    |
| `watermark_config.url`      | string  | Public image URL.                     |
| `watermark_config.position` | number  | Position value used by the renderer.  |
| `watermark_config.size`     | number  | Watermark size.                       |
| `watermark_config.padding`  | number  | Edge padding.                         |
| `watermark_config.opacity`  | number  | Opacity, usually between `0` and `1`. |

### `apply_branding`

Controls the Apply Branding node.

```json theme={null}
{
  "nodeConfigs": {
    "apply_branding": {
      "style": "default",
      "watermark_config": {
        "enabled": true,
        "url": "public-watermark-image-url"
      },
      "outro_music_url": "public-outro-music-url",
      "outro_card_url": "public-outro-card-image-url",
      "overlay_url": "public-overlay-media-url",
      "title_config": {
        "prompt": "Write a short hook for this clip.",
        "fontColor": "#FFFFFF",
        "backgroundColor": "#000000"
      }
    }
  }
}
```

Fields:

| Field              | Type   | Notes                          |
| ------------------ | ------ | ------------------------------ |
| `style`            | string | Branding style name.           |
| `watermark_config` | object | Watermark config to apply.     |
| `outro_music_url`  | string | Public outro music URL.        |
| `outro_card_url`   | string | Public outro card image URL.   |
| `overlay_url`      | string | Public overlay media URL.      |
| `title_config`     | object | Title overlay config to apply. |

### `add_title_overlay`

Controls the Title Overlay node.

```json theme={null}
{
  "nodeConfigs": {
    "add_title_overlay": {
      "title_config": {
        "prompt": "Create a concise title that teases the main insight.",
        "fontFamily": "Roboto",
        "fontWeight": "500",
        "fontColor": "#000000",
        "backgroundColor": "#FFFFFF",
        "backgroundOpacity": 1,
        "backgroundStyle": "wrap",
        "textAlign": "center",
        "yPosition": 0.23,
        "duration": 4,
        "allCaps": false
      }
    }
  }
}
```

Common `title_config` fields:

| Field                    | Type                                                                                                                                                                                                               |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `prompt`                 | string                                                                                                                                                                                                             |
| `text`                   | string (applied only when `generateTitle` is `false`; otherwise replaced by the AI-generated title)                                                                                                                |
| `generateTitle`          | boolean (default `true`; set `false` to use `text` verbatim and skip AI title generation)                                                                                                                          |
| `fontFamily`             | string                                                                                                                                                                                                             |
| `fontWeight`             | string                                                                                                                                                                                                             |
| `fontColor`              | string                                                                                                                                                                                                             |
| `fontSize`               | number                                                                                                                                                                                                             |
| `lineHeight`             | number                                                                                                                                                                                                             |
| `characterSpacing`       | number                                                                                                                                                                                                             |
| `padding`                | number                                                                                                                                                                                                             |
| `verticalPadding`        | number                                                                                                                                                                                                             |
| `borderRadius`           | number                                                                                                                                                                                                             |
| `backgroundColor`        | string                                                                                                                                                                                                             |
| `backgroundOpacity`      | number                                                                                                                                                                                                             |
| `backgroundStyle`        | string                                                                                                                                                                                                             |
| `boxShadow`              | string                                                                                                                                                                                                             |
| `textShadow`             | string                                                                                                                                                                                                             |
| `yPosition`              | number                                                                                                                                                                                                             |
| `positionDynamically`    | boolean (default `false`; anchors the title to a detected split-view seam)                                                                                                                                         |
| `avoidFaces`             | boolean (default `false`; moves the title away from detected face and subject regions)                                                                                                                             |
| `duration`               | number                                                                                                                                                                                                             |
| `allCaps`                | boolean                                                                                                                                                                                                            |
| `textAlign`              | string                                                                                                                                                                                                             |
| `fontScale`              | number                                                                                                                                                                                                             |
| `lineMargin`             | number                                                                                                                                                                                                             |
| `titlePresetId`          | string — apply a styled title template (see [Styled title templates](#styled-title-templates) below). When set, the template's design drives the look and the flat typography/background fields above are ignored. |
| `titlePaletteId`         | string — color palette for templates that define one                                                                                                                                                               |
| `presetOverrides`        | object — per-template style/position customizations layered on the template (see below)                                                                                                                            |
| `presetTextOverrides`    | object — fixed text for a template's non-primary lines, keyed by element id (e.g. `text-secondary`). Fixed text overrides generation for that block.                                                               |
| `presetGenerationBlocks` | array — ordered semantic generation blocks carried by a preset. Each entry contains `elementId`, `kind` (`name` or `title`), and optional `primary`.                                                               |

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`:

```json theme={null}
{
  "nodeConfigs": {
    "add_title_overlay": {
      "title_config": { "text": "Our Exact Title", "generateTitle": false }
    }
  }
}
```

The same title is applied to every clip in the run. For different per-clip titles, edit each clip after generation with [Update Clip](/api-reference/update-clip).

#### Styled title templates

Set `titlePresetId` 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 AI-generated title fills the template's primary line, and the template's design (fonts, colors, backplate, animation) is preserved.

Available `titlePresetId` values:

| `titlePresetId`       | Description                                                   |
| --------------------- | ------------------------------------------------------------- |
| `cyan-block-title`    | Bold headline on a solid color block (palettes available)     |
| `cyan-divider-title`  | Headline with a colored left divider bar (palettes available) |
| `context-caption`     | Multi-line highlighted caption stack                          |
| `cal-sans-pill-title` | Rounded black title card                                      |
| `tiktok-3d`           | Offset 3D-border box, TikTok style (palettes available)       |
| `instagram-wrap`      | Rounded per-line wrapped text                                 |
| `daily-vlog-title`    | Handwritten title + subtitle (two lines)                      |
| `vertical-video-hook` | Featured person name + per-clip editorial hook (two lines)    |

Optional customizations layered on the chosen template:

* `titlePaletteId` — a palette id for templates that define palettes. `cyan-block-title` and `cyan-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 include `fontColor`, `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 are `0`–`1` fractions 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 is always replaced by the AI-generated title (or your `text` when `generateTitle` is `false`).

Example — a Breaking News headline template, recolored and nudged higher:

```json theme={null}
{
  "nodeConfigs": {
    "add_title_overlay": {
      "title_config": {
        "prompt": "Create a concise, punchy breaking-news headline.",
        "titlePresetId": "cyan-block-title",
        "titlePaletteId": "breaking-news",
        "presetOverrides": {
          "fontColor": "#FFFFFF",
          "textTransform": "uppercase",
          "yPosition": 0.18
        }
      }
    }
  }
}
```

<Info>
  When `titlePresetId` is set, the flat typography/background fields (`fontFamily`, `backgroundColor`, etc.) are ignored — adjust the template with `presetOverrides` instead.
</Info>

### `filler_words`

Controls filler word, stutter, and silence cleanup.

```json theme={null}
{
  "nodeConfigs": {
    "filler_words": {
      "filler_words_config": {
        "enabled": true,
        "stutteredWordsEnabled": true,
        "silencesEnabled": false,
        "minSilenceDuration": 1,
        "words": ["um", "uh", "like", "you know"]
      }
    }
  }
}
```

Fields:

| Field                   | Type      | Notes                                |
| ----------------------- | --------- | ------------------------------------ |
| `enabled`               | boolean   | Enables filler word removal.         |
| `fromVideo`             | boolean   | Detects filler words from the video. |
| `minRepetitions`        | number    | Repetition threshold.                |
| `stutteredFromVideo`    | boolean   | Detects stuttered words from video.  |
| `stutteredWordsEnabled` | boolean   | Enables stuttered word removal.      |
| `silencesEnabled`       | boolean   | Enables silence removal.             |
| `minSilenceDuration`    | number    | Minimum silence duration to remove.  |
| `words`                 | string\[] | Words or phrases to remove.          |

### `smart_zoom`

Controls Smart Zoom.

```json theme={null}
{
  "nodeConfigs": {
    "smart_zoom": {
      "smart_zoom_config": {
        "frequency": "MEDIUM",
        "transition_length": 0.1,
        "additional_instructions": "Prefer zooms when the speaker changes topics."
      }
    }
  }
}
```

Fields:

| Field                     | Type   | Notes                       |
| ------------------------- | ------ | --------------------------- |
| `frequency`               | string | Smart zoom frequency.       |
| `transition_length`       | number | Transition length.          |
| `additional_instructions` | string | Additional prompt guidance. |

### `add_outro`

Controls end card and outro music.

```json theme={null}
{
  "nodeConfigs": {
    "add_outro": {
      "end_card_option": {
        "url": "public-end-card-image-url",
        "duration": 5,
        "secondsBeforeEnd": 2
      },
      "outro_music_option": {
        "url": "public-outro-music-url",
        "name": "Outro music",
        "secondStart": 0,
        "duration": 5,
        "secondsBeforeEnd": 2,
        "volume": 0.25
      }
    }
  }
}
```

Fields:

| Field                                 | Type   | Notes                                          |
| ------------------------------------- | ------ | ---------------------------------------------- |
| `end_card_option.url`                 | string | Public end card image URL.                     |
| `end_card_option.duration`            | number | End card duration in seconds.                  |
| `end_card_option.secondsBeforeEnd`    | number | When the end card starts relative to clip end. |
| `outro_music_option.url`              | string | Public audio URL.                              |
| `outro_music_option.name`             | string | Display name.                                  |
| `outro_music_option.secondStart`      | number | Audio start offset in seconds.                 |
| `outro_music_option.duration`         | number | Audio duration in seconds.                     |
| `outro_music_option.secondsBeforeEnd` | number | When outro music starts relative to clip end.  |
| `outro_music_option.volume`           | number | Volume multiplier.                             |

### `add_audiogram`

Controls audiogram display.

```json theme={null}
{
  "nodeConfigs": {
    "add_audiogram": {
      "template": "farnam",
      "audiogram_config": {
        "frontend": true,
        "source": "custom",
        "orientation": "vertical",
        "audiogramY": 50,
        "audiogramColor": "#000000",
        "backgroundType": "color",
        "backgroundColor": "#000000",
        "backgroundImageUrl": "",
        "textColor": "#FFFFFF",
        "centerText": true,
        "blackBarEnabled": true,
        "subtextEnabled": false,
        "fontWeight": "700"
      }
    }
  }
}
```

Fields:

| Field                                 | Type    | Notes                                                |
| ------------------------------------- | ------- | ---------------------------------------------------- |
| `template`                            | string  | Audiogram template/source.                           |
| `audiogram_config.frontend`           | boolean | Keeps audiogram rendering in frontend metadata mode. |
| `audiogram_config.source`             | string  | Template source.                                     |
| `audiogram_config.orientation`        | string  | `horizontal` or `vertical`.                          |
| `audiogram_config.audiogramY`         | number  | Audiogram vertical position.                         |
| `audiogram_config.audiogramColor`     | string  | Waveform color.                                      |
| `audiogram_config.backgroundType`     | string  | Background mode.                                     |
| `audiogram_config.backgroundColor`    | string  | Background color.                                    |
| `audiogram_config.backgroundImageUrl` | string  | Optional background image URL.                       |
| `audiogram_config.textColor`          | string  | Text color.                                          |
| `audiogram_config.centerText`         | boolean | Centers title text.                                  |
| `audiogram_config.blackBarEnabled`    | boolean | Enables black bar style.                             |
| `audiogram_config.subtextEnabled`     | boolean | Enables subtext.                                     |
| `audiogram_config.fontWeight`         | string  | Font weight.                                         |

### `remove_watermark`

Controls watermark removal.

```json theme={null}
{
  "nodeConfigs": {
    "remove_watermark": {
      "remove_watermark_config": {
        "enabled": true
      }
    }
  }
}
```

Fields:

| Field     | Type    | Notes                                  |
| --------- | ------- | -------------------------------------- |
| `enabled` | boolean | Enables or disables watermark removal. |

### `add_brainrot`

Controls Brainrot split-screen style.

```json theme={null}
{
  "nodeConfigs": {
    "add_brainrot": {
      "brainrot_config": {
        "category": "minecraft",
        "cropPosition": "bottom",
        "verticalY": 50,
        "videoUrl": "public-background-video-url"
      }
    }
  }
}
```

Fields:

| Field            | Type   | Notes                                  |
| ---------------- | ------ | -------------------------------------- |
| `category`       | string | Brainrot category.                     |
| `cropPosition`   | string | Background crop placement.             |
| `randomVideoUrl` | string | Optional randomly selected source URL. |
| `verticalY`      | number | Vertical placement.                    |
| `videoUrl`       | string | Public background video URL.           |

### `media_overlay`

Controls media overlays.

```json theme={null}
{
  "nodeConfigs": {
    "media_overlay": {
      "media_overlay_config": {
        "mediaUrl": "public-overlay-media-url",
        "opacity": 1,
        "scale": 0.3,
        "xPosition": 50,
        "yPosition": 50,
        "startOffset": 0,
        "endOffset": 0,
        "animationDuration": 1,
        "introTransitionId": "none",
        "outroTransitionId": "fade"
      }
    }
  }
}
```

Fields:

| Field               | Type   | Notes                                                     |
| ------------------- | ------ | --------------------------------------------------------- |
| `mediaUrl`          | string | Public image or video URL.                                |
| `opacity`           | number | Overlay opacity.                                          |
| `scale`             | number | Overlay scale.                                            |
| `xPosition`         | number | Horizontal position.                                      |
| `yPosition`         | number | Vertical position.                                        |
| `startOffset`       | number | Seconds after the clip starts before the overlay appears. |
| `endOffset`         | number | Seconds before the clip ends when the overlay disappears. |
| `animationDuration` | number | Intro/outro transition duration in seconds.               |
| `introTransitionId` | string | Optional intro transition preset ID.                      |
| `outroTransitionId` | string | Optional outro transition preset ID.                      |

### `remove_curse_words`

Controls curse word handling.

```json theme={null}
{
  "nodeConfigs": {
    "remove_curse_words": {
      "remove_curse_words_config": {
        "enabled": true,
        "mode": "silence",
        "words": ["damn", "hell"]
      }
    }
  }
}
```

Fields:

| Field     | Type      | Notes                              |
| --------- | --------- | ---------------------------------- |
| `enabled` | boolean   | Enables curse word handling.       |
| `mode`    | string    | `silence`, `beep`, or `remove`.    |
| `words`   | string\[] | Words to silence, beep, or remove. |

## Legacy Flat Fields

These flat trigger fields still work and are converted into node configs internally:

| Flat field             | Equivalent node override                                                               |
| ---------------------- | -------------------------------------------------------------------------------------- |
| `minLengthTarget`      | `find_clips.min_length`                                                                |
| `maxLengthTarget`      | `find_clips.max_length`                                                                |
| `promptAdjustment`     | `find_clips.promptAdjustment`                                                          |
| `pinnedTimestamps`     | `find_clips.pinnedTimestamps`                                                          |
| `pinnedTimestampsOnly` | `find_clips.pinnedTimestampsOnly`                                                      |
| `pinnedTimestampMode`  | `find_clips.pinnedTimestampMode`                                                       |
| `musicUrl`             | `add_music.background_music_option.url`                                                |
| `broll: true`          | `add_broll.enabled`                                                                    |
| `broll: { ... }`       | Merged into `add_broll`                                                                |
| `removeFillerWords`    | `filler_words.filler_words_config.enabled`                                             |
| `removeStutteredWords` | `filler_words.filler_words_config.stutteredWordsEnabled`                               |
| `removeSilences`       | `filler_words.filler_words_config.silencesEnabled`                                     |
| `subtitleConfig`       | `add_subtitles.subtitle_config` and `add_subtitles.subtitle_config.speakerStyles["0"]` |
| `watermarkUrl`         | `add_watermark.watermark_config.url`                                                   |
| `titleConfig`          | `add_title_overlay.title_config`                                                       |
| `outroImageUrl`        | `add_outro.end_card_option.url`                                                        |
| `outroMusicUrl`        | `add_music.outro_music_option.url`                                                     |

<Card title="Trigger Template" icon="rocket-launch" color="#ff2700" href="/api-reference/trigger">
  Use node config overrides when triggering a workflow template
</Card>
