Animate a painting with AI video: first frame and a slow camera prompt
Pin a painting as the first frame with frame_images on Sume, ask for a slow camera move, and pick the model by length and price. A 6-second price table.

To animate a painting, upload it as the first frame in frame_images on POST /v1/videos and write a prompt about a slow camera move and moving atmosphere, not about the painting's content. The painting already fixes the subject and the style. A short, calm prompt ("slow push-in, clouds drift, the water ripples") gives the model something to animate without asking it to turn brush strokes into a photograph.
Several Sume models take a first frame, and they differ in length, resolution and price. For a painting, the choice mostly comes down to how long a clip you need and how much you want to spend on a test.
The prompt: one move, one moving element
Painted scenes read best when the motion is restrained. A painting has no real depth for a model to explore, and a large camera move tends to show that. Ask for one slow camera move and one element that is plausible to move in a still scene.
- Camera: slow push-in, slow pan across the canvas, or a slight parallax drift.
- Moving element: clouds, smoke, water, leaves, candle flame, a figure's breath or a turning head.
- Leave the style fixed: say "keep the oil painting look" if the model leans toward realism.
- Skip quality words such as 8K or photorealistic, which pull the other way.
Before you submit: prepare the canvas
Crop out frames, wall and glare before you upload, because the model will try to animate them. Keep the file a clean JPEG or PNG on a public HTTPS address. If the painting is wider than the output ratio, decide the crop yourself instead of letting the model pad it: a deliberate crop on the subject usually looks better than a letterboxed whole canvas. For a very large work, make two crops, such as the full scene and a close detail, and animate both, because the detail shot often looks the most alive.
Run a short, cheap test first. A 2 or 3 second clip at the lowest resolution that the model offers will show whether the style survives the motion, and you can raise the resolution and length once you like it.
Which models take the painting as a first frame
The table lists models that accept a first frame, with the limits from the Video Router catalog and the Sume price for a 6 second clip at the resolution shown (provider list times 1.25). Read the live values from GET /v1/videos/models before you rely on them, since the catalog is the source of truth.
| Model id | Length window | Resolution | Per second | 6 second clip |
|---|---|---|---|---|
| wan-3.0 | 2 to 30 s | 720p | $0.125 | $0.75 |
| gemini-omni-flash-1.1 | 3 to 10 s | 720p | $0.125 | $0.75 |
| minimax-h3 | 5 to 15 s | 768p | $0.075 | $0.45 |
| minimax-h3-max | 5 to 15 s | 768p | $0.10 | $0.60 |
Sound, ratio and the first frame
Gemini Omni Flash 1.1, MiniMax H3 and H3 Max always produce native audio, so a painting comes with an invented soundtrack that you may or may not want. Wan 3.0 lists audio and the request has a generate_audio field for models that support the toggle. If you want the clip silent for a gallery loop, choose a model whose catalog row shows the toggle and set generate_audio to false. If you want your own music, mute the clip on the timeline and lay the track under it.
Match the aspect_ratio to the painting. Gemini Omni Flash 1.1 takes only 16:9 and 9:16, so a square or a tall canvas needs another model. The ratio lists differ by model and the catalog shows each one in supported_aspect_ratios.
Request
The request pins the painting as the first frame. A start frame request works the same on every model that lists first_frame. The fields you change between models are the id, the duration and the resolution, so a comparison of two models on the same painting is a matter of running the same body twice with a different model value and viewing both clips side by side. Keep the prompt identical for that test, since a different prompt would hide the difference between the models.
curl -X POST "https://api.sume.com/v1/videos" \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "wan-3.0",
"prompt": "Slow push-in. Clouds drift, the water ripples. Keep the oil painting look.",
"duration": 6,
"resolution": "720p",
"frame_images": [{
"type": "image_url",
"image_url": { "url": "https://example.com/painting.jpg" },
"frame_type": "first_frame"
}]
}'Sources
Related posts
More in Use cases
- Animate a pencil sketch or storyboard panel as the first frame
Use a sketch or storyboard panel as first_frame on Sume, and the next panel as last_frame on models that take an end frame. Prompt, models and windows.
- How do I animate my podcast cover art into a 5-second video intro?
Use the cover as a first frame for a 5-second clip ($0.63 at 720p), add a $0.125 sting and a $0.10 render: $0.855 once, reused every episode.
- How do I turn an app screen recording into a Black Friday sale ad?
Trim a screen recording to 15 seconds, add a music bed and burn the offer in as captions. Four calls, $0.445 on Sume, no generative video needed.
- How do I make a Black Friday video ad with no product photos?
Three 5-second Wan 3.0 text-to-video clips, a music bed, one render and burned-in deal text: $2.315 on Sume at 720p, no photo shoot needed.
Written by Sume