App preview video that loops and works muted: first and last frame
Apple says previews autoplay, repeat and are usually muted. Use one image as first and last frame so the loop has no jump, with generate_audio off.

Apple tells app developers that preview videos autoplay and repeat, so they must loop smoothly without visible jumps, and that audio is usually muted by default. The most direct way to get a clean loop from a generated clip is to give the video model the same image as its first frame and its last frame, and to design the clip so it still works with no sound.
Both rules come from App Store Asset Best Practices and Resources (read 2026-10-11). This post covers how a Sume video request can be shaped for them. It does not check Apple's technical specs for preview files, which this post did not read.
What Apple says about sound and repeats
Quotes below are from the Apple page, read 2026-10-11.
| Apple guidance | Request choice |
|---|---|
| Audio is muted by default in most cases, so the creative must work silently first | Plan the shot list with no dialogue; show the feature, not a voice describing it |
| Treat added sound as brand texture; favor a short music loop; avoid sudden loud moments | Leave audio off at generation, add a quiet bed afterward if wanted |
| Ensure the audio loops cleanly if the video repeats | If you add audio, end it on a fade so the seam is not audible |
| Video autoplays and repeats; loop smoothly without visible jumps or breaks | Same image as first frame and last frame |
Same image as first and last frame
Video Generation says frame_images takes entries with a frame_type of first_frame or last_frame, and that seedance-2 lists both in supported_frame_images. When the two entries use one image, the clip is steered to begin and end on the same composition, so the repeat has no jump in the picture.
Describe motion that leaves and returns: a slow drift that comes back, a light that dims and rises. Do not describe a one-way action such as a door that opens and stays open, because the last frame has to match the first.
import os, requests
body = {
"model": "seedance-2",
"prompt": "Slow camera drift over the app on a phone, snow-lit desk, "
"returns to exactly the opening composition",
"duration": 8,
"generate_audio": False,
"frame_images": [
{"type": "image_url",
"image_url": {"url": "https://example.com/open.png"},
"frame_type": "first_frame"},
{"type": "image_url",
"image_url": {"url": "https://example.com/open.png"},
"frame_type": "last_frame"},
],
}
r = requests.post(
"https://api.sume.com/v1/videos",
headers={"Authorization": "Bearer " + os.environ["SUME_API_KEY"]},
json=body,
timeout=60,
)
print(r.status_code, r.json())Switch audio off, then add a bed deliberately
The request field generate_audio is a boolean; per the docs the default is the model's own audio capability, and seedance-2 reports generate_audio as true. For an asset that must work muted and loop cleanly, set it to false rather than relying on whatever the model produces, since generated audio will not necessarily end where it began.
If you want a bed, add it after the clip is final. A short bed that fades out and in at the seam follows Apple's note about audio looping cleanly. The Sume Timeline 1.0 page covers rendering clips and audio together; check the seam by playing the file twice in a row.
Check the seam before you upload
A matched first and last frame is a request, not a guarantee, so look at the join.
- Play the file on repeat for a minute and watch the frame where it restarts.
- Compare the first and last frames side by side for drift in color or position.
- Mute the file and watch it again: does it still make sense?
- If the seam jumps, re-run with a simpler prompt and less camera travel.
Where this stops
Sume produces the clip. It does not submit to App Store Connect and does not validate Apple's file specs. For the length and ad-versus-preview split see Mobile-app UGC Format: holiday app ads vs App Store previews, and for the frame-rate ceiling on a Timeline render see iPhone 18 Pro app previews: 30 fps max on Timeline output.
Sources
Related posts
More in Use cases
- App Store creative assets must be 4+, even for a 17+ app
Apple's asset rule: every App Store asset must meet a 4+ rating whatever the app's own rating. A review table for generated art, and a $1.20 candidate-set cost.
- App Store creative assets: no prices, discounts or URLs in the art
Can a Black Friday app asset say 40% off? Apple's asset rules bar pricing, discounts and URLs. What to leave out, and how to generate art with room for type.
- Google Ads promotion occasions: Q4 dates and a creative set per window
Google lists Black Friday as Oct 15 to Dec 15 and Christmas from Nov 1. See the overlaps, the 6-month rule, and how to batch one creative set per window.
- Layered paper-cut art from a photo: FLUX.2 flex or pro on Sume
Photo to layered paper-cut art with a reference edit: FLUX.2 flex at $0.0625 or pro at $0.0375 on Sume, four takes for $0.25 or $0.15.
Written by Sume