Mobile game ad cutdowns: one master to 6, 15, 30 and 60 seconds
Mintegral recommends 6/15/30/60 s, Unity and Axon cap at 60 s, Liftoff at 180 s. Cut one portrait master to each length with Sume's trim API for $0.02 a job.

Four app-install networks publish their video limits, and one master can serve all four if you cut it to length. Mintegral recommends 6, 15, 30 and 60 seconds, Unity allows 60 or less, AppLovin Axon allows up to 60, and Liftoff lists 180 for portrait. Sume's video trim does the cutting.
The limits side by side
A 60 second portrait cut is inside every one of these networks, and a 30 or 15 second cut is too.
| Network | Length on its page | Portrait size |
|---|---|---|
| Mintegral | 6, 15, 30 or 60 recommended, up to 120 | 1080x1920 |
| Unity | 60 seconds or less | 9:16 |
| AppLovin Axon | Up to 60 seconds, unskippable | 9:16, minimum 270x480 |
| Liftoff | 180 seconds maximum | 1080x1920 |
The cutdown loop
Each trim job is its own call, with its own idempotency key, so use a key per length. The default precision is a frame-accurate re-encode, so each result is a new MP4 and the master is untouched. Four cuts cost $0.08 at the docs' rate.
The cut starts where you say. A 6 second version needs its own start, usually the strongest beat, so pass a different start per length instead of always 0.
import os
import requests
key = os.environ["SUME_API_KEY"]
cuts = {6: 12.0, 15: 8.0, 30: 0.0, 60: 0.0}
for seconds, start in cuts.items():
resp = requests.post(
"https://api.sume.com/v1/video-trim",
headers={"Authorization": f"Bearer {key}", "Idempotency-Key": f"game-cut-{seconds}"},
json={
"video_url": "https://media.sume.com/artifacts/artf_demo/master.mp4",
"start": start,
"duration": seconds,
"mode": "sync",
},
timeout=60,
)
resp.raise_for_status()
print(seconds, resp.json())
Limits
If the master is shorter than start plus duration, the docs say the end clamps and the result warns trim_clamped_to_source, so a 60 second request on a 45 second master returns 45. Check duration_seconds.
None of these pages publishes a performance claim for a given length beyond Mintegral's remark that 60 seconds or under generally performs best. Treat the rest as test cells, not rules.
Sources
Related posts
More in Use cases
- Move an object in a photo with AI: erase, then place with two masks
No Sume image model has a move operation. Move an object by erasing it with one mask and placing it with a second, using GPT Image 2.5 and Python.
- Movie and TV clip Shorts: what YouTube's help calls original
Unedited movie or TV clips are ineligible on Shorts. What YouTube's pages allow instead, and how to cut trailer-style Shorts from your own film or series.
- Music bed longer than your Short: YouTube Create caps it, Sume cuts it
YouTube Create says audio cannot exceed the video's length. A Sume Timeline render ends at audio.duration_seconds, with a soundtrack fade up to 10 s.
- Music for an avatar video: pass the preview still as image_url
Approve an avatar preview, then send its preview_image_url to the Music Router as image_url so the track matches the frame. Steps, limits and the $0.125 cost.
Written by Sume