Veo 3.1 API
Veo 3.1 API with VezAPI. Explore model capabilities, credit pricing, request parameters, and integration examples.
Veo 3.1 API documentation
Integrate Veo 3.1 with your VezAPI key. The operations below share the same authentication and account balance.
https://api.vezapi.comSend Authorization: Bearer YOUR_VEZAPI_KEY. Use a unique Idempotency-Key for each submission; reuse it only when checking the same request.
extend-video
/api/v1/jobs/createTaskModel IDs: veo/extend
| Parameter | Type | Description & constraints |
|---|---|---|
modelrequired | string | The outer model name, fixed to veo/extend Default: |
callBackUrloptional | string | Callback URL when the task is completed (optional). Highly recommended for use in production environments. - When the video extension is completed, the system will send a POST request containing the task status and results to this URL - The callback includes the generated video URL, task information, etc. - Your callback endpoint should accept a POST request with a JSON payload containing the video results - For detailed callback format and implementation guidelines, see [Video Generation Callbacks]([see VezAPI documentation]) - Alternatively, poll Get Task Details (/market/common/get-task-detail). - To ensure callback security, please refer to the [Webhook Verification Guide](/common-api/webhook-verification) for signature verification implementation |
inputrequired | object | |
input.task_idrequired | string | The task ID of the original video generation. Must be a valid task ID returned by the video generation API. |
input.promptrequired | string | A text prompt describing the content of the extended video. It should detail how you want the video to be extended, including actions, scene changes, styles, etc. |
input.seedsoptional | integer | A random seed parameter that controls the randomness of the generated content. Range: 10000-99999. The same seed will generate similar video content, while different seeds will generate different video content. If not specified, the system will automatically assign a random seed.
|
input.modeloptional | string | Extension tier: "fast" (default), "quality" or "lite". Billed per extension at the chosen tier. Values: Default: |
input.watermarkoptional | string | Watermark text (optional). If provided, a watermark will be added to the generated video. |
Request example
curl -X POST 'https://api.vezapi.com/api/v1/jobs/createTask' \
-H 'Authorization: Bearer YOUR_VEZAPI_KEY' \
-H 'Idempotency-Key: your-unique-request-id' \
-H 'Content-Type: application/json' \
-d '{
"model": "veo/extend",
"callBackUrl": "https://example.com/input.png",
"input": {
"task_id": "veo_task_abcdef123456",
"prompt": "The dog continues running through the park, jumping over obstacles and playing with other dogs",
"seeds": 12345,
"watermark": "MyBrand"
}
}'Responses and errors
HTTP 200
Request successful
| Parameter | Type | Description & constraints |
|---|---|---|
codeoptional | integer | Status code of the request. The HTTP status is 200 even when the request fails, so always check this field: 200 means success; any other value means the request failed and msg describes the reason. Common values: 401 invalid or missing API key; 402 insufficient credits; 429 rate limit exceeded; 422 or 500 the request could not be processed (read msg and check your parameters before retrying). Values: |
msgoptional | string | Response message |
dataoptional | object | |
data.taskIdoptional | string | Task ID, can be used with [Get Task Details](/market/common/get-task-detail) endpoint to query task status |
HTTP 500
Server error.
| Parameter | Type | Description & constraints |
|---|---|---|
coderequired | integer | Response status code - **200**: Success - Request has been processed successfully - **401**: Unauthorized - Authentication credentials are missing or invalid - **402**: Insufficient Credits - Account does not have enough credits to perform the operation - **404**: Not Found - The requested resource or endpoint does not exist - **408**: Timeout - No result has been returned for over 10 minutes. - **422**: Validation Error - The request parameters failed validation checks - **429**: Rate Limited - Request limit has been exceeded for this resource - **455**: Service Unavailable - System is currently undergoing maintenance - **500**: Server Error - An unexpected error occurred while processing the request - **501**: Generation Failed - Content generation task failed - **505**: Feature Disabled - The requested feature is currently disabled |
msgrequired | string | Response message, error description when failed |
datarequired | object |
generate-veo-3-video
/api/v1/jobs/createTaskModel IDs: veo-3-1
| Parameter | Type | Description & constraints |
|---|---|---|
modelrequired | string | Must be "veo-3-1". Use input.model to choose the Fast / Lite / Quality tier. Values: Default: |
callBackUrloptional | string | Completion callback URL for receiving video generation status updates. - Optional but recommended for production use - System will POST task completion status to this URL when the video generation is completed - Callback will include task results, video URLs, and status information - Your callback endpoint should accept POST requests with JSON payload - For detailed callback format and implementation guide, see [Callback Documentation]([see VezAPI documentation]) - Alternatively, poll Get Task Details (/market/common/get-task-detail). - To ensure callback security, see [Webhook Verification Guide](/common-api/webhook-verification) for signature verification implementation |
inputrequired | object | |
input.promptrequired | string | Text prompt describing the desired video content. Required for all generation modes. - Should be detailed and specific in describing video content - Can include actions, scenes, style and other information - For image-to-video, describe how you want the image to come alive |
input.modeloptional | string | Veo 3.1 tier: "veo3_fast" (default), "veo3_lite" or "veo3" (Quality). The top-level model stays "veo-3-1". REFERENCE_2_VIDEO supports veo3_fast and veo3_lite. Values: Default: |
input.image_urlsoptional | array | Image URLs. FIRST_AND_LAST_FRAMES_2_VIDEO: 1 image (first frame) or 2 images (first + last frame). REFERENCE_2_VIDEO: 1–3 reference images, 8-second duration only. |
input.generation_typeoptional | string | Video generation mode (optional). Specifies different video generation approaches: - **TEXT_2_VIDEO**: Text-to-video - Generate videos using only text prompts - **FIRST_AND_LAST_FRAMES_2_VIDEO**: First and last frames to video - Flexible image-to-video generation mode - 1 image: Generate video based on the provided image - 2 images: First image as first frame, second image as last frame, generating transition video - **REFERENCE_2_VIDEO**: Reference-to-video - Generate videos based on reference images, requires 1-3 images in imageUrls (minimum 1, maximum 3) **Important Notes**: - REFERENCE_2_VIDEO mode currently supports the veo3_fast and veo3_lite models. - If not specified, the system will automatically determine the generation mode based on whether imageUrls are provided Values: |
input.aspect_ratiooptional | string | Video aspect ratio. Specifies the dimension ratio of the generated video. Available options: - 16:9: Landscape video format. - 9:16: Portrait video format, suitable for mobile short videos - Auto: In auto mode, the video will be automatically center-cropped based on whether your uploaded image is closer to 16:9 or 9:16. Default value is 16:9. Values: Default: |
input.enable_fallbackoptional | boolean | Deprecated. Remove it from requests. Default: |
input.enable_translationoptional | boolean | Optional. When true, the prompt is translated to English before generation. |
input.watermarkoptional | string | Watermark text. - Optional parameter - If provided, a watermark will be added to the generated video |
input.resolutionoptional | string | Output resolution: 720p (default), 1080p or 4k. For 1080p and 4k, the video URL is in resultJson.data.result_urls (the 720p version is in data.origin_urls). Controls the pixel dimensions of the generated video. Higher resolution results in greater clarity and detail, while lower resolution allows for faster generation. Values: Default: |
input.durationoptional | integer | The duration of the generated video, in seconds. Optional values are 4, 6, 8. **Important Note**: - The REFERENCE_2_VIDEO mode currently only supports a duration of 8 seconds. Values: Default: |
Request example
curl -X POST 'https://api.vezapi.com/api/v1/jobs/createTask' \
-H 'Authorization: Bearer YOUR_VEZAPI_KEY' \
-H 'Idempotency-Key: your-unique-request-id' \
-H 'Content-Type: application/json' \
-d '{
"model": "veo-3-1",
"callBackUrl": "https://example.com/input.png",
"input": {
"prompt": "A dog playing in a park",
"image_urls": [
"https://example.com/input.png",
"https://example.com/input.png"
],
"watermark": "MyBrand",
"aspect_ratio": "16:9",
"enable_translation": true,
"generation_type": "REFERENCE_2_VIDEO"
}
}'Responses and errors
HTTP 200
Request successful
| Parameter | Type | Description & constraints |
|---|---|---|
codeoptional | integer | Status code of the request. The HTTP status is 200 even when the request fails, so always check this field: 200 means success; any other value means the request failed and msg describes the reason. Common values: 401 invalid or missing API key; 402 insufficient credits; 429 rate limit exceeded; 422 or 500 the request could not be processed (read msg and check your parameters before retrying). Values: |
msgoptional | string | Error message when code != 200 |
dataoptional | object | |
data.taskIdoptional | string | Task ID, can be used with [Get Task Details](/market/common/get-task-detail) endpoint to query task status |
HTTP 500
Server error.
| Parameter | Type | Description & constraints |
|---|---|---|
coderequired | integer | Response status code - **200**: Success - Request has been processed successfully - **401**: Unauthorized - Authentication credentials are missing or invalid - **402**: Insufficient Credits - Account does not have enough credits to perform the operation - **404**: Not Found - The requested resource or endpoint does not exist - **408**: Timeout - No result has been returned for over 10 minutes. - **422**: Validation Error - The request parameters failed validation checks - **429**: Rate Limited - Request limit has been exceeded for this resource - **455**: Service Unavailable - System is currently undergoing maintenance - **500**: Server Error - An unexpected error occurred while processing the request - **501**: Generation Failed - Content generation task failed - **505**: Feature Disabled - The requested feature is currently disabled |
msgrequired | string | Response message, error description when failed |
datarequired | object |
get-veo-3-1080-p-video
/api/v1/jobs/createTaskModel IDs: veo/get-1080p-video
| Parameter | Type | Description & constraints |
|---|---|---|
modelrequired | string | Model name; the fixed value here is veo/get-1080p-video. |
callBackUrloptional | string | Callback URL for task completion notifications. Optional parameter. If provided, the system will send a POST request to this URL when the task completes, whether it succeeds or fails. If omitted, no callback notification will be sent. |
inputrequired | object | |
input.taskIdrequired | string | taskId |
input.indexoptional | string | video index |
Request example
curl -X POST 'https://api.vezapi.com/api/v1/jobs/createTask' \
-H 'Authorization: Bearer YOUR_VEZAPI_KEY' \
-H 'Idempotency-Key: your-unique-request-id' \
-H 'Content-Type: application/json' \
-d '{
"model": "veo/get-1080p-video",
"input": {
"taskId": "Your prompt"
}
}'Responses and errors
HTTP 200
Request successful
| Parameter | Type | Description & constraints |
|---|---|---|
codeoptional | integer | Status code of the request. The HTTP status is 200 even when the request fails, so always check this field: 200 means success; any other value means the request failed and msg describes the reason. Common values: 401 invalid or missing API key; 402 insufficient credits; 429 rate limit exceeded; 422 or 500 the request could not be processed (read msg and check your parameters before retrying). If taskId does not exist or the source task failed, the request returns a non-200 code; retrying will not help. Values: |
msgoptional | string | Error message when code != 200 |
dataoptional | object | |
data.resultUrloptional | string | 1080P high-definition video download URL |
HTTP 500
Server error.
| Parameter | Type | Description & constraints |
|---|---|---|
coderequired | integer | Response status code - **200**: Success - Request has been processed successfully - **401**: Unauthorized - Authentication credentials are missing or invalid - **402**: Insufficient Credits - Account does not have enough credits to perform the operation - **404**: Not Found - The requested resource or endpoint does not exist - **408**: Timeout - No result has been returned for over 10 minutes. - **422**: Validation Error - The request parameters failed validation checks - **429**: Rate Limited - Request limit has been exceeded for this resource - **455**: Service Unavailable - System is currently undergoing maintenance - **500**: Server Error - An unexpected error occurred while processing the request - **501**: Generation Failed - Content generation task failed - **505**: Feature Disabled - The requested feature is currently disabled |
msgrequired | string | Response message, error description when failed |
datarequired | object |
get-veo-3-4k-video
/api/v1/jobs/createTaskModel IDs: veo/get-4k-video
| Parameter | Type | Description & constraints |
|---|---|---|
modelrequired | string | Fixed: veo/get-4k-video. Default: |
callBackUrloptional | string | The URL to receive 4K video generation task completion updates. Optional but recommended for production use. - System will POST task status and results to this URL when 4K video generation completes - Callback includes generated video URLs, media IDs, and related information - Your callback endpoint should accept POST requests with JSON payload containing results - Alternatively, poll Get Task Details (/market/common/get-task-detail). - To ensure callback security, see [Webhook Verification Guide](/common-api/webhook-verification) for signature verification implementation |
inputrequired | object | |
input.task_idrequired | string | Task ID |
input.indexoptional | integer | video index Default: |
Request example
curl -X POST 'https://api.vezapi.com/api/v1/jobs/createTask' \
-H 'Authorization: Bearer YOUR_VEZAPI_KEY' \
-H 'Idempotency-Key: your-unique-request-id' \
-H 'Content-Type: application/json' \
-d '{
"model": "veo/get-4k-video",
"input": {
"task_id": "veo_task_abcdef123456"
}
}'Responses and errors
HTTP 200
Request successful
| Parameter | Type | Description & constraints |
|---|---|---|
codeoptional | integer | Status code of the request. The HTTP status is 200 even when the request fails, so always check this field: 200 means success; any other value means the request failed and msg describes the reason. Common values: 401 invalid or missing API key; 402 insufficient credits; 429 rate limit exceeded; 422 or 500 the request could not be processed (read msg and check your parameters before retrying). If taskId does not exist or the source task failed, the request returns a non-200 code; retrying will not help. Values: |
msgoptional | string | Error message when code != 200 |
dataoptional | object | |
data.taskIdoptional | string | Task ID, can be used with [Get Task Details](/market/common/get-task-detail) endpoint to query task status |
data.resultUrlsoptional | array | Generated 4K video URLs |
data.imageUrlsoptional | array | Related thumbnail or preview image URLs |
HTTP 500
Server error.
| Parameter | Type | Description & constraints |
|---|---|---|
coderequired | integer | Response status code - **200**: Success - Request has been processed successfully - **401**: Unauthorized - Authentication credentials are missing or invalid - **402**: Insufficient Credits - Account does not have enough credits to perform the operation - **404**: Not Found - The requested resource or endpoint does not exist - **408**: Timeout - No result has been returned for over 10 minutes. - **422**: Validation Error - The request parameters failed validation checks - **429**: Rate Limited - Request limit has been exceeded for this resource - **455**: Service Unavailable - System is currently undergoing maintenance - **500**: Server Error - An unexpected error occurred while processing the request - **501**: Generation Failed - Content generation task failed - **505**: Feature Disabled - The requested feature is currently disabled |
msgrequired | string | Response message, error description when failed |
datarequired | object |
Task status and callbacks
For asynchronous tasks, keep the returned taskId. Query GET /api/v1/jobs/recordInfo?taskId=... or provide callBackUrl when creating the task. Only the account that created a task can access it or derive new resources from it.
A timeout can mean the submission was accepted. Inspect the existing request in your dashboard; do not create another task automatically. Callback delivery is retried and may arrive more than once. Deduplicate with X-VezAPI-Event-Id.
Files, logs and billing
Generated media normally follows a 14-day provider lifetime; uploaded files expire after 24 hours. Save the files you need before expiration. VezAPI streams registered files without keeping a permanent media library. Request logs are retained for two calendar months.
Credits are reserved before submission. Final deductions match actual discounted consumption one for one. Unknown usage pauses new paid requests. If available funds cannot cover final usage while protecting other reservations, settlement stays pending until funded; model usage cannot make the wallet negative. Time-based inputs require server-side metadata reads; a failed read prevents submission.
Send a request using your VezAPI key. Successful generations use your account credits.
/api/v1/jobs/createTaskYour response will appear here.
Veo 3.1 API pricing
Rates below are reference estimates; final deductions equal actual discounted consumption, one for one. At the standard pack rate, 1,000 credits ≈ $10. Larger packs reduce the effective credit price.
| Specification | Credits | Unit | USD reference |
|---|---|---|---|
| Google veo 3.1, reference-to-video, Lite-4k | 150 | per video | $1.5 |
| Google veo 3.1, reference-to-video, Lite-1080p | 35 | per video | $0.35 |
| Google veo 3.1, reference-to-video, Lite-720p | 30 | per video | $0.3 |
| Google veo 3.1, reference-to-video, Fast-4k | 180 | per video | $1.8 |
| Google veo 3.1, reference-to-video, Fast-1080p | 65 | per video | $0.65 |
| Google veo 3.1, Extend, Lite | 30 | per video | $0.3 |
| Google veo 3.1, text-to-video, Quality-4K | 370 | per video | $3.7 |
| Google veo 3.1, image-to-video, Quality-4K | 370 | per video | $3.7 |
| Google veo 3.1, text-to-video, Quality-1080p | 255 | per video | $2.55 |
| Google veo 3.1, image-to-video, Quality-1080p | 255 | per video | $2.55 |
| Google veo 3.1, text-to-video, Quality-720p | 250 | per video | $2.5 |
| Google veo 3.1, image-to-video, Quality-720p | 250 | per video | $2.5 |
| Google veo 3.1, text-to-video, Fast-4K | 180 | per video | $1.8 |
| Google veo 3.1, image-to-video, Fast-4K | 180 | per video | $1.8 |
| Google veo 3.1, text-to-video, Fast-1080p | 65 | per video | $0.65 |
| Google veo 3.1, image-to-video, Fast-1080p | 65 | per video | $0.65 |
| Google veo 3.1, text-to-video, Fast-720p | 60 | per video | $0.6 |
| Google veo 3.1, image-to-video, Fast-720p | 60 | per video | $0.6 |
| Google veo 3.1, text-to-video, Lite-4K | 150 | per video | $1.5 |
| Google veo 3.1, image-to-video, Lite-4K | 150 | per video | $1.5 |
| Google veo 3.1, text-to-video, Lite-1080p | 35 | per video | $0.35 |
| Google veo 3.1, image-to-video, Lite-1080p | 35 | per video | $0.35 |
| Google veo 3.1, text-to-video, Lite-720p | 30 | per video | $0.3 |
| Google veo 3.1, image-to-video, Lite-720p | 30 | per video | $0.3 |
| Google veo 3.1, Extend, Quality | 250 | per video | $2.5 |
| Google veo 3.1, Extend, Fast | 60 | per video | $0.6 |
| Google veo 3.1, Get 1080P Video | 5 | per video | $0.05 |
| Google veo 3.1, Get 4K Video | 120.0 | per video | $1.2 |
| Google veo 3.1, reference-to-video, Fast-720p | 60.0 | per video | $0.6 |