---
title: "POST /podcast-bot/podcasts/{podcastKey}/episodes/{episodeKey}/autoClips"
method: POST
path: "/podcast-bot/podcasts/{podcastKey}/episodes/{episodeKey}/autoClips"
tags: ["Podcast Bot"]
---

# POST /podcast-bot/podcasts/{podcastKey}/episodes/{episodeKey}/autoClips

`POST /podcast-bot/podcasts/{podcastKey}/episodes/{episodeKey}/autoClips`

Generate clips (AUTO_CLIP job) for an episode: highlights, chapters or broadcast segments, optionally rendered as video. Uses the given auto-clip config, or the stored one if the body is omitted.

## Path parameters

- `podcastKey` string, required
- `episodeKey` string, required

## Request body

- PBAutoClipConfig — Podcast Auto-Clip Configuration model. A config without `clip_groups` is run as a single unnamed group whose count comes from `max_clips`; with `clip_groups` each group is cut separately and the flat fields act as its fallbacks.
  - `video` PBVideoConfig — Video rendering config (CREATE_VIDEO renderer) — used by CREATE_VIDEO and AUTO_CLIP jobs
    - `style` 'waveformBars' | 'equalizer' | 'radialPulse' | 'hostSplit' | 'hostCentered' | 'podcastCardDotted' — Template design
    - `font` 'inter' | 'oswald' | 'bebasNeue' | 'montserrat' | 'anton' | 'poppins' — Font family
    - `showEqualizer` boolean — Show the audio-reactive visualizer
    - `fps` integer — Frames per second; 24/30 typical
    - `colors` Colors
      - `accent` string — Accent color (hex). Default "#D0021B"
      - `background` string — Background color (hex). Default "#F7F7F8"
      - `text` string — Text / caption color (hex). Default "#111111"
      - `barGradientFrom` string — Bar gradient start color (hex). Default "#D0021B"
      - `barGradientTo` string — Bar gradient end color (hex). Default "#8A0000"
    - `text` Text
      - `episodeLabel` string — Episode label, e.g. "EPISODE 42"
      - `title` string — Main title
      - `subtitle` string — Subtitle, e.g. guest name
      - `caption` string — Static caption line; shown when captions.synced == false. Ignored in synced mode.
    - `assets` Assets
      - `primaryLogo` string — Square podcast artwork
      - `secondaryLogo` string — Wordmark / corner logo
      - `hostPhoto` string — Host photo, used by hostSplit / hostCentered
    - `captions` Captions
      - `show` boolean — Master on/off for captions
      - `synced` boolean — true = word-timed karaoke captions synced to audio; false = show the static text.caption line the whole time. Only takes effect when show == true.
      - `embedded_srt_file` boolean — true = burn captions into the video frames; false = don't burn (SRT sidecar still uploaded). Applies to synced captions when show == true.
    - `aspect_ratios` string[] — One output MP4 per ratio
  - `generate_chapters` boolean — Detect YouTube-style chapter boundaries via LLM and upload chapters.json
  - `clip_generation` string — Clip generation mode. "highlights" = top viral/engaging moments; "chapters" = one clip per chapter boundary; "segments" = named broadcast blocks (Weather, Sports, Traffic, etc.); "none" = skip clip generation, produce chapters only. Every mode but "none" produces an audio clip, a transcript and, when `video` is set, a video per clip. Fallback value for groups that omit it.
  - `max_clips` integer — Max number of clips to produce. Used as the count of the single group a config without `clip_groups` is run as; ignored when `clip_groups` is set.
  - `min_clip_duration` number, double — Minimum clip length in seconds. Clips shorter than this are padded to center. Applies to highlights mode only. Fallback for groups that omit it.
  - `max_clip_duration` number, double — Maximum clip length in seconds. Clips longer than this are trimmed from the end. Fallback for groups that omit it.
  - `padding_seconds` number, double — Extra seconds added before/after each clip
  - `segment_types` string[] — List of broadcast segment names to look for (segments mode only). If empty, LLM infers from content. Fallback value for groups.
  - `clip_groups` PbClip[] — List of clip group configs, each cut separately with its own mode, count and duration window. When set, `max_clips` is ignored and the other flat fields are only fallbacks. One group per mode is the way to tag each clip with the mode that produced it.
    - `label` string — Filename prefix for clips in this group, also reported back as the clip's `group` (e.g. `"long"`, `"short"`, or the mode name). Defaults to `"g1"`, `"g2"`, ...
    - `video` PBVideoConfig — Video rendering config (CREATE_VIDEO renderer) — used by CREATE_VIDEO and AUTO_CLIP jobs
      - `style` 'waveformBars' | 'equalizer' | 'radialPulse' | 'hostSplit' | 'hostCentered' | 'podcastCardDotted' — Template design
      - `font` 'inter' | 'oswald' | 'bebasNeue' | 'montserrat' | 'anton' | 'poppins' — Font family
      - `showEqualizer` boolean — Show the audio-reactive visualizer
      - `fps` integer — Frames per second; 24/30 typical
      - `colors` Colors
        - `accent` string — Accent color (hex). Default "#D0021B"
        - `background` string — Background color (hex). Default "#F7F7F8"
        - `text` string — Text / caption color (hex). Default "#111111"
        - `barGradientFrom` string — Bar gradient start color (hex). Default "#D0021B"
        - `barGradientTo` string — Bar gradient end color (hex). Default "#8A0000"
      - `text` Text
        - `episodeLabel` string — Episode label, e.g. "EPISODE 42"
        - `title` string — Main title
        - `subtitle` string — Subtitle, e.g. guest name
        - `caption` string — Static caption line; shown when captions.synced == false. Ignored in synced mode.
      - `assets` Assets
        - `primaryLogo` string — Square podcast artwork
        - `secondaryLogo` string — Wordmark / corner logo
        - `hostPhoto` string — Host photo, used by hostSplit / hostCentered
      - `captions` Captions
        - `show` boolean — Master on/off for captions
        - `synced` boolean — true = word-timed karaoke captions synced to audio; false = show the static text.caption line the whole time. Only takes effect when show == true.
        - `embedded_srt_file` boolean — true = burn captions into the video frames; false = don't burn (SRT sidecar still uploaded). Applies to synced captions when show == true.
      - `aspect_ratios` string[] — One output MP4 per ratio
    - `clip_generation` string — Clip generation mode for this group. If omitted, falls back to top-level `clip_generation`. "highlights" = top viral/engaging moments; "chapters" = one clip per chapter boundary; "segments" = named broadcast blocks (Weather, Sports, Traffic, etc.)
    - `count` integer — Number of clips to generate for this group. Overrides top-level max_clips
    - `min_clip_duration` number, double — Minimum clip length in seconds for this group. If omitted, falls back to top-level `min_clip_duration`.
    - `max_clip_duration` number, double — Maximum clip length in seconds for this group. If omitted, falls back to top-level `max_clip_duration`.
    - `segment_types` string[] — Segment type hints for this group (segments mode only)

## Response `200`

OK

## Changes

- **2026-09-23** `8eb322809483` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/zeno/apis/aggregators-api-service/changes/podcast-bot/podcasts/:podcastKey/episodes/:episodeKey/autoClips/post.md)

---

[API](https://skmtc.dev/zeno/apis/aggregators-api-service.md) · [All operations](https://skmtc.dev/zeno/apis/aggregators-api-service/llms.txt) · [OpenAPI document](https://skmtc.dev/zeno/apis/aggregators-api-service/revisions/e6ef499b4111?raw)
