Looping AI video: use the same image as first and last frame
Try a seamless loop on Sume by sending one still as both first_frame and last_frame to Seedance or Kling. Request shape, limits and what to check.

To make a looping AI video on Sume, send the same still as both the first and last frame and describe a motion that returns to where it began. Seedance 2.x lists first_frame and last_frame as supported frame images, and Sume's Kling row takes start and end frames as well, so the request is valid for both. Nothing in the docs promises a seamless loop, so treat it as a technique to test at 480p.
The idea is simple: if the model must begin and end on identical pixels, the only way out is a cycle. Candle flames, steam, a slow orbit around a product, ocean swells and a blinking neon sign are good subjects because their motion repeats on its own.
What does the request look like?
On POST /v1/videos, first and last frames go in frame_images, each with a frame_type. The video docs show the first_frame shape; the same array takes a second entry with frame_type: "last_frame". Both entries here point at one public HTTPS image URL.
If you also send input_references, remember the docs' rule: when both fields are present, frame_images takes precedence and the request is treated as image-to-video. So do not mix them while testing a loop.
{
"model": "seedance-2",
"prompt": "Slow 360 degree orbit around a ceramic mug of steaming tea, soft window light, ends exactly where it began",
"frame_images": [
{"type": "image_url", "image_url": {"url": "https://example.com/mug.png"}, "frame_type": "first_frame"},
{"type": "image_url", "image_url": {"url": "https://example.com/mug.png"}, "frame_type": "last_frame"}
],
"duration": 6,
"resolution": "480p",
"aspect_ratio": "1:1"
}Which Sume models can do it?
Read supported_frame_images from GET /v1/videos/models for the live answer. From the docs and request validation, the relevant rows are these.
| Catalog id | Frame inputs | Length | Note |
|---|---|---|---|
| seedance-2 | first_frame, last_frame | 4 to 15 s | Example row in the docs lists both frame types |
| seedance-2.5 | Start and end frames | 4 to 30 s | Longest range, check the live row |
| kling-3 | Start and end frames | Up to 15 s | Rejects reference_*_urls, so frames only |
| sume/auto | Start and end frames | 3 to 10 s | Never says which model ran |
How do you check that it really loops?
Download the clip, set your player to repeat, and watch the seam at the cut from last to first frame. Two things break a loop even when the frames match: camera drift that is not cyclic and a change in lighting or subject across the clip. Ask for a locked camera or a full orbit, and keep the subject's state the same at both ends.
Audio is the other seam. If you leave generate_audio on, the sound will not necessarily loop, so for a silent loop (a web hero background, a product tile) turn it off where the model allows it. Some models always generate audio; check the generate_audio flag in the catalog row.
A practical checklist for a keeper loop: pick a still with room for motion, keep the subject centered, choose a 1:1 or 9:16 frame if it is for a feed tile, ask for a locked or fully cyclic camera, and render a 4 or 5 second draft first. Then compare frame 1 and the last frame side by side. If they match but the motion jerks at the seam, shorten the prompt's motion so it eases out at both ends.
Finally, keep the source still itself clean: a sharp, evenly lit image with no text gives the model the least to change between the first and last frame.
Where does this fall short?
A model may treat identical first and last frames as a static request and produce a nearly still clip, or reject the pair; the docs do not say. The cheap way to find out is a 4 or 5 second job at 480p. If the result is too static, make the prompt ask for a bigger cyclic motion, or use two slightly different frames (the same scene a half-cycle apart) so the model has somewhere to go.
Also remember cost: the hold is taken at submit and refunded if the job fails, but a completed dud is captured. Draft small, then render the keeper at 1080p. For longer loops, join the clip to itself in a timeline instead of asking for 30 seconds of repetition in one generation.
Sources
Related posts
More in Use cases
- Make a Short look like a 1990s home video: a Gemini Omni edit
YouTube's Shorts Remix example turns a scene 1990s. The same restyle on your own clip with Gemini Omni video edit on Sume: prompt wording, request, and limits.
- Mercari lets you add 12 photos: a 12-shot plan
Mercari allows up to 12 photos per listing and shows the first one first. Plan the set, and use Sume only for promo clips made from your real shots.
- Does Meta's AI info label apply to video ads? What the page says
Meta's help page on AI info for ads covers images made or significantly edited with its AI tools or third-party AI tools. It does not describe video ads.
- Advantage+ video expansion for Reels: build the 9:16 cut yourself
Meta says video expansion for Facebook Reels gave a 2% conversion lift. If your clip is 16:9, Sume's Timeline can render a 1080x1920 cut you control.
Written by Sume