veo3.1-fast
Veo 3.1 Fast (Google) runs fixed-length (8s) async video jobs with 720p/1080p/4K tiers.
Auth: Authorization: Bearer sk-… from the Console. Use this model id exactly in the model field.
Only parameters relevant to veo3.1-fast are listed below.
| Field | Type | Req | Description |
|---|---|---|---|
| model | string | ✓ | veo3.1-fast | veo3.1-quality | veo3.1-lite — all fixed 8s output; billed per second × resolution/audio tier |
| prompt | string | ✓ | Video description |
| resolution | string | — | 720p | 1080p | 4k — or infer from size like 1920x1080 |
| aspect_ratio | string | — | 16:9 | 9:16 (default 16:9) |
| size | string | — | Optional pixel size (1280x720 etc.) or aspect ratio string |
| image_urls / image_url / images | array|string | — | Reference image(s) for image-to-video (max 3). Not supported on veo3.1-lite. |
| generation_type | string | — | frame (first/last frame) | reference (subject consistency) |
| generate_audio | boolean | — | Billing tier only — affects per-second rate. |
| Field | Type | Req | Description |
|---|---|---|---|
| Fixed duration | — | — | All Veo 3.1 tier ids output 8 seconds — do not pass duration or seconds. |
| veo3.1-lite | — | — | Text-to-video only. Do not pass image_urls, images, or reference fields. |
| veo3.1-quality | — | — | Higher visual fidelity tier at premium per-second rates. Supports T2V and I2V like veo3.1-fast. |
curl https://api.lumeapi.site/v1/videos \
-H "Authorization: Bearer $LUMEAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "veo3.1-fast",
"prompt": "Cinematic ocean waves at golden hour",
"resolution": "720p",
"aspect_ratio": "16:9"
}'All requests go to https://api.lumeapi.site/v1 with Authorization: Bearer sk-…
(1) POST /v1/videos → save id from response. (2) GET /v1/videos/{id} every 5–15s until status is completed or failed. (3) On completed, GET /v1/videos/{id}/content to download MP4.
Poll and download with the id returned by POST /v1/videos (e.g. task_Fk6QrnX6…). This is the only task id your client needs.
Poll every 5–15 seconds with back-off. Typical completion: 30s–5min depending on model. Stop after 15–30 minutes if still not completed.
When status=failed, read error.message. Do not call /content. Submit a new POST /v1/videos to retry.
Balance is debited when POST /v1/videos returns 200. Poll until completed or failed before treating the job as successful.
| Status | Meaning | Action |
|---|---|---|
| queued | Job accepted, waiting to start | Keep polling GET /v1/videos/{id} |
| in_progress | Video is being generated | Keep polling; progress may increase |
| completed | Ready to download | GET /v1/videos/{id}/content |
| failed | Generation failed | Read error.message; submit a new job to retry |