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

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, Seedance 2, Wan 2.7), per-clip pricing, and the async pattern you need in production.

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 cost calculator estimates token workloads.

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.

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?

An API that generates a video clip from a text prompt. You POST a prompt and parameters to /v1/video/generations and receive a hosted video URL.

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?

No meaningful free tier exists — video is compute-heavy, so you pay per clip. Kunavo is pay-as-you-go from a $5 top-up; Veo 3 starts at $0.16 per 8s 720p clip.

How long does generation take?

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