Remove filler words from a video by API: cut at word timestamps
Descript's API lists Remove Filler Words as an Underlord edit. the Sume docs list no such op; here is how to cut um and uh yourself from words[] and a Timeline.

The Sume docs list no filler-word operation. To remove "um" and "uh" you transcribe with POST /v1/video-inspect, find the filler entries in words[] yourself, and render the stretches between them as video[] slots of a Timeline. The cut list is your code's job.
Descript's API page names "Remove Filler Words" among the Underlord edits that "can use AI credits". Sume's version is manual and built from the Video inspect and Timeline 1.0 docs, read 2026-09-30.
How do I find the fillers?
Run video inspect with transcribe: true (and frames: false). The transcript has words[]. Your code scans them for the tokens you call filler and records each one's time range. The docs show no filler labels, so which words count as filler is yours to decide. Transcription costs $0.01 per audio minute.
How do I cut them out?
Invert the list: the clips between fillers are what you keep. Each becomes one video[] slot with source_in at the clip's in-point and duration at its length; start is where it lands on the output, and video[0].start must be 0. The audio spine must be cut the same way: extract the source audio with POST /v1/audio-detach, then list the same ranges in audio.parts[] (each part takes url, source_in and duration; at most 20 parts, joined gaplessly). Note the cap of 20 parts when you count your kept ranges.
Can I smooth the cuts?
Video slots after the first can take a transition, for example a fade of 0.25 s; more than 8 adjacent fades is refused with too_many_chained_transitions. Preflight with POST /v1/timeline-1.0/plan, which is unbilled and returns segment_count and estimated_cost_usd_micros. A Timeline may have up to 200 slots and 1800 s of output.
| Step | Sume route | Who decides |
|---|---|---|
| Word list with timing | video-inspect transcribe | Sume returns it |
| Which words are filler | Your code | You |
| Assemble kept clips | timeline-1.0 render | You send the slots |
| Preview length and cost | timeline-1.0 plan | Sume, unbilled |
Sources
Related posts
More in Developers
- OpenAI response_format json_schema on a Sume scheduled run
Sume accepts an OpenAI-shaped response_format as an alias for output_schema on schedule runs. Sending both returns 400, and the schema must be strict.
- Responses steering after a video job started: what Sume does
response.steer does not cancel started tools. A Sume video job past its start runs to completion; jobs_cancel returns 409 job_generation_already_started.
- Change caption style without transcribing again: source_caption_id
Pass source_caption_id instead of video_url to re-burn a clip under a new style. Sume reuses the stored word timings, so speech-to-text runs only once.
- Retool Workflow webhook needs X-Workflow-Api-Key: use a relay
Retool Workflows authenticate webhooks with an X-Workflow-Api-Key header or query parameter. Sume documents no custom delivery headers: relay after verifying.
Written by Sume