Back to guides
Video·July 2, 2026·Updated July 26, 2026·7 min read

Veo 3 API — Google's text-to-video with native audio, OpenAI-compatible (2026)

Veo 3 is Google's text-to-video model with native audio. Here's how to call the Veo 3 API on Kunavo — three tiers, image-to-video, per-video pricing ~40–60% under Google's list, and the async workflow.

Veo 3 is Google's text-to-video model, and the Veo 3 API generates cinematic clips — with native, synchronized audio — from a text prompt or a still image. Kunavo serves the whole family (veo-3-lite, veo-3 Fast and veo-3-quality) through the OpenAI-style video endpoint, at roughly 40–60% under Google's list price, on one bearer token.

Call the Veo 3 API

Generate a key at /app/keys and POST to /v1/video/generations. Generation takes a couple of minutes, so the synchronous call holds the connection until the clip is ready:

veo3.py
import requests

resp = requests.post(
    "https://api.kunavo.com/v1/video/generations",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={
        "model": "veo-3",                 # Fast tier; also veo-3-lite / veo-3-quality
        "prompt": "aerial push-in over a misty pine valley at dawn, birds, soft light",
        "duration": 8,
        "aspect_ratio": "16:9",
        "resolution": "720p",
    },
    timeout=600,  # Veo 3 generation takes minutes
)
print(resp.json()["data"][0]["url"])

The same call with curl:

veo3.sh
curl https://api.kunavo.com/v1/video/generations \
  -H "Authorization: Bearer $KUNAVO_API_KEY" \
  -H "Content-Type: application/json" \
  --max-time 600 \
  -d '{
    "model": "veo-3",
    "prompt": "aerial push-in over a misty pine valley at dawn, birds, soft light",
    "duration": 8,
    "aspect_ratio": "16:9",
    "resolution": "720p"
  }'

And if the rest of your codebase already runs on the OpenAI SDK, you can keep one client for everything — chat, images and video share the key and the base_url:

veo3_openai_sdk.py
# Already using the OpenAI SDK? Keep it — only base_url changes.
# Video isn't in the OpenAI SDK surface, so reuse its client for auth/config
# and post to the video route directly.
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["KUNAVO_API_KEY"],
    base_url="https://api.kunavo.com/v1",
)

resp = client.post(
    "/video/generations",
    body={"model": "veo-3", "prompt": "a neon-lit alley in the rain", "duration": 8},
    cast_to=dict,
    options={"timeout": 600.0},
)
print(resp["data"][0]["url"])

Returned URLs are permanent. Full parameters (resolution, aspect_ratio, seeds, negative prompts) are in the video API reference.

Tiers and pricing

Veo 3 has three quality tiers. Per-video rates below are for an 8-second 720p clip; 1080p and 4K step up. Live rates are on each model page.

ModelKunavo (720p / 8s)Google listBest for
veo-3-lite$0.16+$0.40Storyboards, previews, high volume
veo-3 (Fast)$0.32+$0.80The default — cinematic + native audio
veo-3-quality$1.92+$3.20Hero shots, best fidelity

Image-to-video

Pass image_url to animate a still — useful for keeping a product or character consistent. Pass a first and last frame for controlled transitions.

image_to_video.py
# Image-to-video: animate a still by passing image_url
requests.post(
    "https://api.kunavo.com/v1/video/generations",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={
        "model": "veo-3",
        "prompt": "slow parallax, gentle wind through the grass",
        "image_url": "https://your-cdn.com/keyframe.png",
        "duration": 8,
    },
    timeout=600,
)

Async in production

Don't hold a multi-minute connection at scale. Submit a task to /v1/videos, get a task id, then poll GET /v1/videos/{id} until it completes — with idempotency keys and optional webhooks. The full loop is in the video docs.

Prompting Veo 3

  • Describe the shot, not just the subject — camera move (dolly, pan, push-in), lens feel, lighting and pacing matter most.
  • Lean on the audio — Veo 3 renders sound, so name the ambience or effects you want.
  • Set aspect ratio explicitly16:9 for landscape, 9:16 for vertical/social.
  • Keep clips short — 5–8 seconds is the sweet spot; stitch generations for longer sequences.

Kunavo vs calling Google directly

Veo 3 is also available first-party through the Gemini API and Vertex AI. That route is the right one if you need Google's own SLA and support contract. Here is the honest trade:

KunavoGoogle direct (Gemini API / Vertex)
SetupOne key, one base_urlGoogle Cloud project + billing account + IAM
Price per 8s 720p clip$0.32+ (Fast tier)$0.80 list
BillingPre-paid wallet, one invoice across every modelGCP billing, per-service line items
Other models on the same keyClaude, GPT, Gemini, image and music modelsGoogle models only
CapacityShared — no dedicated quota, and a busy upstream is felt hereYour own project quota, raisable via support
Support / SLAEmail support, no contractual SLAGoogle Cloud support plans

Short version: Kunavo wins on setup time, unit price and having one key for every modality. Google direct wins when you need a quota guarantee or an enterprise agreement.

Veo 3 vs Sora and Kling

Veo 3 is the strongest generally available text-to-video model today and the live one on Kunavo. Sora and Kling are on the roadmap behind the same endpoint — see the text-to-video API guide for the model landscape, and the Sora API and Kling API guides for those families.

FAQ

What is the Veo 3 API?

Google's text-to-video model with native audio, served on Kunavo's OpenAI-style /v1/video/generations endpoint across three tiers.

How much does the Veo 3 API cost?

Per video, about 40–60% under Google's list: Lite $0.16+, Fast $0.32+, Quality $1.92+ per 8s 720p clip.

Is the Veo 3 API cheaper on Kunavo than through Google?

Yes on unit price — $0.32+ versus Google's $0.80 list for the Fast tier — and you skip the Google Cloud project entirely. The trade is shared capacity and no contractual SLA; if you need a guaranteed quota, go direct.

Does Veo 3 generate audio?

Yes — native synchronized audio, unlike earlier silent text-to-video models.

How do I get a Veo 3 API key?

Sign up, create a key at /app/keys, set base_url=https://api.kunavo.com/v1 — no Google Cloud project. See the quickstart.