Demand Gen video crop and trim tool vs an API crop and trim

Demand Gen's console tool crops to 16:9, 1:1 or 9:16 and trims 5 to 300 seconds. The same edit as two Sume calls: a video-filter crop, then video-trim.

4 min readSume
All posts

Google's Demand Gen tool crops a video to horizontal (16:9), square (1:1) or vertical (9:16) by moving a crop area, and trims it to between 5 and 300 seconds with sliders, inside Google Ads. To do the same outside the console, Sume takes two calls: a crop op on video filter, then video trim.

Google facts are from its Help page; Sume facts from the two docs pages. Read 2026-09-30. Ad specs themselves are in Demand Gen video ad specs.

What does the console tool do?

You open the pencil icon on an uploaded video in the ad builder, pick an aspect ratio, move the crop area, drag the trim sliders, preview, and choose Save as new video. Uploaded videos must be at least 5 seconds long.

How does each step map to Sume?

Console step against Sume field, read 2026-09-30.
ConsoleSume
Pick an aspect ratio, move the crop areaops[] with op: "crop": x, y, width, height as fractions of the frame
Trim slidersstart plus one of end or duration on POST /v1/video-trim
Save as new videoA new artf_ MP4; the source is untouched
Length range 5 to 300 sCrop source at most 300 s; trim duration 0.2 to 900 s

How do I write the crop?

Crop bounds are fractions, not pixels. width and height run from 0.05 to 1, and x+width and y+height must not exceed 1. For a 16:9 source cropped to 9:16, take the full height and a width of 9/16 divided by 16/9, about 0.316, centered at x of 0.342. The compiler even-rounds the result for yuv420p, so the pixel size can differ by one from your arithmetic.

curl -X POST https://api.sume.com/v1/video-filter \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: demand-gen-crop-001" \
  -d '{
    "video_url": "https://media.sume.com/artifacts/artf_demo/talk.mp4",
    "ops": [{ "op": "crop", "x": 0.342, "y": 0, "width": 0.316, "height": 1 }]
  }'

Which order should I run them in?

Trim first if the source is over 300 seconds, because the filter's source cap is 300 s while trim accepts sources up to 1800 s. Feed the new video_url from the first job's result into the second call, and poll GET /v1/jobs/:id/result for each. Neither call previews; check the output before uploading it to Google Ads.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume