Image to video API: which models accept a start frame and what it costs
All three video models on Genace accept a starting image. The request changes by one field; the price does not change at all.
The request
curl -X POST https://genace.ai/api/v1/video/generations \
-H "Authorization: Bearer $GENACE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kling-2.0-standard",
"prompt": "the camera pushes slowly forward, dust drifting in the light",
"image_inputs": ["https://example.com/frame.jpg"],
"duration_sec": 5
}'
image_inputs is an array of URLs. The first entry is used as the starting
frame; the adapters read imageInputs[0] and pass it upstream as the image
parameter.
Two consequences worth knowing before you design around it:
- It takes a URL, not an upload. The image has to be reachable by the upstream provider. If you are generating the still yourself, you need somewhere to put it first.
- Extra entries beyond the first are not used as additional frames by these
adapters. Do not expect
[start, end]to produce an interpolation.
Pricing is identical to text-to-video
| Model | 5-second clip | Duration control | Notes |
|---|---|---|---|
| Seedance 2.0 Fast | 25 credits | any integer 3–15s | cheapest; 720p halves it |
| Kling 2.0 Standard | 35 credits | 5 or 10 only | 1080p only |
| Veo 3 | n/a — 8s fixed | none | 100 credits per clip |
Starting from an image costs exactly what starting from text costs. There is no discount for giving the model a head start, and no surcharge for the extra input.
The prompt still matters
With a start frame supplied, the prompt is describing motion rather than subject. “A cyclist on a coastal road” is doing very little work when the image already shows the cyclist; “the camera tracks alongside, wind moving the grass” is doing all of it.
This is the most common reason an image-to-video result looks static: the prompt described what is already in the frame.
Aspect ratio does not crop for you
aspect_ratio is still yours to set, and the models do not reconcile it with
your image. Feeding a 16:9 still while asking for 9:16 gives the model
contradictory instructions. Match them.
Seedance accepts five ratios (16:9, 9:16, 1:1, 4:3, 3:4); Kling and
Veo 3 accept three, dropping 4:3 and 3:4. Mismatches return
400 INVALID_PARAM naming the field.
It is still async
Same as text-to-video: 202 Accepted with a job id, minutes to render, four
ways to collect the result. See
calling a video generation API without blocking your agent
and the
Python polling example.
What this page does not claim
Which model animates a still image better is not something this page measures. It covers what each one accepts and what each one costs.
Models covered on this page
Where these facts come from
- codebase: src/ai/providers/{seedance,kling,veo3}.ts — imageInputs handling and pricing
- codebase: src/app/api/v1/video/generations/route.ts — request mapping