TL;DR: An AI video loop prompt asks for continuous, cyclical motion with a locked camera, so the clip's last frame lands close to its first. Only Luma documents an actual loop flag. Everywhere else you get near-loops and close them in an editor with a crossfade or a mirrored tail.
What is an AI video loop prompt?
An AI video loop prompt is written so the clip ends roughly where it started, letting it replay without a visible jump. It is mostly a craft constraint rather than a setting: pick a subject whose motion cycles, lock the camera, avoid anything that reads as an event.
That framing matters because the search results for this topic are full of phrases like "perfect loop, no cut" bolted onto the end of a request. Those are not parameters. On most models they are ordinary text the model may or may not weight. What actually produces a loopable clip is your choice of what moves, not a magic suffix. There is one real exception, covered below, and a lot of near-misses.
What is the difference between a loop and a cinemagraph?
A loop is a property of timing. The final frame is close enough to the first that playback repeats without a seam. Whether one element moves or a thousand is irrelevant.
A cinemagraph is a property of composition. Most of the frame is held perfectly still and exactly one element moves: steam off a coffee cup in an otherwise frozen café, hair lifting on a motionless subject, one neon sign flickering on a still street. The stillness is the effect, and it is the half that people describe as looking expensive.
You want both at once, and they come from different parts of the prompt. The loop comes from cyclical motion and a locked camera. The cinemagraph comes from naming what stays still, which most people skip. "Steam rises from the cup" gives you a moving café. "Steam rises from the cup; the person, the table, the background and the light are completely static" gives you a cinemagraph.
Which AI video models document a loop feature?
One does. Luma publishes a real loop parameter. Every other vendor checked publishes a first-and-last-frame control, or nothing.
| Model / API | Documented loop flag? | First and last frame control? | Primary source (accessed 29 Aug 2026) |
|---|---|---|---|
| Luma Ray 3.2 (Agents API) | Yes — video.loop | Yes — start_frame / end_frame, but not alongside loop | docs.agents.lumalabs.ai/guides/video-generation |
| Luma Dream Machine (Ray 2) | Yes — loop | Yes — keyframes.frame0 / frame1 | docs.lumalabs.ai/reference/creategeneration |
| Google Veo 3.1 | No | Yes — lastFrame | ai.google.dev/gemini-api/docs/veo |
| Kling VIDEO 3.0 Omni | No | Yes — "Start & End Frames-to-Video" | kling.ai/quickstart/klingai-video-3-omni-model-user-guide |
| Vidu Q3 | No | Yes — the start-end2video endpoint | platform.vidu.com/docs/start-end-to-video |
| LTX-2.5 | No | Yes — last_frame_uri on image- and audio-to-video | docs.ltx.io/models/ltx-2-5 |
| Pika 2.5 | No | Yes — Keyframe, 2 to 5 ordered images | dev.pika.art/llms/pika/pikaframes/image-to-video |
| Seedance 2.5 (via Runway) | No | Yes — position: first / last | docs.dev.runwayml.com/api.md |
| Runway Gen-4.5 | No for video (loop exists on audio only) | No — position accepts first only | docs.dev.runwayml.com/api.md |
| Gemini Omni Flash (via Runway) | No | No — first frame only | docs.dev.runwayml.com/api.md |
| Grok Imagine Video 1.5 (via Runway) | No | No — first frame only | docs.dev.runwayml.com/api.md |
| Midjourney | No — --tile is spatial, not temporal | n/a | docs.midjourney.com/hc/en-us/articles/32197978340109-Tile |
Three findings in that table deserve their own sentence.
Luma is the only genuine loop switch. The Ray 3.2 guide documents video.loop as a boolean that, when true, generates a looping video. The constraints are hard: create-only, rejected on video edits, and rejected alongside a ten-second duration, HDR, an end frame, or a keyframe list. On extends it "is only supported on forward extend". So a Luma loop is a five-second, standard-dynamic-range request. Our Ray 3.2 prompt pack covers the rest of that parameter surface.
Veo, Kling, Vidu, LTX, Pika and Seedance give you the ingredients, not the dish. Google's Veo documentation says "Veo 3.1 lets you create videos using interpolation, or specifying the first and last frames of the video", and describes lastFrame as "The final image for an interpolation video to transition", which "Must be used in combination with the image parameter". None of those pages mention looping. Our own observation, not vendor guidance: passing the same still as both first and last frame is the obvious way to force a return to the starting pose, and it is what we reach for on Veo, Kling and Vidu. It is undocumented on all of them, and it does not guarantee a pixel-exact join.
Runway's own flagship cannot do it at all. In Runway's API reference, Gen-4.5 and Gen-4 Turbo accept a position value of first only, so there is no last frame to pin. Gemini Omni Flash, routed through the same API, is described flatly: "Gemini Omni Flash only supports a first frame." Runway does publish a loop parameter, but it is on audio, not video.
What the vendors actually wrote
| Source | Exact wording |
|---|---|
| Luma, Ray 3.2 video guide | A boolean that "generates a seamlessly looping video" |
| Luma, Dream Machine API schema | The loop property, "description": "Whether to loop the video" |
Runway, /v1/generate/audio | "loop (boolean) — default false. Whether the output sound effect should be designed to loop seamlessly." |
| Midjourney, Tile article | "Create seamless repeating patterns with the tile parameter: --tile" |
| Vidu, start-end to video | "Two images: first is start frame, second is end frame." |
| LTX-2.5 | "A last frame fixes where the clip has to end, which requires a known length." |
| Pika 2.5 Keyframe | "2-5 ordered keyframe image URLs. Consecutive pairs become transitions." |
Why won't the prompt alone give you a clean loop?
Because generation is not constrained to end where it began unless something forces it to. The model produces a plausible continuation, frame after frame, and nothing in that process compares frame 120 against frame 0.
Even with a last frame supplied, "the same image" is a target rather than a guarantee. The model interpolates toward it, and the final frames are still generated pixels. Lighting drifts. Grain moves. At normal playback you notice none of it, right up until the clip restarts and the whole frame twitches.
So the honest workflow is: prompt for motion that is nearly loopable, then spend thirty seconds in an editor closing the gap. Anyone promising a frame-perfect loop straight from a text prompt on Veo or Kling is selling you something.
What kind of motion actually loops?
This is the part that decides everything, and it is a craft judgement rather than a setting.
Cyclical or continuous motion loops. Motion with a beginning and an end does not. Drifting smoke has no start and no finish, so any two moments in it are interchangeable and a viewer cannot find the cut. A person completing a gesture is the opposite: the gesture starts, resolves, and the clip snaps back to before it started. That snap is the loop failing, and no phrasing repairs it, because the problem is the subject.
Continuous ambient motion hides the cut point; a distinct event marks it. Rain falling is ambient. A raindrop landing in a puddle is an event. Traffic flowing past is ambient. One car pulling away from a kerb is an event. Loops want texture, not narrative.
Camera movement almost always breaks a loop. A dolly, a pan, a push in, an orbit: each means the framing at the end differs from the framing at the start, so the clip cannot rejoin itself however well the subject behaves. The fix is blunt and it works. Say the camera is locked, on a tripod, static, no movement at all, and repeat it as a negative if the model supports one. Our camera movement vocabulary reference is mostly a list of things to avoid here.
Speed and amplitude matter more than people expect. Slow, small motion loops well because there is less distance to drift over. "Steam drifting gently" beats "steam billowing".
30 AI video loop and cinemagraph prompts by subject
Loopability depends on what is moving, so these are organised by subject rather than by model. Each block is a prompt template to paste and edit, labelled where a model's behaviour differs. Starting from a still instead of text? The same wording works as the motion half of an image-to-video handoff.
Steam and smoke rising
The best loop subject there is: no start, no end, no narrative.
A ceramic mug of black coffee on a dark walnut table, morning window light
from the left. A thin ribbon of steam rises continuously from the surface
and dissipates near the top of the frame. The mug, the table, the window
light and the background are completely static. Locked tripod camera, no
camera movement, no zoom. Shallow depth of field.
Luma Ray 3.2 — send with video.loop: true, 5s, no end_frame, no HDR.
Incense smoke curling upward in a dim studio, single warm key light from
camera right, deep black background. The smoke drifts and folds in a slow
continuous column. Nothing else in the frame moves. Locked camera.
Veo 3.1 / Kling / Vidu — supply the SAME still as both first and last frame.
A cast-iron skillet on a stove, gentle steam rising from the surface in a
slow continuous plume. The skillet, the hob and the kitchen behind are
frozen. No hands, no people, no camera movement. Static locked-off shot.
Water, a fountain or waves
Pick the kind of water carefully. A breaking wave is an event; a fountain is a cycle.
A small stone fountain in a courtyard, water falling from the upper basin
into the lower one in a steady unbroken sheet. The stone, the plants and
the sunlight are motionless. Locked camera on a tripod, no pan, no push.
Close-up of a shallow stream running over smooth pebbles, continuous water
movement across the whole frame, sunlight glinting on the surface. The
pebbles and the bank do not move. Fixed camera, no drift.
Avoid: a wave breaking, a splash, a droplet landing. These have a start and
a finish and will mark your cut point.
Instead: gentle swell on open water, no whitecaps, no breaking, continuous
undulation to the horizon. Static camera, level horizon, no roll.
Fabric or hair in wind
Small amplitude is the whole game. A flag snapping in a gale will not loop; a curtain breathing will.
A sheer white curtain in front of an open window, lifting and settling in a
light breeze in a slow continuous rhythm. The window frame, the sill, the
room and the light are static. Locked camera, no movement.
Portrait of a woman facing camera, expression fixed and unchanging, eyes
open and steady. Only her long hair moves, lifting gently in a light breeze
from camera left. Face, shoulders, clothing and background are perfectly
still. Locked-off medium shot, no camera movement.
Kling — this is a natural fit for Start & End Frames-to-Video. Use the same
frame at both ends.
A linen tablecloth on an outdoor table, one corner rippling continuously in
a soft breeze. Everything else in the frame is motionless. Static camera.
A neon sign or flickering light
Flicker is cyclical by definition. Keep it irregular rather than a clean on-off pulse.
A neon sign reading OPEN in a rain-streaked shop window at night, the tube
flickering irregularly and continuously. The window, the street, the
reflections and the rest of the frame are completely static. Locked camera,
no movement. Moody cyan and magenta.
A single bare filament bulb hanging in a dark room, the filament pulsing
faintly and continuously as if on an unsteady supply. Nothing else moves,
including the bulb itself, which does not swing. Fixed camera.
Night street, a row of shop signs, one buzzing fluorescent tube stuttering
on and off continuously while every other light burns steady. No people, no
traffic, no camera movement. Static wide shot.
Rain or falling snow
The most forgiving subject after smoke: the eye cannot track individual particles across the join.
Heavy snow falling continuously in front of a lit shop window at night. The
window, the sign, the pavement and the snow already on the ground are
static. Only the falling snow moves. Locked camera, no movement.
Rain falling steadily against a dark window, water running down the glass
in continuous rivulets. The room behind the glass, and everything in it, is
frozen. Static locked-off camera, shallow focus on the glass.
Do NOT write: "a raindrop lands in a puddle and ripples spread". That is a
single event and it will mark the loop point exactly.
Write instead: steady rain on the surface of a puddle, continuous overlapping
ripples across the whole surface, no single dominant impact. Fixed camera.
A rotating object
The one case where a full cycle is literally achievable, and where a last frame earns its keep.
Veo 3.1 / Seedance 2.5 / Vidu — set the same still as first and last frame,
and ask for exactly one full revolution.
A matte black perfume bottle on a lit turntable against a plain grey
backdrop, rotating a full 360 degrees at constant speed and returning to
its exact starting angle. The lighting, the backdrop and the shadow do not
change. Locked camera, no movement.
A model of a car on a slow rotating platform, one complete revolution at
even speed, ending in the exact position it started. Studio lighting fixed,
background fixed, camera locked off.
A vinyl record spinning at constant speed on a turntable, label centred, no
tonearm movement, no hands. Continuous rotation. Static overhead shot, no
camera movement.
A crowd or traffic passing
Ambient flow reads as continuous. The failure mode is a recognisable individual crossing frame, because the viewer tracks them and sees them teleport.
Elevated wide shot of a busy pedestrian crossing, dense continuous flow of
people in both directions, nobody in the foreground, no single figure large
enough to follow. Buildings, signage and light are static. Locked camera.
Long-lens night shot of a motorway, continuous streams of headlights and
tail lights flowing in both directions, no individual vehicle dominant. The
road, the barriers and the skyline are static. Fixed camera, no movement.
Overhead shot of a market street, continuous crowd movement filling the
frame, no foreground subject, no one stopping or turning to camera. Stalls,
awnings and light unchanged. Static locked-off camera.
A candle or fire
Flame is cyclical and forgiving, but keep it small. A large fire changes shape too much in five seconds.
A single candle flame in a dark room, flickering gently and continuously,
the flame small and steady. The candle, the holder, the table and the
background are motionless. No draught, no smoke plume. Locked camera.
Embers glowing in a fireplace, small flames licking continuously over the
logs without the fire growing or collapsing. The logs, the hearth and the
room are static. Fixed camera, no movement, warm low light.
Luma Ray 3.2 — video.loop: true is rejected with duration 10s, so keep this
at 5s.
A row of tealights on a windowsill at dusk, all flames flickering gently
and continuously. Nothing else in the frame moves. Static camera.
Foliage in a breeze
The classic ambient-background loop: small amplitude, dense texture, no single leaf worth tracking.
A dense green hedge filling the frame, leaves shifting continuously in a
light breeze, no branch swinging far enough to track. The light and the
shadows are unchanged. Locked camera, no movement, no zoom.
Tall grass in a meadow at golden hour, the whole field moving in a slow
continuous ripple, no gust, no direction change. Sky, horizon and light are
static. Fixed camera, no drift.
Palm fronds against a flat blue sky, fronds moving continuously in a steady
breeze at small amplitude. No clouds moving, no birds, no camera movement.
Static low-angle shot.
One moving element in an otherwise still portrait
The purest cinemagraph, and where the stillness list does the most work.
Medium close-up portrait of a man in a dark coat on a city street at night.
He is completely motionless: eyes open and fixed, no blinking, no breathing
movement, no head turn. The ONLY movement in the frame is steam rising from
a manhole behind his left shoulder. Street, signage, traffic and lighting
are frozen. Locked camera, no movement.
A woman seated at a café table, holding a cup, entirely still: no blinking,
no shift in posture, no expression change. The ONLY movement is steam from
the cup. Table, chair, window, street outside and light are all static.
Locked-off medium shot.
Pika 2.5 Keyframe — pass the same still as the first and last of 2 ordered
keyframes so the transition returns to the start.
A boy standing in a doorway, perfectly still, eyes fixed on camera. The
ONLY movement is dust drifting slowly in the shaft of light beside him.
Everything else in the frame is frozen. Static camera.
How do you close a loop in an editor?
Two techniques, both quick.
The crossfade. Overlap the last 6 to 12 frames with the clip's own first frames and cross-dissolve between them. This is the standard fix, because the eye is bad at detecting a short dissolve inside continuous texture. It costs you the overlapped frames, so generate slightly longer than you need. On drifting smoke, falling rain or moving foliage it is genuinely undetectable.
The mirrored tail. Duplicate the clip, reverse the copy, join it to the end. The result plays forward then backward, so the last frame is by definition identical to the first: a perfect loop with zero cleanup. Right for smoke, water, fabric and foliage, where reversed motion still looks physically plausible. Wrong for anything directional, including traffic, a rotating object, a person, or falling rain, all of which visibly run backwards.
When neither works, the shot was wrong. If the crossfade ghosts and the mirror looks absurd, the subject had a beginning and an end, and editing will not fix that. Regenerate rather than fight it. The same diagnostic covers the wider failure family in why AI video morphs and warps.
To be explicit: Prompt Architects generates the prompt. We do not generate video and we are not an editor. For the crossfade and the mirror, use whatever timeline tool you already have.
Which loop failures can a prompt fix, and which cannot?
| Failure | Prompt-fixable? | What to do |
|---|---|---|
| Camera drifts, pans or pushes in | Yes | State "locked tripod camera, no camera movement, no zoom", and negate camera motion if the model allows |
| Subject completes a gesture or action | Yes | Change the subject: swap the event for continuous ambient motion |
| Background elements move when they should not | Yes | Name every element that must stay still, in an explicit list |
| Motion is too fast or too large to rejoin | Yes | Add "gentle", "slow", "small amplitude", "steady" and shorten the clip |
| A person blinks in a cinemagraph | Partly | "No blinking, eyes open and fixed" helps but does not always hold |
| Lighting or exposure drifts across the clip | No | Not promptable on any model checked. Crossfade or regenerate |
| Grain and compression noise differ at the ends | No | Inherent to generation. The crossfade exists for this |
| Last frame does not match the supplied still | No | Even with lastFrame the final frames are generated. Close it in the editor |
The pattern is clean: the prompt controls what happens; it does not control the fidelity of the pixels at the join. The first category is yours to fix by writing better. The second is a post step, permanently.
Our video prompt generator handles the prompt half: describe the shot, get back a structured prompt with the stillness list and the camera lock already in place. Video prompt generation sits on the Advanced and Team plans, per the comparison table on our pricing page, verified 29 August 2026. Free and Pro get the core prompt enhancer.
Stop rewriting prompts. Start shipping.
Works with ChatGPT, Claude, Gemini, Grok, Midjourney, Ideogram, Veo3 & Kling. 5.0★ on the Chrome Web Store.
Create An Account