Carousel music is blocked with video slides: use a frame still

Instagram says music cannot be added to carousels with videos. Pull a still from each video slide with Sume video frames to keep the music option.

4 min readSume
All posts

If a carousel contains any video slide, you cannot add Instagram's music to it, because Instagram's help page on adding music to a post with multiple photos says music cannot be added to carousels with videos (read 2026-10-03). The workaround is to make every slide a photo. Sume's video frames pulls stills from a clip you have imported, at times you name, as durable media.sume.com images at source size. You lose motion on that slide, which is the price of the music option.

Choose the frame

Pass exactly one of at[] (1-24 seconds, each at least 0 and below the clip's duration) or fps (0 up to 2). format is jpeg by default or png, and max_edge clamps the long edge between 16 and 2160; omit it to keep the source size. Submit is always 202 and async, so poll the resource or GET /v1/jobs/:id/status. One instant that fails comes back with a null url without failing the job.

import json, os, urllib.request

API = "https://api.sume.com/v1"

def post(path, body, key):
    req = urllib.request.Request(
        f"{API}{path}",
        data=json.dumps(body).encode(),
        headers={
            "Authorization": f"Bearer {os.environ['SUME_API_KEY']}",
            "Content-Type": "application/json",
            "Idempotency-Key": key,
        },
        method="POST",
    )
    with urllib.request.urlopen(req) as res:
        return json.load(res)

res = post(
    "/video-frames",
    {
        "video_url": os.environ["SUME_CLIP_URL"],
        "at": [0.5, 2.0, 4.5],
        "format": "png",
    },
    "carousel-stills-001",
)
print(res["request_id"])

Pick the right instant

A video slide's best still is rarely frame zero. Sample three instants, look at them, and choose the one with the sharpest subject and no motion blur. Using png keeps the still lossless for text overlays; jpeg is smaller. If you only skim the clip for candidates, video inspect offers seek: fast, which snaps to the keyframe at or before each instant and skips the decode.

Frame extract limits, read 2026-10-03
ItemValue
Frames per call1-24
Source length cap300 s
max_edge16-2160, omit for source size
fps0 < fps <= 2
Failed instanturl: null, job still succeeds

When to keep the video instead

Choose by what the slide needs. If the motion is the point, keep the video slide and skip carousel music; Instagram says it cannot combine them. If the message is a product angle or a before-and-after, a still carries it and the soundtrack comes back. Another route is to post the whole sequence as a Reel, where audio is a native part of the format; a timeline render can hold stills as static holds on a spine.

What you lose and how to soften it

A still cannot move, so the slide loses motion and any sound it carried. Compensate with the caption on that slide, and if you use a lossless png, add text over it before upload. If a slide's content is a short process, show the first and last states as two photo slides rather than one video.

Keep the selection honest: a frame that looks like a different moment than the video would show is a mismatch the viewer notices. Take stills from inside the action, not from a fade or a cut, and use at values you have inspected rather than a fixed offset for every clip.

Checking the result

Poll GET /v1/video-frames/:id until resource_status is ready, then read frames[{t,url,width,height}]. Confirm the width and height are what you expect for your carousel, and check the crop in Instagram's preview before you post. A clip longer than 90 seconds may return a low_confidence_long_video warning, which does not fail the job.

A quick workflow

Import each video slide to media.sume.com first, because frame extraction does not fetch from the open internet. Then request three instants per clip, choose the sharpest, and download or reference the returned images. Name the files by slide number, assemble the carousel in order, and add music in the app on the final screen before you share. Because music cannot be added once any slide is a video, convert every video slide before you start the post, not halfway through.

  • Import the clips and note each media.sume.com URL.
  • Extract three candidate frames per clip with at[].
  • Pick one per slide and name the file by slide order.
  • Add music in Instagram's flow, which Instagram says it only allows when no slide is a video.
  • Preview the carousel and check that the crop suits every slide.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume