Torna alle guide
Video·2 luglio 2026·Aggiornato il 4 settembre 2026·7 min di lettura

Text-to-video API — generate video from a prompt (OpenAI-compatible, 2026)

A text-to-video API turns a prompt into a video clip programmatically. Here's the API shape, the live models on Kunavo (Veo 3.1, Seedance 2, Wan 2.7), per-clip pricing, and the async pattern you need in production.

Last reviewed on .

A text-to-video API turns a text prompt into a short video clip — programmatically, so you can script generation into pipelines instead of clicking through a consumer app. This guide covers the API shape common to modern video models, the live models on Kunavo today, per-clip pricing, and the async pattern you need in production.

How a text-to-video API works

The shape is the same across modern video models: send a prompt and parameters (duration, aspect_ratio, resolution), get back a hosted video URL. Kunavo exposes this through one OpenAI-style endpoint, /v1/video/generations, so you switch between video models by changing the model string — no new SDK or integration.

text_to_video.py
import requests

# One OpenAI-style endpoint for every text-to-video model.
resp = requests.post(
    "https://api.kunavo.com/v1/video/generations",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={
        "model": "veo-3",                       # swap the model, same request
        "prompt": "a cinematic dolly-in on a red origami crane unfolding",
        "duration": 5,
        "aspect_ratio": "16:9",
    },
    timeout=600,  # generation takes minutes
)
print(resp.json()["data"][0]["url"])

Text-to-video models on Kunavo

Three families are live today: Google Veo 3 (cinematic quality with native audio), ByteDance Seedance 2 (multi-shot storytelling and reference consistency) and Alibaba Wan 2.7 (budget cinematic, per-second billing). Sora, Kling and Hailuo are on the roadmap; because the endpoint is model-agnostic, adopting any of them is a one-word change to the model field.

ModelStatusPricingGuide
veo-3 (Google)Live$0.16–$1.92 / 8s clipVeo 3 API
seedance-2 (ByteDance)Live$0.093–$0.612 / secondSeedance API
wan-2-7 (Alibaba)Live$0.096–$0.144 / secondWan API
Sora / Sora 2 (OpenAI)RoadmapSora API
Kling (Kuaishou)RoadmapKling API
Hailuo (MiniMax)RoadmapHailuo API

Pricing

Veo 3 is billed per video (per 8-second clip at 720p shown here), about 40–60% under Google's list price. Higher resolutions cost more — the pricing page has the full tier table, and the AI video cost calculator prices a month of it — including the per-clip versus per-second split, which is the thing that makes two similar-looking rates produce very different bills.

ModelFrom (720p / 8s)Google listYou save
veo-3-lite$0.16$0.40~60%
veo-3 (Fast)$0.32$0.80~60%
veo-3-quality$1.92$3.20~40%

Image-to-video

To animate a still, pass image_url (an https URL or an uploaded file) alongside the prompt; pass a first and last frame for controlled transitions. Full parameters are in the video docs.

Speech and video: what this endpoint does and doesn't do

“Speech to video” gets searched for two different things, and it is worth being precise about which one is available here.

Video with generated speech — yes. Veo 3 produces native synchronized audio as part of the generation: dialogue, ambient sound and effects, timed to the footage, from the same text prompt. Describe the line you want spoken in the prompt and it comes back on the audio track of the returned MP4. No separate voice model, no second API call, no post-production sync step. That is a property of the Veo 3 family specifically — Seedance 2 and Wan 2.7 generate silent video.

Driving video from an audio file — no. If what you need is to upload a recording and get a lip-synced talking avatar, or to transcribe speech and storyboard from it, Kunavo has no model for that today. The video models here take a text prompt and optionally a source image; none accepts audio as an input. For completeness: /v1/audio/transcriptions currently has no model enabled either, so you cannot assemble the two-step version on this API alone. If that is your use case, this is the wrong tool and it is better to say so than to sell you a workaround that does not exist.

The async task lifecycle

Generation takes minutes, so in production you don't hold the connection. Submit a task to /v1/videos, get a task id back immediately, then poll GET /v1/videos/{id} until it completes. Result URLs are permanent.

async_submit.py
# Production: submit a task and poll — don't hold a long connection.
task = requests.post(
    "https://api.kunavo.com/v1/videos",
    headers={"Authorization": f"Bearer {API_KEY}",
             "Idempotency-Key": "my-task-uuid"},
    json={"model": "veo-3", "prompt": "...", "duration": 5},
    timeout=60,
).json()
# then poll GET /v1/videos/{task["id"]} until status == "completed"

FAQ

What is a text-to-video API?

A text-to-video API generates a short video clip from a text prompt, programmatically rather than through a consumer app. You POST a prompt plus parameters (duration, aspect ratio, resolution) and get back a hosted video URL. On Kunavo it is one OpenAI-style endpoint, /v1/video/generations, with Google Veo 3, ByteDance Seedance 2 and Alibaba Wan 2.7 live.

What is the best text-to-video API?

Google Veo 3 is the strongest generally available model today; it's live on Kunavo alongside ByteDance's Seedance 2 (multi-shot consistency) and Alibaba's Wan 2.7 (budget cinematic). Sora, Kling and Hailuo are on the roadmap behind the same endpoint.

Is there a free text-to-video API?

Video generation is compute-heavy, so there is no meaningful free tier from any provider — you pay per clip. Kunavo is pay-as-you-go from a $10 minimum top-up; Veo 3 starts at $0.16 per 8-second 720p clip (Veo 3 Lite), about 40–60% under Google's list.

How much does a text-to-video API cost?

On Kunavo, Veo 3 is billed per video, about 40–60% under Google's list: Veo 3 Lite from $0.16, Veo 3 Fast from $0.32, Veo 3 Quality from $1.92 per 8-second 720p clip. Higher resolutions cost more. Failed generations are never billed.

How long does generation take?

Minutes. Use the async /v1/videos task API and poll in production; details in the video docs.