Story over 60 seconds on Instagram: it splits, so pick the cuts

Instagram breaks a Story video longer than 60 seconds into several clips. How to choose the break points yourself and cut each part with Sume video trim.

4 min readSume
All posts

If you share a video longer than 60 seconds to an Instagram Story, Instagram does not reject it: it splits it into several back-to-back clips. Meta's Stories page says a video up to 60 seconds "will appear as one clip" and that "longer videos will be broken up into multiple clips". The pages I read do not say where each break falls. If you care that a sentence is not cut in half, cut the clips yourself first, then share each one. Sume's video trim does that: one source in, one new MP4 per range out.

What does Meta say about Story length?

Two Meta pages cover it, and they agree. The table lists only what those pages state, next to the Sume trim limits from the docs.

Story length rules. Meta rows: Instagram Stories feature page and Stories guide, read 2026-10-03. Sume rows: docs.sume.com/models/video-trim, read 2026-10-03.
ItemValueWhere it comes from
One Story clipUp to 60 secondsMeta Stories guide
Longer videoSplit into multiple back-to-back clipsMeta Stories guide
Story lifetime24 hoursMeta Stories guide
Stories per dayNo daily limitMeta Stories guide
Sume trim output length0.2 to 900 seconds per cutSume video trim
Sume trim price$0.02 per jobSume video trim

Why cut the breaks yourself?

An automatic split is fine for a casual phone clip. It is a poor fit when the video is a talk, a product walkthrough or anything with sentences, because you do not control the boundary. Choosing the breaks also lets you keep every clip a little under the limit, so a Story does not end on a stray half second.

  • Cut at the end of a sentence, not at a fixed second count.
  • Keep each part at or under 60 seconds.
  • Keep the order in the file names so you share them in sequence.

How do I find the sentence ends?

Run video inspect with transcribe: true and segmentation.mode: "sentence". It returns gapless sentence segments[], and transcription is billed at $0.01 per audio minute. Take each segment's end time, then group them greedily so no group runs past 60 seconds. This function does the grouping:

def story_windows(sentence_ends, limit=60.0):
    windows, start, last = [], 0.0, 0.0
    for end in sentence_ends:
        if end - start > limit:
            windows.append((start, last))
            start = last
        last = end
    windows.append((start, last))
    return windows

ends = [14.2, 31.8, 47.5, 63.0, 88.4, 112.9, 131.0]
print(story_windows(ends))
# [(0.0, 47.5), (47.5, 88.4), (88.4, 131.0)]

How do I cut each window?

Send one trim job per window. start is the in-point and you give exactly one of end or duration. Precision defaults to exact, a frame-accurate re-encode. The source must already be a Sume-hosted file, so import it first, and every request needs its own Idempotency-Key. The first window above looks like this, and the later windows use start 47.5 and 88.4. Each result is a new file; the source is never changed.

After the submit, poll GET /v1/jobs/:id/result for the new video_url (see jobs and results).

curl -X POST https://api.sume.com/v1/video-trim \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: story-part-1" \
  -d '{
    "video_url": "https://media.sume.com/artifacts/artf_demo/talk.mp4",
    "start": 0,
    "end": 47.5
  }'

What should I check before posting?

Check that every part is 60 seconds or less, that audio is kept (audio defaults to keep), and that the first frame of each part makes sense on its own, since viewers tap through clips quickly. If a part is too long, move the break to the previous sentence end and re-run only that window.

Sources

Related posts

More in Media tools

All Media tools posts

Written by Sume