Back to guides
Video·June 18, 2026·Updated October 9, 2026·7 min read

Sora API — AI video generation (with Veo 3.1 today)

The practical way to generate AI video: the Sora API format, text-to-video and image-to-video workflows, and pricing. Every example works with Google Veo 3.1 today; when Sora arrives, only the model field changes.

Sora is OpenAI's text-to-video model, and the “Sora API” is the way teams generate video programmatically instead of through the consumer application. In Kunavo, text-to-video generation today runs with Google Veo 3 through a single OpenAI-style video endpoint — Sora access is on the roadmap, and because the endpoint is model-independent, switching to Sora later will be a one-word change. This guide demonstrates the workflow with Veo 3 so every example works 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 format lets you put generation into a pipeline: marketing shots, product animations, b-roll, and draft previews. The format is the same across modern video models: send a prompt and parameters, then receive a hosted video URL.

Video in Kunavo today: Veo 3

Kunavo offers video generation through a single OpenAI-style endpoint: /v1/video/generations. Sora is not yet active in 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 arrives, the only change will be the model field.

Quick start with text-to-video

A single POST with your Kunavo key. Generation may take several minutes, so a 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": "kırmızı bir origami turnanın açılışına yumuşak ışıkta sinematik dolly-in",
        "aspect_ratio": "16:9",
    },
    timeout=600,  # üretim dakikalar sürebilir
)
print(resp.json()["data"][0]["url"])

duration (seconds) sets the clip length on the models billed per second: the Seedance models and Wan 2.7. The Veo models ignore it; every Veo clip is 8 seconds, billed per video.

Image-to-video

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

Asynchronous job lifecycle

Do not keep a connection open for 10 minutes in production. Submit a job to /v1/videos, receive a job ID immediately, then poll GET /v1/videos/{id} until completion. Result URLs are permanent.

async_submit.py
# Üretim: bir görev gönderin, sonra yoklayın — uzun ömürlü bağlantı yok.
task = requests.post(
    "https://api.kunavo.com/v1/videos",
    headers={
        "Authorization": f"Bearer {API_KEY}",
        "Idempotency-Key": "my-task-uuid",   # ~24s içinde yeniden denemeye güvenli
    },
    json={"model": "veo-3", "prompt": "...", "aspect_ratio": "16:9"},
    timeout=60,
).json()
# ardından tamamlanana kadar GET /v1/videos/{task["id"]} adresini yoklayın

Video documentation covers the complete polling loop, idempotency keys, and webhook delivery.

Pricing

Veo 3 is billed per video (shown here per 8-second clip at 720p) and costs approximately %50-70 below Google's list price. Higher resolutions cost more — see the pricing page for the full tier table.

ModelStarting price (720p / 8s)Google list priceSavings
veo-3-lite$0.18$0.45~%60
veo-3 (Fast)$0.36$1.20~%70
veo-3-quality$1.60$3.20~%50

Prompt tips for video

  • Describe the shot, not just the subject. Camera movement (dolly, pan, push-in), lens feel, lighting, and pacing matter more than adjectives.
  • Specify the aspect ratio explicitly — 16:9 for landscape and 9:16 for portrait/social.
  • Every Veo clip is 8 seconds long. Plan each shot to fit, and stitch multiple generations for longer sequences.
  • Use a reference frame (image-to-video) when a particular character or product must remain consistent.

FAQ

Can I use the Sora API in Kunavo today?

Sora is not yet enabled in the Kunavo catalog. Today, text-to-video generation works with Google Veo 3 through the same OpenAI-style /v1/video/generations endpoint. Because the endpoint is model-independent, switching to Sora later will be a one-word change in the model field. Sora access is on the roadmap.

What is the Sora API?

Sora is OpenAI's text-to-video model (Sora 2 and Sora 2 Pro). The Sora API programmatically generates short video clips from a text prompt or a still image — with synchronized audio in Sora 2 — rather than through the consumer application.

How much does video generation cost in Kunavo?

Veo 3 is billed per video and costs approximately %50-70 below Google's list price. Starting prices per 8-second 720p clip are $0.18 for Veo 3 Lite, $0.36 for Veo 3 Fast, and $1.60 for Veo 3 Quality. Higher resolutions cost more.

Does Kunavo support image-to-video generation?

Yes. To animate a still image, pass image_url (an https URL or an uploaded file) to the /v1/video/generations endpoint. You can also pass a first and last frame for controlled transitions.

How long does generation take?

Minutes. In production, use and poll the asynchronous /v1/videos task API; see the video documentation.