Back to guides
Video·June 8, 2026·7 min read

Sora API — text-to-video on an OpenAI-compatible workflow

Sora is OpenAI's text-to-video model. On Kunavo the live text-to-video model is Google Veo 3, on the same OpenAI-style video endpoint — here's the workflow, with Sora access on the roadmap.

Sora is OpenAI's text-to-video model, and “the Sora API” is how teams generate video programmatically instead of through the consumer app. On Kunavo today, text-to-video runs on Google Veo 3 through one OpenAI-style video endpoint — Sora access is on the roadmap, and because the endpoint is model-agnostic, moving to Sora later is a one-word change. This guide shows the workflow with Veo 3 so every example runs right now.

What is the Sora API?

Sora (Sora 2 and Sora 2 Pro) turns a text prompt — or a still image — into a short video clip, with synchronized audio in Sora 2. The API form lets you script generation into a pipeline: marketing shots, product animations, b-roll, storyboard previews. The shape is the same across modern video models: send a prompt and parameters, get back a hosted video URL.

Video on Kunavo today: Veo 3

Kunavo exposes video generation through a single OpenAI-style endpoint, /v1/video/generations. Sora is not yet enabled on the catalog; the live text-to-video model is Google Veo 3, which produces cinematic clips with native audio. The examples below use veo-3 — when Sora lands, the only change is the model field.

Text-to-video quickstart

One POST with your Kunavo key. Generation can take a couple of minutes, so the synchronous call holds the connection until the clip is ready:

text_to_video.py
import requests

resp = requests.post(
    "https://api.kunavo.com/v1/video/generations",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={
        "model": "veo-3",
        "prompt": "a cinematic dolly-in on a red origami crane unfolding, soft light",
        "duration": 5,
        "aspect_ratio": "16:9",
    },
    timeout=600,  # generation can take minutes
)
print(resp.json()["data"][0]["url"])

Image-to-video

To animate a still, pass image_url (an https URL or a file you uploaded to /v1/files) alongside the prompt. For controlled motion you can pass a first and last frame with image_urls and image_mode: "frame". Full examples are in the video docs.

Async task lifecycle

In production, don't hold a 10-minute 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, then poll — no long-lived connection.
task = requests.post(
    "https://api.kunavo.com/v1/videos",
    headers={
        "Authorization": f"Bearer {API_KEY}",
        "Idempotency-Key": "my-task-uuid",   # retry-safe within ~24h
    },
    json={"model": "veo-3", "prompt": "...", "duration": 5, "aspect_ratio": "16:9"},
    timeout=60,
).json()
# then poll GET /v1/videos/{task["id"]} until it completes

The video docs cover the full polling loop, idempotency keys and webhook delivery.

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 — see the pricing page for the full tier table.

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%

Prompting tips for video

  • Describe the shot, not just the subject. Camera move (dolly, pan, push-in), lens feel, lighting and pacing matter more than adjectives.
  • Set aspect ratio explicitly16:9 for landscape, 9:16 for vertical/social.
  • Keep clips short. 5–8 seconds is the sweet spot; stitch multiple generations for longer sequences.
  • Use a reference frame (image-to-video) when you need a specific character or product to stay consistent.

FAQ

Can I use the Sora API on Kunavo today?

Not yet — Sora is not enabled on the catalog. Text-to-video runs today on Veo 3 through the same OpenAI-style endpoint, and switching to Sora later is a one-word model change. Sora access is on the roadmap.

What does video generation cost?

Veo 3 is per-video, about 40–60% under Google's list: Lite from $0.16, Fast from $0.32, Quality from $1.92 per 8s 720p clip.

Does Kunavo support image-to-video?

Yes — pass image_url to /v1/video/generations, or a first/last frame pair for controlled transitions.

How long does generation take?

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