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.

4 min readSume
All posts

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.

Instagram Stories video (read 2026-09-30). Sume rows: https://docs.sume.com/models/video-trim
ItemMeta listsSume control
Duration3 to 60 secondsvideo-trim duration 0.2 to 900 s
File size100MB maximumNo size stated
Frame rate23-60 FPSoutput.fps 24, 25, 30 or 60
Aspect ratio0.1:1 to 10:1, 9:16 recommendedoutput 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_seconds is 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

All Use cases posts

Written by Sume