Cinemagraph AI: make a living photo from a still
A cinemagraph is a still photo where one element moves in a loop. With AI, pin the photo as first and last frame and describe only that motion.

A cinemagraph is a still photo in which one small part moves in an endless loop, such as steam rising from a cup, a candle flame, or hair in the wind, while the rest of the picture stays frozen. To make one with AI, send your photo to an image-to-video model as both the first and the last frame, and describe only the motion you want. The model generates every frame in between, so check that the rest of the picture really holds still.
The steps below use Sume's video API. Frame and audio rules come from the Video generation docs, the check from the Video frames docs, and playback from MDN's autoplay guide and video element page, read on 2026-09-28.
How do I make a cinemagraph with AI?
Use the same trick as a seamless loop, then restrict the motion to one element. Seamless loop AI video covers the frame rules and which models take a last frame; the cinemagraph-specific steps are:
- Pick one element to move and keep the motion small. A loop is easier when the motion can end where it started: a flicker, a drift, a gentle sway.
- Send your photo twice in
frame_images, once as"first_frame"and once as"last_frame", so the clip starts and ends on your photo. The URL must be public HTTPS. - Say in the prompt what moves, what stays still, and that the camera is static.
- Turn sound off with
generate_audio: falseon a model where audio is optional, such as the Seedance models. A silent clip can autoplay on a web page (last section).
curl -X POST https://api.sume.com/v1/videos \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: cinemagraph-001" \
-d '{
"model": "seedance-2",
"prompt": "Only the steam above the coffee cup moves, rising and curling slowly. The cup, table, window, and light stay completely still. Static camera.",
"frame_images": [
{ "type": "image_url", "image_url": { "url": "https://example.com/coffee.jpg" }, "frame_type": "first_frame" },
{ "type": "image_url", "image_url": { "url": "https://example.com/coffee.jpg" }, "frame_type": "last_frame" }
],
"generate_audio": false,
"resolution": "720p",
"duration": 5
}'What should a cinemagraph prompt say?
Name the one thing that moves, how it moves, and everything that must not. Ask for a static camera, since any camera move shifts the whole frame. A few examples:
- “Only the candle flame flickers softly. The candle, table, and background stay still. Static camera.”
- “Only the curtain moves in a light breeze. The room and furniture stay completely still. Static camera.”
- “Only the water in the glass ripples gently. The glass, lemon slice, and counter stay still. Static camera.”
- “Only her hair moves slightly in the wind. Her face, body, and the background stay still. Static camera.”
Will the rest of the photo stay perfectly still?
Not guaranteed. The documented request parameters include no mask or motion-brush field, so the prompt is the only way to say what moves. Only the two ends are pinned to your photo; the frames in between are generated, and nothing documented holds the rest of the picture still. If something else moves, re-run, or ask for smaller motion in the prompt.
How do I check that only one thing moves?
Compare stills from the middle of the clip with your photo, not just the two ends: the ends are pinned, the middle is where the background can drift. Video frames returns stills at the times you list from your workspace's media.sume.com copy of the clip, and it is unbilled; the loop post shows the call. Then play the clip on repeat and watch the jump from the last frame to the first.
| What a cinemagraph needs | What the API offers |
|---|---|
| Freeze everything but one element | No mask or motion-brush field; the prompt alone says what moves |
| Start and end on the photo | frame_images with one first_frame and one last_frame (at most two entries in current code) |
| A silent clip | generate_audio: false; minimax-h3, minimax-h3-max, and gemini-omni-flash-1.1 always make sound |
| Stills to compare | Video frames: 1–24 times per call, each before the clip's end |
How do I show a cinemagraph on a website?
Play the video muted and looping. MDN notes that autoplay blocking does not apply to a video with no audio track or a muted one, so a silent loop can start by itself, and it calls the playsinline attribute required for autoplay in Safari. The loop attribute makes the browser seek back to the start at the end. Product video sound covers when a clip should have sound, and AI motion poster generator covers animating artwork that carries text.
<video src="cinemagraph.mp4" autoplay muted loop playsinline></video>Sources
Related posts
More in Use cases
- How to colorize a black and white photo with AI
AI can colorize a black-and-white photo: send the scan as a reference with a colorize prompt. The colors are the model's guess, so keep the original.
- Convert video to SCORM: wrap an MP4 in a SCORM package
A video isn't SCORM by itself. To convert it, put the MP4 in a ZIP with an imsmanifest.xml, as a static asset or inside a page that reports completion.
- Corporate talking head video with AI: CEO and team updates
Make a corporate talking head video with AI: script the message, pick a presenter, render it in 16:9 or 9:16, and host the file where staff sign in.
- Creatify alternatives: link, image or script to video ad
Creatify alternatives compared on what they start from (a product link, product images, or a script) and whether batches run over an API. Dated table.
Written by Sume