Google's video model: fixed 8-second clips, audio generated with the picture, first-frame or first-and-last-frame reference images. Three models behind one endpoint — the standard tier veo-3.1 at true 1080p for $1.00 a clip (69% below Google's $3.20), and the Fast tiers at $0.07 in 720p or 1080p. All of them use the same create-then-poll async flow; you only change the model field.
| Model / model value | Resolution | Price / 8s clip | Notes |
|---|---|---|---|
VEO 3.1 (Standard) veo-3.1 | 1080p | $1.00 | Google's standard tier — the highest-quality VEO here; better detail, motion and prompt adherence than Fast. Google charges $3.20 for the same clip. |
VEO 3.1 Fast Full HD veo-3.1-fast-fhd | 1080p | $0.07 | Fast tier, the default for drafts and volume; start-end transitions run here too. v3.1-fast-start-end is its alias with a backup channel, $0.10. |
VEO 3.1 Fast HD veo-3.1-fast-hd | 720p | $0.07 | Fast tier at 720p — only when 720p is enough and you want the quickest turnaround. |
How to choose: draft and batch in veo-3.1-fast-fhd — it takes the same prompt and images as the standard tier — and switch model to veo-3.1 for the finish. No tier outputs 4K. The older names veo3.1-4k, veo-3.1-components, veo_3_1-4K and friends still work; they are all aliases of veo-3.1-fast-fhd and are billed at $0.07.
POST /api/v1/video/generations — async: create, then poll the same endpoint for the result.
# Step 1: Create task (standard tier; add "images" for a first frame or first + last frame)
curl -X POST https://api.apimodels.app/v1/video/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "veo-3.1",
"prompt": "Aerial drone shot of a coastal sunset, waves crashing on rocks",
"aspect_ratio": "16:9",
"images": ["https://example.com/first-frame.jpg"]
}'
# Step 2: Poll status
curl "https://api.apimodels.app/v1/video/generations?task_id=TASK_ID" \
-H "Authorization: Bearer YOUR_API_KEY"| Field | Required | Type | Description |
|---|---|---|---|
| model | Yes | string | veo-3.1 (standard) / veo-3.1-fast-fhd / veo-3.1-fast-hd; v3.1-fast-start-end is an alias of fast-fhd |
| prompt | Yes | string | Text description of the video to generate |
| aspect_ratio | No | string | "16:9" (default) or "9:16" |
| images | No | array | Reference image URLs: [first frame] or [first frame, last frame]. Omit for plain text-to-video |
| callback_url | No | string | Webhook URL called when task completes |
There is no duration or size parameter: every clip is 8 seconds and resolution is fixed by the model (720p on fast-hd, 1080p on the others). If you send them they are ignored.
Position in the images array is the meaning: pass 1 image for the first frame, 2 images for first + last frame. For a "go from this shot to that shot" transition, put the opening frame at [0] and the closing frame at [1]. All three models support it at their normal price.
For batch start-end jobs where success rate matters most, use v3.1-fast-start-end: an alias of veo-3.1-fast-fhd at $0.10 a clip that retries on a backup channel when the primary fails.
Creating a task returns a taskId, with state starting at pending:
{
"code": 200,
"msg": "success",
"data": {
"taskId": "clxxx...",
"state": "pending"
}
}Poll GET /api/v1/video/generations?task_id= until state is completed, then read resultUrls[0]:
{
"code": 200,
"msg": "success",
"data": {
"taskId": "clxxx...",
"state": "completed",
"resultUrls": ["https://cdn.example.com/video.mp4"],
"createTime": 1705123450000,
"completeTime": 1705123500000
}
}Three models on one endpoint at apimodels.app: veo-3.1, the standard tier at true 1080p, is $1.00 per 8-second clip — Google charges $0.40 per second, $3.20 for the same clip. veo-3.1-fast-hd (720p) and veo-3.1-fast-fhd (1080p) are $0.07 per clip. You switch by changing the model field, and you are charged only when a generation succeeds.
Position in the images array is the meaning: one URL is the first frame, two URLs are the first frame [0] and the last frame [1]. POST them with the prompt to /api/v1/video/generations; both veo-3.1 and veo-3.1-fast-fhd render the 8-second transition at their normal price. v3.1-fast-start-end is an alias of the Fast 1080p model at $0.10 with a backup channel behind it, for batch jobs where success rate matters most.
Yes. VEO 3.1 generates the audio track together with the picture on every tier here, and the MP4 you download already carries it. There is no separate parameter and no second request.
Every clip is 8 seconds. Resolution is fixed per model — 720p on veo-3.1-fast-hd, 1080p on veo-3.1-fast-fhd and veo-3.1 — so there is no size parameter; aspect_ratio is 16:9 or 9:16. None of the models outputs 4K: the older veo3.1-4k and veo-3.1-components names still work as aliases of veo-3.1-fast-fhd and are billed at $0.07.
It is asynchronous. POST /api/v1/video/generations with an Authorization: Bearer key, a model and a prompt; the response carries data.taskId with state "pending". Then poll GET /api/v1/video/generations?task_id=... every 5-10 seconds until state is "completed" and read data.resultUrls[0]; on "failed" the reason is in data.failMsg. For production, pass callback_url and we POST to you when the task reaches a terminal state. Result videos are kept for 7 days.
Draft in veo-3.1-fast-fhd: 1080p for $0.07, fast to render, and it takes the same prompt and images as the standard tier. Finish in veo-3.1 when detail, motion and prompt adherence matter — it is Google's standard tier at $1.00, still 69% below going direct. Use veo-3.1-fast-hd only when 720p is enough and you want the quickest turnaround.