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.
- LinkedIn 30-minute video: build 1800 s with Timeline
LinkedIn's Videos API lists three seconds to 30 minutes. Sume Timeline 1.0 renders up to 1800 s in one MP4 at $0.10 per output minute: 30 minutes is the cap.
- LinkedIn Videos API: 500MB or 5GB? Plan for the lower number
LinkedIn's Videos API page lists a 75kb to 500MB file size and a 5GB maximum. Sume states no output file size, so measure the MP4 first.
- LinkedIn video captions: English SRT only vs burned-in text
LinkedIn's Videos API takes one English caption file, shown with SRT. Sume video-captions burns your cues text into the video and does not accept SRT uploads.
Written by Sume