Unlock exclusive introductory pricing for the newly launched Gemini 3.5 Flash.
G

Veo 3.1

Per sekund:$0.32
Utgitt:Oct 16, 2025

Veo 3.1 er Googles inkrementell, men betydelig oppdatering av sin Veo-familie for tekst- og bilde→video, som tilfører rikere innebygd lyd, lengre og mer kontrollerbare videoutdata og mer presis redigering og kontroller på scenenivå.

Ny
Populær
Kommersiell bruk

Playground for Veo 3.1

Utforsk Veo 3.1's Playground — et interaktivt miljø for å teste modeller og kjøre spørringer i sanntid. Prøv prompts, juster parametere og iterer umiddelbart for å akselerere utvikling og validere brukstilfeller.

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.

Priser for Veo 3.1

Utforsk konkurransedyktige priser for Veo 3.1, designet for å passe ulike budsjetter og bruksbehov. Våre fleksible planer sikrer at du bare betaler for det du bruker, noe som gjør det enkelt å skalere etter hvert som kravene dine vokser. Oppdag hvordan Veo 3.1 kan forbedre prosjektene dine samtidig som kostnadene holdes håndterbare.

veo3.1(videos)

Model nameTagsCalculate price
veo3.1-allvideos$0.20000
veo3.1videos$0.40000

Eksempelkode og API for Veo 3.1

Få tilgang til omfattende eksempelkode og API-ressurser for Veo 3.1 for å effektivisere integreringsprosessen din. Vår detaljerte dokumentasjon gir trinn-for-trinn-veiledning som hjelper deg med å utnytte det fulle potensialet til Veo 3.1 i prosjektene dine.

#!/bin/bash
# Get your CometAPI key from https://api.cometapi.com/console/token
# Export it as: export COMETAPI_KEY="your-key-here"

BASE_URL="https://api.cometapi.com/v1"
IMAGE_PATH="/tmp/veo3.1_reference.jpg"

# ============================================================
# Step 1: Download Reference Image
# ============================================================
echo "Step 1: Downloading reference image..."

curl -s -o "$IMAGE_PATH" "https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=1280"
echo "Reference image saved to: $IMAGE_PATH"

# ============================================================
# Step 2: Create Video Generation Task (form-data with image upload)
# ============================================================
echo ""
echo "Step 2: Creating video generation task..."

RESPONSE=$(curl -s -X POST "${BASE_URL}/videos" \
  -H "Authorization: $COMETAPI_KEY" \
  -F 'prompt=A breathtaking mountain landscape with clouds flowing through valleys, cinematic aerial shot' \
  -F 'model=veo3.1' \
  -F 'size=16x9' \
  -F "input_reference=@${IMAGE_PATH}")

echo "Create response:"
echo "$RESPONSE" | jq .

TASK_ID=$(echo "$RESPONSE" | jq -r '.id')

if [ "$TASK_ID" = "null" ] || [ -z "$TASK_ID" ]; then
  echo "Error: Failed to get task_id from response"
  exit 1
fi

echo "Task ID: $TASK_ID"

# ============================================================
# Step 3: Query Task Status
# ============================================================
echo ""
echo "Step 3: Querying task status..."

QUERY_RESPONSE=$(curl -s -X GET "${BASE_URL}/videos/${TASK_ID}" \
  -H "Authorization: $COMETAPI_KEY")

echo "Query response:"
echo "$QUERY_RESPONSE" | jq .

TASK_STATUS=$(echo "$QUERY_RESPONSE" | jq -r '.data.status')
echo "Task status: $TASK_STATUS"

cURL Code Example

#!/bin/bash
# Get your CometAPI key from https://api.cometapi.com/console/token
# Export it as: export COMETAPI_KEY="your-key-here"

BASE_URL="https://api.cometapi.com/v1"
IMAGE_PATH="/tmp/veo3.1_reference.jpg"

# ============================================================
# Step 1: Download Reference Image
# ============================================================
echo "Step 1: Downloading reference image..."

curl -s -o "$IMAGE_PATH" "https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=1280"
echo "Reference image saved to: $IMAGE_PATH"

# ============================================================
# Step 2: Create Video Generation Task (form-data with image upload)
# ============================================================
echo ""
echo "Step 2: Creating video generation task..."

RESPONSE=$(curl -s -X POST "${BASE_URL}/videos" \
  -H "Authorization: $COMETAPI_KEY" \
  -F 'prompt=A breathtaking mountain landscape with clouds flowing through valleys, cinematic aerial shot' \
  -F 'model=veo3.1' \
  -F 'size=16x9' \
  -F "input_reference=@${IMAGE_PATH}")

echo "Create response:"
echo "$RESPONSE" | jq .

TASK_ID=$(echo "$RESPONSE" | jq -r '.id')

if [ "$TASK_ID" = "null" ] || [ -z "$TASK_ID" ]; then
  echo "Error: Failed to get task_id from response"
  exit 1
fi

echo "Task ID: $TASK_ID"

# ============================================================
# Step 3: Query Task Status
# ============================================================
echo ""
echo "Step 3: Querying task status..."

QUERY_RESPONSE=$(curl -s -X GET "${BASE_URL}/videos/${TASK_ID}" \
  -H "Authorization: $COMETAPI_KEY")

echo "Query response:"
echo "$QUERY_RESPONSE" | jq .

TASK_STATUS=$(echo "$QUERY_RESPONSE" | jq -r '.data.status')
echo "Task status: $TASK_STATUS"

Python Code Example

import os
import requests
import json

# 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/v1"

headers = {
    "Authorization": COMETAPI_KEY,
}

# ============================================================
# Step 1: Download Reference Image
# ============================================================
print("Step 1: Downloading reference image...")

image_url = "https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=1280"
image_response = requests.get(image_url)
image_path = "/tmp/veo3.1_reference.jpg"
with open(image_path, "wb") as f:
    f.write(image_response.content)
print(f"Reference image saved to: {image_path}")

# ============================================================
# Step 2: Create Video Generation Task (form-data with image upload)
# ============================================================
print("\nStep 2: Creating video generation task...")

with open(image_path, "rb") as image_file:
    files = {
        "input_reference": ("reference.jpg", image_file, "image/jpeg"),
    }
    data = {
        "prompt": "A breathtaking mountain landscape with clouds flowing through valleys, cinematic aerial shot",
        "model": "veo3.1",
        "size": "16x9",
    }
    create_response = requests.post(
        f"{BASE_URL}/videos", headers=headers, data=data, files=files
    )

create_result = create_response.json()
print("Create response:", json.dumps(create_result, indent=2))

task_id = create_result.get("id")
if not task_id:
    print("Error: Failed to get task_id from response")
    exit(1)
print(f"Task ID: {task_id}")

# ============================================================
# Step 3: Query Task Status
# ============================================================
print("\nStep 3: Querying task status...")

query_response = requests.get(f"{BASE_URL}/videos/{task_id}", headers=headers)
query_result = query_response.json()
print("Query response:", json.dumps(query_result, indent=2))

task_status = query_result.get("data", {}).get("status")
print(f"Task status: {task_status}")

JavaScript Code Example

import fs from "fs";
import path from "path";
import os from "os";

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

// ============================================================
// Step 1: Download Reference Image
// ============================================================
console.log("Step 1: Downloading reference image...");

const imageUrl = "https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=1280";
const imageResponse = await fetch(imageUrl);
const imageBuffer = Buffer.from(await imageResponse.arrayBuffer());
const imagePath = path.join(os.tmpdir(), "veo3.1_reference.jpg");
fs.writeFileSync(imagePath, imageBuffer);
console.log(`Reference image saved to: ${imagePath}`);

// ============================================================
// Step 2: Create Video Generation Task (form-data with image upload)
// ============================================================
console.log("\nStep 2: Creating video generation task...");

const formData = new FormData();
formData.append("prompt", "A breathtaking mountain landscape with clouds flowing through valleys, cinematic aerial shot");
formData.append("model", "veo3.1");
formData.append("size", "16x9");
formData.append("input_reference", new Blob([fs.readFileSync(imagePath)], { type: "image/jpeg" }), "reference.jpg");

const createResponse = await fetch(`${base_url}/videos`, {
  method: "POST",
  headers: {
    "Authorization": api_key,
  },
  body: formData,
});

const createResult = await createResponse.json();
console.log("Create response:", JSON.stringify(createResult, null, 2));

const taskId = createResult?.id;
if (!taskId) {
  console.log("Error: Failed to get task_id from response");
  process.exit(1);
}
console.log(`Task ID: ${taskId}`);

// ============================================================
// Step 3: Query Task Status
// ============================================================
console.log("\nStep 3: Querying task status...");

const queryResponse = await fetch(`${base_url}/videos/${taskId}`, {
  method: "GET",
  headers: {
    "Authorization": api_key,
  },
});

const queryResult = await queryResponse.json();
console.log("Query response:", JSON.stringify(queryResult, null, 2));

const taskStatus = queryResult?.data?.status;
console.log(`Task status: ${taskStatus}`);

Versjoner av Veo 3.1

Grunnen til at Veo 3.1 har flere øyeblikksbilder kan inkludere potensielle faktorer som variasjoner i utdata etter oppdateringer som krever eldre øyeblikksbilder for konsistens, å gi utviklere en overgangsperiode for tilpasning og migrering, og ulike øyeblikksbilder som tilsvarer globale eller regionale endepunkter for å optimalisere brukeropplevelsen. For detaljerte forskjeller mellom versjoner, vennligst se den offisielle dokumentasjonen.

Model iddescriptionAvailabilityPriceRequst
veo3.1-allThe technology used is unofficial and the generation is unstable etc$0.2 / perChat format
veo3.1Recommend, Pointing to the latest model$0.4/ perAsync Generation