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.
Continue with api fundamentals
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