YouTube in-feed ads have no max length, but video-trim caps at 1,800 s
Google lists no max length for in-feed video ads, but Sume's video-trim takes a source of 1,800 seconds at most and outputs 900. Plan long cuts around that.

An open-ended platform limit is not an open-ended tool. Google's video specs page lists no maximum length for in-feed video ads, and none for masthead ads either (read 2026-10-07). Sume's video-trim accepts a source of at most 1,800 seconds and returns at most 900, so a 40-minute recording cannot enter it at all.
Know the caps before you promise a long in-feed cut.
Platform side versus Sume side
From Google Ads video ad specs and the Sume docs for video trim, Timeline 1.0, and audio detach.
| Where | Limit |
|---|---|
| Google in-feed video ads | no max length |
| Google masthead ads | no max length; over 10 s recommended |
| Sume video-trim source | 1,800 s (else source_duration_exceeded) |
| Sume video-trim output | 900 s (0.2 s minimum) |
| Sume Timeline 1.0 render | audio.duration_seconds 1-1,800 s; 1-200 video slots |
| Sume audio detach | source 1,800 s; output 900 s |
A guard before you submit
The trim route refuses an out-of-range job, but you can fail faster locally. This function mirrors the documented source and output caps and the 0.2-second minimum, and reports the first problem it finds.
def check_trim(source_s, start, duration):
if source_s > 1800:
return "source_duration_exceeded: over 1800 s"
if duration < 0.2 or duration > 900:
return "duration must be 0.2-900 s"
if start < 0 or start >= source_s:
return "start outside the source"
return "ok"
for case in ((2400, 0, 600), (1700, 100, 900), (1700, 100, 901)):
print(case, check_trim(*case))What to do with a longer source
If the recording is over 1,800 seconds, split it before it reaches Sume, with whatever tool made the recording, and import the parts as separate clips. Then trim each part and join the keepers in Timeline 1.0, whose slots accept 0.2-second minimums and whose output can reach 1,800 seconds.
Remember the import step: every Sume URL must already be a media.sume.com artifact, per Media inputs. No off-host URL is fetched.
Is long better here?
The page gives no recommended length for in-feed, so I will not argue for one. A longer ad also means a larger file; check the probe's size_bytes against whatever your upload step allows.
Practical ceilings in a real workflow
Most ad masters are well under 10 minutes, so the 1,800-second source cap matters only for raw recordings: webinars, live streams, events. For those, the first job is selecting the minute or two that works as an ad, which is an editorial step before any API call.
If you do hit a cap, the error is stable and named, such as source_duration_exceeded, so a script can catch it and tell the operator what to do, rather than retrying a job that can never succeed.
Sources
Related posts
More in Media tools
- How to assemble a long-form video with the Timeline 1.0 API
Timeline 1.0 renders one audio spine plus 1 to 200 ordered video slots into one MP4. Every URL must be Sume-hosted; the plan preflight is unbilled.
- How to burn captions onto a video with the Sume API
Send a public HTTPS video URL to POST /v1/video-captions and get a job-backed captioned video, timed by speech-to-text or by text you supply.
- How to extract frames from a video with the Sume API
POST /v1/video-frames returns stills at the times you name from one Sume-hosted clip, as durable images at source size. The call is unbilled.
- How to use Sume's Timeline compose and Timeline audio APIs
Timeline compose puts one still and one video in the same frame as a new MP4. Timeline audio joins or splits Sume-hosted audio into reusable files.
Written by Sume