ModelsPricingEnterprise
500+ AI Model API, All In One API.Just In CometAPI
Models API
Developer
Quick StartDocumentationAPI Dashboard
Company
About usEnterprise
Resources
AI ModelsBlogChangelogSupport
Terms of ServicePrivacy Policy
© 2026 CometAPI · All rights reserved
Home/Models/Google/Veo 3.1
G

Veo 3.1

Per Second:$0.0625
Veo 3.1 is Google’s incremental-but-significant update to its Veo text-and-image→video family, adding richer native audio, longer and more controllable video outputs, and finer editing and scene-level controls.
New
Commercial Use
Playground
Overview
Features
Pricing
API
Versions

Core features

Veo 3.1 focuses on practical content creation features:

  • Native audio generation (dialogue, ambient sound, SFX) integrated in outputs. Veo 3.1 generates native audio (dialogue + ambience + SFX) aligned to the visual timeline; the model aims to preserve lip sync and audio–visual alignment for dialogue and scene cues.
  • Longer outputs (support for up to ~60 seconds / 1080p versus Veo 3’s very short clips,8s), and multi-prompt multi-shot sequences for narrative continuity.
  • Scene Extension and First/Last Frame modes that extend or interpolate footage between key frames.
  • Object insertion and (coming) object removal and editing primitives inside Flow.

Each bullet above is designed to reduce manual VFX work: audio and scene continuity are now first-class outputs rather than afterthoughts.

Technical details (model behavior & inputs)

Model family & variants: Veo belongs to Google’s Veo-3 family; the preview model ID is typically veo3.1-pro; veo3.1 (CometAPI doc). It accepts text prompts, image references (single frame or sequences), and structured multi-prompt layouts for multi-shot generation.

Resolution & duration: Preview documentation describes outputs at 720p/1080p with options for longer durations (up to ~60s in certain preview settings) and higher fidelity than earlier Veo variants.

Aspect ratios: 16:9 (supported) and 9:16 (supported except in some reference-image flows).

Prompt language: English (preview).

API limits: typical preview limits include max 10 API requests/min per project, max 4 videos per request, and video lengths selectable among 4, 6, or 8 seconds (reference-image flows support 8s).

Benchmark performance

Google’s internal and publicly summarized evaluations report strong preference for Veo 3.1 outputs across human rater comparisons on metrics such as text alignment, visual quality, and audio–visual coherence (text→video and image→video tasks).

Veo 3.1 achieved state-of-the-art results on internal human-rater comparisons across several objective axes — overall preference, prompt alignment (text→video and image→video), visual quality, audio-video alignment, and “visually realistic physics” on benchmark datasets such as MovieGenBench and VBench.

Limitations & safety considerations

Limitations:

  • Artifacts & inconsistency: despite improvements, certain lighting, fine-grained physics, and complex occlusions can still yield artifacts; image→video consistency (especially over long durations) is improved but not perfect.
  • Misinformation / deepfake risk: richer audio + object insertion/removal increases misuse risk (realistic fake audio and extended clips). Google notes mitigations (policy, safeguards) and earlier Veo launches referenced watermarking/SynthID to aid provenance; however technical safeguards do not eliminate misuse risk.
  • Cost & throughput constraints: high-resolution, long videos are computationally expensive and currently gated in a paid preview—expect higher latency and cost compared with image models. Community posts and Google forum threads discuss availability windows and fallback strategies.

Safety controls: Veo3.1 has integrated content policies, watermarking/synthID signaling in earlier Veo releases, and preview access controls; customers are advised to follow platform policy and implement human review for high-risk outputs.

Practical use cases

  • Rapid prototyping for creatives: storyboards → multi-shot clips and animatics with native dialogue for early creative review.
  • Marketing & short form content: 15–60s product spots, social clips, and concept teasers where speed matters more than perfect photorealism.
  • Image→video adaptation: turning illustrations, characters, or two frames into smooth transitions or animated scenes via First/Last Frame and Scene Extension.
  • Tooling augmentation: integrated into Flow for iterative editing (object insertion/removal, lighting presets) that reduces manual VFX passes.

Comparison with other leading models

Veo 3.1 vs Veo 3 (predecessor): Veo 3.1 focuses on improved prompt adherence, audio quality, and multi-shot consistency — incremental but impactful updates aimed at reducing artifacts and improving editability.

Veo 3.1 vs OpenAI Sora 2: tradeoffs reported in press: Veo 3.1 emphasizes longer-form narrative control, integrated audio, and Flow editing integration; Sora 2 (when compared in press) focuses on different strengths (speed, different editing pipelines). TechRadar and other outlets frame Veo 3.1 as Google’s targeted competitor to Sora 2 for narrative and longer video support. Independent side-by-side testing remains limited.

Features for Veo 3.1

Explore the key features of Veo 3.1, designed to enhance performance and usability. Discover how these capabilities can benefit your projects and improve user experience.

Pricing for Veo 3.1

Explore competitive pricing for Veo 3.1, designed to fit various budgets and usage needs. Our flexible plans ensure you only pay for what you use, making it easy to scale as your requirements grow. Discover how Veo 3.1 can enhance your projects while keeping costs manageable.
Comet Price (USD / M Tokens)Official Price (USD / M Tokens)Discount
Per Second:$0.0625
Per Second:$0.078125
-20%

Sample code and API for Veo 3.1

Access comprehensive sample code and API resources for Veo 3.1 to streamline your integration process. Our detailed documentation provides step-by-step guidance, helping you leverage the full potential of Veo 3.1 in your projects.
Python
JavaScript
Curl
import os
import time
import requests

# Get your CometAPI key from https://api.cometapi.com/console/token, and paste it here
COMETAPI_KEY = os.environ.get("COMETAPI_KEY") or "<YOUR_COMETAPI_KEY>"
BASE_URL = "https://api.cometapi.com/veo/v1/video"

# Create video generation task
create_response = requests.post(
    f"{BASE_URL}/create",
    headers={
        "Authorization": COMETAPI_KEY,
        "Content-Type": "application/json",
    },
    json={
        "prompt": "An orange cat flying in the blue sky with white clouds, sunlight pouring onto its fur, creating a beautiful and dreamlike scene",
        "model": "veo3.1",
        "enhance_prompt": True,
    },
)

task = create_response.json()
task_id = task["id"]
print(f"Task created: {task_id}")
print(f"Status: {task['status']}")

# Poll until video is ready
while True:
    query_response = requests.get(
        f"{BASE_URL}/query/{task_id}",
        headers={
            "Authorization": f"Bearer {COMETAPI_KEY}",
        },
    )

    result = query_response.json()
    status = result["data"]["status"]
    progress = result["data"].get("progress", "")

    print(f"Checking status... {status} {progress}")

    if status == "SUCCESS" or result["data"]["data"]["status"] == "completed":
        video_url = result["data"]["data"]["video_url"]
        print(f"
Video URL: {video_url}")
        break
    elif status == "FAILED":
        print(f"Failed: {result['data'].get('fail_reason', 'Unknown error')}")
        break

    time.sleep(10)

Python Code Example

import os
import time
import requests

# Get your CometAPI key from https://api.cometapi.com/console/token, and paste it here
COMETAPI_KEY = os.environ.get("COMETAPI_KEY") or "<YOUR_COMETAPI_KEY>"
BASE_URL = "https://api.cometapi.com/veo/v1/video"

# Create video generation task
create_response = requests.post(
    f"{BASE_URL}/create",
    headers={
        "Authorization": COMETAPI_KEY,
        "Content-Type": "application/json",
    },
    json={
        "prompt": "An orange cat flying in the blue sky with white clouds, sunlight pouring onto its fur, creating a beautiful and dreamlike scene",
        "model": "veo3.1",
        "enhance_prompt": True,
    },
)

task = create_response.json()
task_id = task["id"]
print(f"Task created: {task_id}")
print(f"Status: {task['status']}")

# Poll until video is ready
while True:
    query_response = requests.get(
        f"{BASE_URL}/query/{task_id}",
        headers={
            "Authorization": f"Bearer {COMETAPI_KEY}",
        },
    )

    result = query_response.json()
    status = result["data"]["status"]
    progress = result["data"].get("progress", "")

    print(f"Checking status... {status} {progress}")

    if status == "SUCCESS" or result["data"]["data"]["status"] == "completed":
        video_url = result["data"]["data"]["video_url"]
        print(f"\nVideo URL: {video_url}")
        break
    elif status == "FAILED":
        print(f"Failed: {result['data'].get('fail_reason', 'Unknown error')}")
        break

    time.sleep(10)

JavaScript Code Example

// Get your CometAPI key from https://api.cometapi.com/console/token, and paste it here
const COMETAPI_KEY = process.env.COMETAPI_KEY || "<YOUR_COMETAPI_KEY>";
const BASE_URL = "https://api.cometapi.com/veo/v1/video";

async function sleep(ms) {
  return new Promise((resolve) => setTimeout(resolve, ms));
}

async function main() {
  // Create video generation task
  const createResponse = await fetch(`${BASE_URL}/create`, {
    method: "POST",
    headers: {
      Authorization: COMETAPI_KEY,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      prompt:
        "An orange cat flying in the blue sky with white clouds, sunlight pouring onto its fur, creating a beautiful and dreamlike scene",
      model: "veo3.1",
      enhance_prompt: true,
    }),
  });

  const task = await createResponse.json();
  const taskId = task.id;
  console.log(`Task created: ${taskId}`);
  console.log(`Status: ${task.status}`);

  // Poll until video is ready
  while (true) {
    const queryResponse = await fetch(`${BASE_URL}/query/${taskId}`, {
      headers: {
        Authorization: `Bearer ${COMETAPI_KEY}`,
      },
    });

    const result = await queryResponse.json();
    const status = result.data.status;
    const progress = result.data.progress || "";

    console.log(`Checking status... ${status} ${progress}`);

    if (status === "SUCCESS" || result.data.data.status === "completed") {
      const videoUrl = result.data.data.video_url;
      console.log(`\nVideo URL: ${videoUrl}`);
      break;
    } else if (status === "FAILED") {
      console.log(`Failed: ${result.data.fail_reason || "Unknown error"}`);
      break;
    }

    await sleep(10000);
  }
}

main();

Curl Code Example

#!/bin/bash
# Get your CometAPI key from https://api.cometapi.com/console/token, and paste it here

BASE_URL="https://api.cometapi.com/veo/v1/video"

# Create video generation task
response=$(curl -s -X POST "${BASE_URL}/create" \
  -H "Authorization: $COMETAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "An orange cat flying in the blue sky with white clouds, sunlight pouring onto its fur, creating a beautiful and dreamlike scene",
    "model": "veo3.1",
    "enhance_prompt": true
  }')

task_id=$(echo "$response" | jq -r '.id')
status=$(echo "$response" | jq -r '.status')

echo "Task created: ${task_id}"
echo "Status: ${status}"

# Poll until video is ready
while true; do
  query_response=$(curl -s -X GET "${BASE_URL}/query/${task_id}" \
    -H "Authorization: Bearer $COMETAPI_KEY")

  status=$(echo "$query_response" | jq -r '.data.status')
  progress=$(echo "$query_response" | jq -r '.data.progress // ""')
  completed=$(echo "$query_response" | jq -r '.data.data.status')

  echo "Checking status... ${status} ${progress}"

  if [ "$status" = "SUCCESS" ] || [ "$completed" = "completed" ]; then
    video_url=$(echo "$query_response" | jq -r '.data.data.video_url')
    echo ""
    echo "Video URL: ${video_url}"
    break
  elif [ "$status" = "FAILED" ]; then
    fail_reason=$(echo "$query_response" | jq -r '.data.fail_reason // "Unknown error"')
    echo "Failed: ${fail_reason}"
    break
  fi

  sleep 10
done

Versions of Veo 3.1

The reason Veo 3.1 has multiple snapshots may include potential factors such as variations in output after updates requiring older snapshots for consistency, providing developers a transition period for adaptation and migration, and different snapshots corresponding to global or regional endpoints to optimize user experience. For detailed differences between versions, please refer to the official documentation.
version
veo3.1
veo3.1-pro

More Models

G

Veo 3.1 Pro

G

Veo 3.1 Pro

Per Second:$0.3125
Veo 3.1-Pro refers to the high-capability access/configuration of Google’s Veo 3.1 family — a generation of short-form, audio-enabled video models that add richer native audio, improved narrative/editing controls and scene-extension tools.
G

Veo 3 Pro

G

Veo 3 Pro

Per Second:$0.3125
Veo 3 pro denotes the production-grade Veo 3 video model experience (high fidelity, native audio, and extended tooling)
G

Veo 3 Fast

G

Veo 3 Fast

Per Second:$0.0625
Veo 3 Fast is Google’s speed-optimized variant of the Veo family of generative video models (Veo 3 / Veo 3.1 etc.). It is engineered to produce short, high-quality video clips with natively generated audio while prioritizing throughput and cost per second—trading some top-end visual fidelity and/or longer single-shot duration for much faster generation and lower price. What is Veo 3 Fast — concise introduction
G

Veo 3

G

Veo 3

Per Second:$0.0625
Google DeepMind’s Veo 3 represents the cutting edge of text-to-video generation, marking the first time a large-scale generative AI model seamlessly synchronizes high-fidelity video with accompanying audio—including dialogue, sound effects, and ambient soundscapes.
D

Doubao-Seedance-1.5-pro

D

Doubao-Seedance-1.5-pro

Input:$75/M
Output:$300/M
D

Doubao-Seedance-2-0

D

Doubao-Seedance-2-0

Input:$75/M
Output:$300/M