Snap image ads become 5-second videos: generate a real clip instead

Snap's Ads API converts a top snap image into a 5-second video. If you want camera motion, generate a 5-second clip from the same image with Sume.

4 min readSume
All posts

When you upload a PNG or JPG as a top snap image through the Snap Ads API, Snap converts it into a 5-second video. That is a still held for five seconds. If you want movement, generate a 5-second clip yourself from the same image as its first frame and upload that as a video top snap, which Snap's media page allows at 3 seconds or longer.

What the Snap media page says

The Snap Ads API media page, read on 2026-10-03, lists limits for both top snap types.

Top snap media in the Snap Ads API (read 2026-10-03)
ItemImage top snapVideo top snap
Size5 MB; pixel size not stated on the page read1080x1920; 32 MB in one upload, 1 GB with chunked upload
FormatsPNG, JPGMP4, MOV
DurationConverted into a 5-second video3 seconds minimum, 1800 seconds maximum

A held still versus a clip

A converted image is a legitimate ad, and for a product on a clean background it can be enough. It has no motion, no audio of its own, and it costs only the image. A clip has motion and, with models that generate audio, sound, at the price of a video generation.

Which one wins is a test, not a rule. The useful part is that the same asset can feed both: generate the image once, upload it as an image top snap, and use it as the first frame for a clip, so the two ads start from an identical picture.

Generate a 5-second clip from the image

The video docs describe frame_images for image-to-video, with a frame_type of first_frame. They use seedance-2 for the example and show a 1080p request. Durations are whole seconds and each model lists its own supported_durations, so confirm that 5 is accepted by the model you pick with GET /v1/videos/models. The aspect ratio for Snap is 9:16, which the docs list among supported ratios, and each model advertises its own subset.

The call is asynchronous. It returns a job and you poll, and sending an Idempotency-Key makes a retry safe.

curl -X POST https://api.sume.com/v1/videos \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: snap-top-snap-001" \
  -d '{
    "model": "seedance-2",
    "prompt": "Slow push-in on the product, soft daylight, no text",
    "frame_images": [{
      "type": "image_url",
      "image_url": { "url": "https://media.sume.com/img/example/0.png" },
      "frame_type": "first_frame"
    }],
    "aspect_ratio": "9:16",
    "resolution": "1080p",
    "duration": 5
  }'

Check the file against the single-upload limit

A 5-second 1080p clip is small, but verify the byte size of the finished MP4 before choosing the upload path. Snap's page lists 32 MB for a single upload and 1 GB with chunked upload, so a short generated clip normally goes in one request, and anything longer is where chunking starts to matter.

The Sume job returns a media.sume.com URL for the finished video. Download it, check the size, and upload it to Snap with your own credentials. Uploading to Snap is a step you run with your own Snap credentials.

Cost and testing

The docs state that video jobs reserve funds on submit at provider list times 1.25 and report the billable amount in usage.cost, so read that field on the first job before you scale to a catalog. Run the image version and the clip version of the same creative against each other at equal budget, and let the results decide whether motion is worth the added generation cost for your product.

The size discrepancy to be aware of

Snap's marketing pages and its API page give different pixel sizes for video, 720x1280 on one and 1080x1920 on the other. Rendering at 1080x1920 meets the API page and downscales cleanly if a surface wants less. The size comparison post goes through it.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume