Veo 3.1 Fast
veo-3.1-fast/image-to-video
The image-to-video model in the Veo 3.1 series built for fast turnaround, generating picture and audio in sync, suited to finished-content production such as marketing, presentations, and social media
Try veo-3.1-fast/image-to-video
Input
Showcases
View all showcasesOutput
videoPricing
veo-3.1-fast/image-to-video per second
Overview
veo-3.1-fast/image-to-video is an image-to-video route in the Google Veo 3.1 family, called through the unified HiAPI.ai interface. Give it one reference image and a prompt describing the scene, and it extends the still image into a finished clip with native audio. Output resolution can be 720p up to 4k, and duration can be 4, 6, or 8 seconds. Portrait detail and adherence to the prompt are where it is mainly used, making it a good fit for developers who need to produce finished clips quickly without separately handling voiceover and sound effects—for marketing shorts, demos, and social media assets.
Key Highlights
- Video and audio generated in one pass—the video and its native audio track are produced in the same generation, removing the intermediate step of applying separate voiceover and sound-effect tools.
- Adjustable resolution and duration to fit your needs—output supports three resolution tiers (720p, 1080p, 4k) and durations of 4, 6, or 8 seconds, letting you choose flexibly based on output specs and budget.
- Reference image locks the starting frame—the input image serves as the first-frame basis, and the prompt only describes how it should move, making it easier to keep the subject's appearance stable than with text-only generation.
Capabilities
Image-driven video extension: accepts a 16:9 or 9:16 reference image plus a prompt and turns the still frame into a motion clip; other aspect ratios are cropped to fit, and the aspect ratio can also be set manually or follow the input image.
Native audio switch: the generate_audio parameter decides whether an audio track is generated along with the video, on by default; turn it off when you want picture only and plan to do post-production yourself.
Negative prompt constraints: you can additionally fill in negative_prompt to describe content you want to avoid, suppressing unwanted visual elements.
Seed reproducibility: a seed field is provided; with a fixed seed, the same input and prompt can be generated repeatably, which helps with debugging and comparison.
Use Cases
- Marketing teams: product image + selling-point description—turn product or scene images into short videos with sound effects, ready for feed ads, social posts, and landing-page hero areas.
- Content creators: character or scene image + narrative copy—produce short-video material with a voiceover feel, for publishing on short-video platforms or batch-producing serial content.
- Corporate presentations: diagram + explanatory text—turn still frames from reporting materials into motion clips and embed them in slides or website intro pages to strengthen the message.
- Instructional creators: chart or demo image + explanatory description—generate explanatory clips as visual supplements for course or training materials, reducing live-shooting and editing costs.
Limitations and Selection Advice
A single generation is capped at 8 seconds, so longer narratives must be generated in segments and stitched together, with continuity controlled separately for each segment. Reference images must be at least 720p and provided in 16:9 or 9:16, otherwise they will be cropped. Both duration and resolution affect billing, with 4k and enabled audio being higher-cost tiers. This kind of clip is better suited to finished-content output than to high-precision physics or motion simulation; if the need is strict physical simulation or long continuous shots, consider other models or approaches.
Frequently asked questions
View all FAQs →-
Does Veo 3.1 Fast Image to Video require an input image?
Yes. veo-3.1-fast/image-to-video is an image-to-video route. The image establishes the subject and opening composition; the prompt directs motion, camera, and environmental change.
-
Which durations and resolutions does Veo 3.1 Fast Image to Video support?
The current HiAPI contract supports 4s / 6s / 8s at 720p or 1080p or 4k. Check the page controls and API docs for the current options.
-
How is Veo 3.1 Fast Image to Video billed?
Billing follows output duration and the selected tier. The page follows the global display unit, while the successful task record contains the final charge.
-
How can I improve subject consistency?
Use a clear, unobstructed source with a complete composition. Describe the main action and camera first, then name the appearance, material, and background relationships that must remain stable. Validate a short clip first.
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-fast/image-to-video
routestringOptionalCurrent fixed value: default
inputobjectRequired
Business parameters for veo-3.1-fast/image-to-video and route default — see the parameter table below.
seedintegerOptionalRandom seed used to reproduce generation results; value type is integer, randomly generated by the server if not provided.
promptstringRequiredminLength 1maxLength 20000Text prompt describing how the input image should move; value type is string.
durationintegerRequiredDefault: 8min 4max 8Duration of the generated video in seconds; value type is integer, default 8; cost increases with duration.
468image_urlstringRequiredURL of the input image to animate; resolution of 720p or above is recommended, with an aspect ratio of 16:9 or 9:16; other aspect ratios will be cropped to fit.
resolutionstringRequiredDefault: "720p"Output video resolution; value type is string, default 720p; higher resolution costs more.
720p1080p4kaspect_ratiostringOptionalDefault: "auto"Output video aspect ratio; value type is string, default auto, which follows the aspect ratio of the input image.
auto16:99:16generate_audiobooleanOptionalDefault: trueWhether to generate a native audio track; value type is boolean, default true; enabling it costs more.
negative_promptstringOptionalNegative prompt describing content that should be avoided in the generated video; value type is string.
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-fast/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-fast/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-fast/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
-
MiniMax H3 MiniMax $0.072 /second -
Vidu Q4 Preview Vidu $0.051 /second -
HappyHorse 1.0 Alibaba $0.168 /second -
HappyHorse 1.1 Alibaba $0.160 /second -
Gemini Omni Google -- -
Grok Imagine 1.5 Lite xAI $0.029 /second -
Kling 2.5 Kuaishou $0.060 /second -
LTX 2.5 Fast Lightricks $0.086 /second -
Veo 3.1 Lite Google $0.060 /second -
Kling 3.0 Kuaishou $0.100 /second -
FLUX 3 Max Black Forest Labs $0.061 /second -
Vidu Q3 Vidu $0.149 /second
Same Provider
-
Gemini 3.1 Flash TTS Google -- -
Lyria 3.5 Google $0.090 /song -
Veo 3.1 Lite Google $0.060 /second -
Imagen 4 Google $0.030 /image -
Google Virtual Try-On Google $0.107 /image -
Nano Banana 2 Lite Google $0.033 /image -
Gemini Omni 1.1 Flash Google $0.450 /video -
Nano Banana Google $0.021 /image -
Lyria 3 Pro Google $0.140 /song -
Nano Banana Pro Google $0.057 /image -
Gemini Omni Google -- -
Veo 3.1 Google $0.290 /second


