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:
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:
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:
# 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.
| Model | Kunavo (720p / 8s) | Google list | Best for |
|---|---|---|---|
| veo-3-lite | $0.16+ | $0.40 | Storyboards, previews, high volume |
| veo-3 (Fast) | $0.32+ | $0.80 | The default — cinematic + native audio |
| veo-3-quality | $1.92+ | $3.20 | Hero 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: 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 explicitly —
16:9for landscape,9:16for 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:
| Kunavo | Google direct (Gemini API / Vertex) | |
|---|---|---|
| Setup | One key, one base_url | Google Cloud project + billing account + IAM |
| Price per 8s 720p clip | $0.32+ (Fast tier) | $0.80 list |
| Billing | Pre-paid wallet, one invoice across every model | GCP billing, per-service line items |
| Other models on the same key | Claude, GPT, Gemini, image and music models | Google models only |
| Capacity | Shared — no dedicated quota, and a busy upstream is felt here | Your own project quota, raisable via support |
| Support / SLA | Email support, no contractual SLA | Google 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.