Veo 3.1
veo-3.1/image-to-video
Google's video generation model: image input can natively generate 8-second videos with ambient sound and dialogue, supporting up to 4K while keeping the subject's appearance consistent
Try veo-3.1/image-to-video
Input
Showcases
View all showcasesOutput
videoPricing
veo-3.1/image-to-video per second
Overview
The Veo 3.1 image-to-video route is the image-driven version of Google's video generation model on HiAPI.ai. It takes an image and a text prompt and produces dynamic video with a native audio track. It excels at controlling camera movement and scene progression while preserving the appearance of the subject in the input image, making it suitable for developers who need to quickly turn static visual assets into playable clips for advertising, social media, concept previews, and similar scenarios.
Key Highlights
- Native synchronized audio-video generation — ambient sound, dialogue, and sound effects are generated alongside the video, reducing the need for separate post-production dubbing and sound effect synthesis.
- Up to 4K resolution — output supports 720p, 1080p, and 4k, and the aspect ratio can automatically match the input image or be set to 16:9 or 9:16.
- Controllable output duration and audio — duration can be 4, 6, or 8 seconds, and the audio track can be toggled on or off, making it easy to adjust generation specifications to delivery channels and cost budgets.
- Negative prompts and fixed seeds — use negative_prompt to exclude unwanted elements and seed to reproduce similar generation results.
Capabilities
Image-driven animation generation: Starting from a single image and a prompt of up to 20,000 characters describing the motion, it outputs a 4- to 8-second video clip, ideal for converting existing visual assets directly into dynamic content.
Native audio track generation: Native audio is generated by default; disable generate_audio to get silent video, making it easy to add your own music or voiceover in post-production.
Resolution and aspect ratio control: You can specify 720p, 1080p, or 4k output, and the aspect ratio can automatically follow the input image or be forced to 16:9 or 9:16, supporting both landscape and portrait delivery.
Controllability of results: Describe content to avoid via negative_prompt and fix the random seed via seed, making it easy to maintain consistent style across batch generations or run A/B comparisons.
Use Cases
- Marketing teams turning product images into ad clips — input a static product image and motion description to produce 4K or 1080p landscape video clips for online advertising and website display.
- Social media operators creating portrait dynamic content — use portrait images and prompts to generate 9:16 videos with native sound effects for publishing as material on short-video platforms.
- Film and TV pre-production turning concept art into dynamic previews — generate storyboards or concept design images into dynamic clips to help teams confirm camera movement and atmosphere before formal production.
- Developers batch-generating dynamic assets — pass images and prompts in programmatic workflows and use seed to batch-produce style-consistent video clips for testing or content filling.
Limitations and Selection Advice
The maximum duration per generation is 8 seconds; longer narratives require segmented generation and stitching, and multi-shot continuity still needs manual arrangement. Input images should be 720p or higher and in 16:9 or 9:16, as other ratios will be cropped. Resolution and the audio toggle affect billing, so run low-spec trials before batch generation. If you need to build a scene from scratch rather than drive an existing image, use the text-to-video route in the same family.
Frequently asked questions
View all FAQs →-
What type of video model is Veo 3.1 Text to Video?
It is a pure text-to-video route and does not require an opening image.
-
Which output settings does Veo 3.1 Text to Video support?
4-8 seconds, 720p, 1080p, 4k, and 16:9, 9:16.
-
Can it generate sound or use audio references?
Generated audio enabled by default
-
How is Veo 3.1 Text to Video billed?
Billing follows output duration and the live tier. Resolution, mode, or audio differences are reflected by the page price and task record.
Create a generation task
https://api.hiapi.ai/v1/tasks Headers
AuthorizationstringRequiredAccount API key. Required on every request. Example: Bearer YOUR_HIAPI_API_KEY. Get your API key
Content-TypestringOptionalThe request body is always parsed as JSON; when sent, only application/json (optionally with charset) is accepted — any other value returns 415. Example: application/json.
Idempotency-KeystringOptionalIdempotency key, up to 255 bytes. Retries with the same key from the same account create the task only once; replays return the original taskId.
On network timeouts or client retries, the same key creates the task only once — no double charges (scope: the API key's account). Use a business-unique identifier as the key (e.g. "order-42"); replays return the original taskId, and keys expire 24 hours after the first request. See the Unified Async API overview for the full scenario matrix.
Body
modelstringRequiredCurrent fixed value: veo-3.1/image-to-video
routestringOptionalCurrent fixed value: default
inputobjectRequired
Business parameters for veo-3.1/image-to-video and route default — see the parameter table below.
seedintegerOptionalRandom seed used to make the generation result reproducible; passing the same seed yields consistent output.
promptstringRequiredminLength 1maxLength 20000Text prompt describing how the input image should be animated.
durationintegerRequiredDefault: 8min 4max 8Duration of the generated video (in seconds); the cost increases with duration; default is 8 seconds.
468image_urlstringRequiredURL of the input image to animate; a resolution of 720p or higher and a 16:9 or 9:16 aspect ratio are recommended, as other aspect ratios will be cropped.
resolutionstringRequiredDefault: "720p"Output video resolution; the higher the resolution, the higher the cost; default is 720p.
720p1080p4kaspect_ratiostringOptionalDefault: "auto"Aspect ratio of the output video; default is auto, which follows the aspect ratio of the input image.
auto16:99:16generate_audiobooleanOptionalDefault: trueWhether to generate a native audio track; pricing is higher when enabled; enabled by default.
negative_promptstringOptionalNegative prompt describing content that should be avoided in the generated video.
callbackobjectOptional
Terminal-state notification config. When omitted, no callback is delivered — poll the task yourself. See the callback note below.
Provide callback.url when creating a task and HiAPI POSTs to your service once the task reaches a terminal state — no polling needed. The callback payload mirrors the task detail structure; signature verification, delivery retries and idempotency are documented on the Unified Async API overview page.
urlstringRequiredRequired when callback is present. A POST is sent to this URL once the task reaches a terminal state; must be a valid http(s) URL.
whenstringOptionalDefault: "final"Only final is supported today — notified on both success and fail.
finalstoragestringOptionalDefault: "temp"Artifact storage tier: temp (default, retained about 7 days) or persistent (long-term, billed by size). Insufficient balance or exceeding the storage cap silently downgrades to temp; the effective tier is shown in the task detail response.
temppersistentRequest examples
# Submit an async task; returns a taskId immediately (no waiting for generation)
curl -X POST "https://api.hiapi.ai/v1/tasks" \
-H "Authorization: Bearer $HIAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "veo-3.1/image-to-video",
"input": {
"prompt": "…",
"duration": 8,
"image_url": "…",
"resolution": "720p",
"aspect_ratio": "auto",
"generate_audio": true
}
}' const res = await fetch("https://api.hiapi.ai/v1/tasks", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.HIAPI_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "veo-3.1/image-to-video",
input: {
"prompt": "…",
"duration": 8,
"image_url": "…",
"resolution": "720p",
"aspect_ratio": "auto",
"generate_audio": true
}
}),
});
const task = await res.json();
// { code: 200, message: "success", data: { taskId } } import os, requests
res = requests.post(
"https://api.hiapi.ai/v1/tasks",
headers={"Authorization": f"Bearer {os.environ['HIAPI_API_KEY']}"},
json={
"model": "veo-3.1/image-to-video",
"input": {
"prompt": "…",
"duration": 8,
"image_url": "…",
"resolution": "720p",
"aspect_ratio": "auto",
"generate_audio": True
}
},
)
print(res.json()) # { code, message, data: { taskId } } 200 OK
{
"code": 200,
"message": "success",
"data": {
"taskId": "tk-hiapi-01HZTQ8BX2N3GM3YFK4Z9D7VQR"
}
} 400 Bad Request
{
"code": 400,
"message": "invalid request",
"data": null,
"error_code": "INVALID_REQUEST"
} Get task detail
https://api.hiapi.ai/v1/tasks/:id Response fields
taskIdstringRequiredTask ID, always prefixed with tk-hiapi-.
modelstringRequiredResolved full model name. Tasks submitted with the route parameter return base@route (e.g. gpt-image-2/text-to-image@ext); otherwise identical to the name passed at creation.
routestringOptionalPresent only when the task was submitted with an explicit route parameter; echoes the submitted value.
statusstringRequiredTask status.
queued Queued, not started yet.
handling Being processed.
archiving Processing finished, artifacts being prepared.
success Terminal: completed, artifacts available (output returned).
fail Terminal: failed (error returned).
After submission, check status: success and fail are terminal, everything else is non-terminal. Poll every 1–3 seconds until terminal. On success, download artifacts from output[].url and transfer them before expireAt; pass storage: "persistent" at creation time when long-term retention is needed.
creatednumberRequiredTask creation time (Unix seconds).
completednumberRequiredUnix seconds when the task reached a terminal state; fixed to 0 while not terminal.
outputarrayOptional
Present only when status == success. Artifact list — always an array; a single task may return multiple types at once (e.g. video + first_frame).
Array [ object ]
Array items
urlstringRequiredArtifact URL, directly downloadable.
typestringRequiredCurrent possible values: video, image, audio, first_frame, last_frame, thumbnail; more may be added later.
expireAtnumberRequiredUnix seconds until which the artifact remains accessible; download or transfer before it expires.
errorobjectOptional
Present only when status == fail.
codestringRequiredBusiness error code.
messagestringRequiredError description.
Response examples
Success
{
"code": 200,
"message": "success",
"data": {
"taskId": "tk-hiapi-01HZTQ8BX2N3GM3YFK4Z9D7VQR",
"model": "happyhorse-1-0",
"status": "success",
"created": 1777282033,
"completed": 1777282099,
"output": [
{
"url": "https://cdn.hiapi.ai/tasks/.../video.mp4",
"type": "video",
"expireAt": 1777886899
}
]
}
} Processing (non-terminal)
{
"code": 200,
"message": "success",
"data": {
"taskId": "tk-hiapi-...",
"model": "happyhorse-1-0",
"status": "archiving",
"created": 1777282033,
"completed": 0
}
} Failed
{
"code": 200,
"message": "success",
"data": {
"taskId": "tk-hiapi-...",
"model": "happyhorse-1-0",
"status": "fail",
"created": 1777282033,
"completed": 1777282099,
"error": {
"code": "TASK_FAILED",
"message": "task failed"
}
}
} Articles
View all articles →Related Models
View all models →Same Type
-
Kling 4.0 Kuaishou $0.330 /second -
MiniMax H3 MiniMax $0.072 /second -
Kandinsky 6.0 Pro $1.93 /video -
Gemini Omni Google -- -
FLUX 3 Max Black Forest Labs $0.061 /second -
Kling 3.0 Kuaishou $0.100 /second -
Wan 2.6 Flash Alibaba $0.043 /second -
Veo 3.1 Lite Google $0.060 /second -
Vidu Q4 Preview Vidu $0.051 /second -
FLUX 3 Video Black Forest Labs $0.090 /second -
Veo 3.1 Fast Google $0.170 /second -
Wan 2.7 Video Alibaba $0.100 /second
Same Provider
-
Nano Banana 2 Lite Google $0.033 /image -
Gemini Omni 1.1 Flash Google $0.450 /video -
Lyria 3 Pro Google $0.140 /song -
Lyria 3.5 Google $0.090 /song -
Veo 3.1 Fast Google $0.170 /second -
Gemini Omni Google -- -
Google Virtual Try-On Google $0.107 /image -
Nano Banana Pro Google $0.057 /image -
Veo 3.1 Lite Google $0.060 /second -
Nano Banana 2 Google $0.036 /image -
Imagen 4 Google $0.030 /image -
Gemini 3.1 Flash TTS Google --



