Veo 3.1 Fast API Veo 3.1 API - AI Video Generation APIs

by Google

Veo 3.1 Fast API Veo 3.1 API, developers can access Veo 3.1 for generating videos that accurately depict motion, lighting, and real-world physics. The API leverages Google's DeepMind research to produce videos with remarkable realism, suitable for professional video production and creative applications.

Get API Key
Veo Video API
View in Playground

Models Version

LIMITED TIME OFFER

Get $5 Free Credit on First Payment

No strings attached — add funds and get $5 bonus instantly

Claim Your $5 →

Veo v3.1 Fast Text to Video API Documentation

https://gateway.pixazo.ai/veo31f/v1

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

Veo 3.1 Fast Video Generation Request - Veo 3.1 Fast API

Request Code

POST https://gateway.pixazo.ai/veo31f/v1/veo-3.1-fast/generate HTTP/1.1
Content-Type: application/json
Cache-Control: no-cache
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY

{
  "prompt": "A snow-covered tree gradually transforms as winter melts away, snow dripping from branches as green leaves emerge and colorful flowers bloom around the base, transitioning from a cold white landscape to a vibrant lush green meadow full of life",
  "image": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/f1.png",
  "last_frame": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/f2.png",
  "duration": 8,
  "aspect_ratio": "16:9",
  "resolution": "1080p",
  "negative_prompt": "blurry, low quality, distorted, artifacts, text, watermark",
  "generate_audio": true,
  "seed": 42
}
import requests

url = "https://gateway.pixazo.ai/veo31f/v1/veo-3.1-fast/generate"
headers = {
    "Content-Type": "application/json",
    "Cache-Control": "no-cache",
    "Ocp-Apim-Subscription-Key": "YOUR_SUBSCRIPTION_KEY"
}
data = {
    "prompt": "A snow-covered tree gradually transforms as winter melts away, snow dripping from branches as green leaves emerge and colorful flowers bloom around the base, transitioning from a cold white landscape to a vibrant lush green meadow full of life",
    "image": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/f1.png",
    "last_frame": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/f2.png",
    "duration": 8,
    "aspect_ratio": "16:9",
    "resolution": "1080p",
    "negative_prompt": "blurry, low quality, distorted, artifacts, text, watermark",
    "generate_audio": True,
    "seed": 42
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
const url = 'https://gateway.pixazo.ai/veo31f/v1/veo-3.1-fast/generate';
const headers = {
  'Content-Type': 'application/json',
  'Cache-Control': 'no-cache',
  'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'
};
const data = {
  prompt: 'A snow-covered tree gradually transforms as winter melts away, snow dripping from branches as green leaves emerge and colorful flowers bloom around the base, transitioning from a cold white landscape to a vibrant lush green meadow full of life',
  image: 'https://pub-582b7213209642b9b995c96c95a30381.r2.dev/f1.png',
  last_frame: 'https://pub-582b7213209642b9b995c96c95a30381.r2.dev/f2.png',
  duration: 8,
  aspect_ratio: '16:9',
  resolution: '1080p',
  negative_prompt: 'blurry, low quality, distorted, artifacts, text, watermark',
  generate_audio: true,
  seed: 42
};

fetch(url, {
  method: 'POST',
  headers: headers,
  body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
curl -X POST "https://gateway.pixazo.ai/veo31f/v1/veo-3.1-fast/generate" \
  -H "Content-Type: application/json" \
  -H "Cache-Control: no-cache" \
  -H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY" \
  --data-raw '{
    "prompt": "A snow-covered tree gradually transforms as winter melts away, snow dripping from branches as green leaves emerge and colorful flowers bloom around the base, transitioning from a cold white landscape to a vibrant lush green meadow full of life",
    "image": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/f1.png",
    "last_frame": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/f2.png",
    "duration": 8,
    "aspect_ratio": "16:9",
    "resolution": "1080p",
    "negative_prompt": "blurry, low quality, distorted, artifacts, text, watermark",
    "generate_audio": true,
    "seed": 42
  }'

Output

{
  "request_id": "veo-3-1-fast_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/veo-3-1-fast_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your generate request to receive a POST callback instead of polling.

X-Webhook-URL: https://your-server.com/webhook/callback

Request Parameters - Veo 3.1 Fast Video Generation

Parameter Required Type Description
promptYesstringText prompt describing the desired video content, motion, mood, or style for the generated video.
imageNostringPublicly accessible URL of a reference image to guide the video generation. Used as the starting frame or visual reference.
last_frameNostringPublicly accessible URL of an image to use as the last frame of the video, enabling start-to-end visual transitions.
durationNonumberDuration of the generated video in seconds. Supported values: 5, 6, 8. Default varies by model configuration.
aspect_ratioNostringAspect ratio of the output video. Supported values: "16:9", "9:16", "1:1", "4:3", "3:4".
resolutionNostringResolution of the output video. Supported values: "720p", "1080p".
negative_promptNostringText describing elements to avoid in the generated video (e.g., "blurry, low quality, distorted, artifacts, text, watermark").
generate_audioNobooleanWhen true, generates synchronized audio alongside the video output.
seedNonumberRandom seed for reproducible video generation. Use the same seed to get consistent results across runs.

Example Request

{
  "prompt": "A snow-covered tree gradually transforms as winter melts away, snow dripping from branches as green leaves emerge and colorful flowers bloom around the base, transitioning from a cold white landscape to a vibrant lush green meadow full of life",
  "image": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/f1.png",
  "last_frame": "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/f2.png",
  "duration": 8,
  "aspect_ratio": "16:9",
  "resolution": "1080p",
  "negative_prompt": "blurry, low quality, distorted, artifacts, text, watermark",
  "generate_audio": true,
  "seed": 42
}

Response

{
  "request_id": "veo-3-1-fast_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/veo-3-1-fast_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Typeapplication/json
Cache-Controlno-cache
Ocp-Apim-Subscription-KeyYOUR_SUBSCRIPTION_KEY

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance. Required: $0.01"
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'veo-3-1-fast' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "veo-3-1-fast_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "veo-3-1-fast",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/veo-3-1-fast_019d42ce-ae71-7999-24c9-5d76447ecafb4"

Response (Completed)

{
  "request_id": "veo-3-1-fast_019d42ce-ae71-7999-24c9-5d76447ecafb4",
  "status": "COMPLETED",
  "model_id": "veo-3-1-fast",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/veo-3-1-fast_019d42ce-ae71-7999-24c9-5d76447ecafb4/output.mp4"
    ],
    "media_type": "video/mp4"
  },
  "created_at": "2026-04-01T07:32:03.749Z",
  "updated_at": "2026-04-01T07:32:20.000Z",
  "completed_at": "2026-04-01T07:32:20.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type (video/mp4)
created_atstringWhen request was created
completed_atstring|nullWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

Veo v3.1 Fast Text to Video API Pricing

ResolutionDurationPrice (USD)
with_audio1s$0.15
without_audio1s$0.1
2. Veo v3.1

Veo v3.1 Text to Video API Documentation

https://gateway.pixazo.ai/veo/v1

Authentication

All requests require an API key passed via header.

HeaderTypeRequiredDescription
Ocp-Apim-Subscription-KeystringYesYour API subscription key

Video Generation Request - Veo 3.1 API

Request Code

POST https://gateway.pixazo.ai/veo/v1/veo-3.1/generate
Content-Type: application/json
Ocp-Apim-Subscription-Key: your-subscription-key

{
  "prompt": "A serene lake with mountains in the background at sunset",
  "aspect_ratio": "16:9",
  "duration": 8,
  "resolution": "1080p",
  "generate_audio": true,
  "negative_prompt": "blur, distortion, low quality",
  "webhook": "https://your-server.com/webhook"
}
import requests

url = "https://gateway.pixazo.ai/veo/v1/veo-3.1/generate"
headers = {
    "Content-Type": "application/json",
    "Ocp-Apim-Subscription-Key": "your-subscription-key"
}
data = {
    "prompt": "A serene lake with mountains in the background at sunset",
    "aspect_ratio": "16:9",
    "duration": 8,
    "resolution": "1080p",
    "generate_audio": True,
    "negative_prompt": "blur, distortion, low quality",
    "webhook": "https://your-server.com/webhook"
}

response = requests.post(url, json=data, headers=headers)
print(response.json())
// Node.js example
const response = await fetch('https://gateway.pixazo.ai/veo/v1/veo-3.1/generate', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Ocp-Apim-Subscription-Key': 'your-subscription-key'
  },
  body: JSON.stringify({
    prompt: 'A serene lake with mountains in the background at sunset',
    aspect_ratio: '16:9',
    duration: 8,
    resolution: '1080p',
    generate_audio: true,
    negative_prompt: 'blur, distortion, low quality',
    webhook: 'https://your-server.com/webhook'
  })
});

const data = await response.json();
console.log('Video ID:', data.id);
console.log('Status:', data.status);
curl -X POST https://gateway.pixazo.ai/veo/v1/veo-3.1/generate \
  -H "Content-Type: application/json" \
  -H "Ocp-Apim-Subscription-Key: your-subscription-key" \
  -d '{
    "prompt": "A serene lake with mountains in the background at sunset",
    "aspect_ratio": "16:9",
    "duration": 8,
    "resolution": "1080p",
    "generate_audio": true,
    "negative_prompt": "blur, distortion, low quality",
    "webhook": "https://your-server.com/webhook"
  }'

Output

{
  "request_id": "veo-3-1_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/veo-3-1_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Webhook (Optional)

Add the X-Webhook-URL header to your generate request to receive a POST callback instead of polling.

X-Webhook-URL: https://your-server.com/webhook/callback

Request Parameters - Video Generation Request

Parameter Required Type Description
promptYesstringText description of the video to generate (required)
aspect_ratioNostringVideo aspect ratio: "16:9" or "9:16"
durationNointegerVideo duration in seconds: 4, 6, or 8
resolutionNostringVideo resolution: "720p" or "1080p"
generate_audioNobooleanWhether to generate audio with the video
negative_promptNostringWhat to exclude from the generated video
imageNostringInput image URL for image-to-video generation
last_frameNostringEnding image URL for interpolation (requires image)
reference_imagesNoarray1-3 reference images for subject-consistent generation (R2V)
seedNointegerRandom seed for reproducible results (optional)
webhookNostringWebhook URL for completion notifications
webhook_events_filterNoarrayEvent types to receive: ["start", "completed"]

Example Request

{
  "prompt": "A serene lake with mountains in the background at sunset",
  "aspect_ratio": "16:9",
  "duration": 8,
  "resolution": "1080p",
  "generate_audio": true,
  "negative_prompt": "blur, distortion, low quality",
  "webhook": "https://your-server.com/webhook"
}

Response

{
  "request_id": "veo-3-1_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "QUEUED",
  "polling_url": "https://gateway.pixazo.ai/v2/requests/status/veo-3-1_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

Request Headers

Header Value
Content-Typeapplication/json
Ocp-Apim-Subscription-KeyYour subscription key

Response Handling

Common status codes.

CodeMeaning
202Accepted — Request queued
Bad Request
401Unauthorized
402Insufficient Balance
403Forbidden
Too Many Requests
500Internal Server Error

Error Responses

Queue system errors and model validation errors.

Queue System Errors

// 402 — Insufficient balance
{
  "error": "Insufficient Balance",
  "message": "Your wallet does not have enough balance."
}
// 400 — Model not found
{
  "error": "Model not found",
  "message": "Model 'veo-3-1' not found or is disabled"
}

Error via Status/Webhook

{
  "request_id": "veo-3-1_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "ERROR",
  "model_id": "veo-3-1",
  "error": "Description of the error",
  "output": null
}

Retrieving Results

Poll the universal status endpoint to check progress and retrieve results.

Endpoint

GET https://gateway.pixazo.ai/v2/requests/status/{request_id}
Ocp-Apim-Subscription-Key: YOUR_API_KEY

cURL Example

curl -H "Ocp-Apim-Subscription-Key: YOUR_API_KEY" \
  "https://gateway.pixazo.ai/v2/requests/status/veo-3-1_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Response (Completed)

{
  "request_id": "veo-3-1_019dxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "status": "COMPLETED",
  "model_id": "veo-3-1",
  "error": null,
  "output": {
    "media_url": [
      "https://pub-582b7213209642b9b995c96c95a30381.r2.dev/v1/veo-3-1_019dxxxx-xxxx/output.ext"
    ],
    "media_type": "application/octet-stream"
  },
  "created_at": "2026-03-31T10:00:00.000Z",
  "updated_at": "2026-03-31T10:00:15.000Z",
  "completed_at": "2026-03-31T10:00:15.000Z"
}

Response Fields

FieldTypeDescription
request_idstringUnique request identifier
statusstringQUEUED, PROCESSING, COMPLETED, FAILED, or ERROR
model_idstringModel that processed the request
errorstring|nullError message if failed
output.media_urlarrayURLs to generated media (R2 CDN)
output.media_typestringMIME type of the output
created_atstringWhen request was created
completed_atstring|nullWhen request completed
polling_urlstringStatus URL (initial response only)

Status Values

StatusDescription
QUEUEDRequest accepted, waiting to be processed
PROCESSINGBeing processed by the model
COMPLETEDDone — output contains the result
FAILEDFailed — check error field
ERRORSystem error — not charged

Status Flow

QUEUED → PROCESSING → COMPLETED
                    → FAILED
                    → ERROR

Typical Workflow

  1. Send a generate request to the API endpoint
  2. Save the request_id from the response
  3. Poll every 5-10 seconds: GET /v2/requests/status/{request_id}
  4. When status is "COMPLETED", download from output.media_url

Tip: Use X-Webhook-URL header to get a callback instead of polling.

Veo v3.1 Text to Video API Pricing

ResolutionDurationPrice (USD)
720p4s$1.8
720p6s$2.7
720p8s$3.6
1080p4s$2.4
1080p6s$3.6
1080p8s$4.8