Instagram Stories API video: 60 seconds max, trim with Sume
Meta's reference lists Stories video at 3 to 60 seconds, 100MB and 23-60 FPS. Sume video-trim writes a range at 24, 25, 30 or 60 fps to fit.

Cut the clip to 60 seconds or less with POST /v1/video-trim (duration up to 60) and, if you set output.fps, use 24, 25, 30 or 60. Meta's reference lists Stories video as "60 seconds maximum, 3 seconds minimum" and "100MB maximum", at "23-60 FPS".
What does Meta list for Stories?
The values below are quoted from Meta's IG User media reference. The same page says the Stories aspect ratio must be between 0.1:1 and 10:1 and recommends 9:16, and lists the video codec as HEVC or H264, progressive scan, closed GOP and 4:2:0 chroma subsampling.
| Item | Meta lists | Sume control |
|---|---|---|
| Duration | 3 to 60 seconds | video-trim duration 0.2 to 900 s |
| File size | 100MB maximum | No size stated |
| Frame rate | 23-60 FPS | output.fps 24, 25, 30 or 60 |
| Aspect ratio | 0.1:1 to 10:1, 9:16 recommended | output width and height 256 to 2160 |
How do I cut to 60 seconds and set the shape?
Add an output object with width, height and fps to conform the clip on the way out. Width and height must be 256 to 2160, fps must be 24, 25, 30 or 60, and output works only with precision: "exact", the default. A 1080 by 1920 output is 9:16.
curl -X POST https://api.sume.com/v1/video-trim \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: stories-cut-001" \
-d '{
"video_url": "https://media.sume.com/artifacts/artf_demo/source.mp4",
"start": 0,
"duration": 60,
"output": { "width": 1080, "height": 1920, "fps": 30 }
}'What about the 100MB limit?
Sume's docs state no file size for a trim result and give no bitrate control, so check the size of the finished file before you publish. A shorter range or smaller output size is the only lever the trim route offers.
What is not checked?
Sume's docs do not say whether the output meets the closed GOP or chroma detail Meta lists, so verify those on the file you publish. Also keep the clip at least 3 seconds; trim itself accepts a duration as low as 0.2.
How do I confirm the cut worked?
Read the job result, not the request. GET /v1/jobs/:id/result returns kind: video_trim with duration_seconds and actual_start_seconds, plus warnings[] when something was adjusted. If the range ran past the source it was clamped and the warning is trim_clamped_to_source, which means your Story is shorter than the 60 seconds you asked for.
- Check
duration_secondsis between 3 and 60. - Check
warnings[]is empty or understood. - Check the file size against 100MB before upload.
Sources
Related posts
More in Use cases
- Instagram Stories vs Reels API limits, side by side with Sume caps
Meta lists Reels at 3 s to 15 min and 300MB, Stories at 3 to 60 s and 100MB. Sume video-trim can cut either from a longer clip, up to 900 s of output.
- App Store preview video length: 15-30 s, 30 fps max
Apple's app preview specs list 15-30 seconds and a 30 fps maximum. Sume's Timeline keeps source fps when omitted, so set output fps to 30 for a preview.
- Kevin MacLeod attribution: credit text and Sume's BGM field
Kevin MacLeod tracks need a CC BY 4.0 credit that is easy to find. Sume's BGM featured beds are his tracks; keep track.attribution with any public use.
- Korea AI Basic Act Article 31: labeling an exported AI video
MSIT's guidelines ask for a human-recognizable label when AI video leaves the service. Here is how to burn a visible Korean label onto a clip with cues.
Written by Sume