Skip to main content
POST
/
videos
/
create
curl -X POST "https://mvp.tryunsora.com/api/v1/videos/create" \
  -H "Authorization: Bearer uns_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Slow cinematic drone shot over misty mountains at sunrise",
    "aspectRatio": "16:9",
    "duration": 5
  }'
curl -X POST "https://mvp.tryunsora.com/api/v1/videos/create" \
  -H "Authorization: Bearer uns_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "veo",
    "prompt": "A barista pours latte art in a cozy cafe, ambient chatter",
    "aspectRatio": "16:9",
    "duration": 8,
    "sound": true
  }'
curl -X POST "https://mvp.tryunsora.com/api/v1/videos/create" \
  -H "Authorization: Bearer uns_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kling-pro",
    "prompt": "The character turns and smiles at the camera",
    "image": "https://cdn.example.com/start.jpg",
    "duration": 5
  }'
curl -X POST "https://mvp.tryunsora.com/api/v1/videos/create" \
  -H "Authorization: Bearer uns_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sora-2",
    "prompt": "A golden retriever surfs a small wave at sunset, slow motion",
    "duration": 8
  }'
curl -X POST "https://mvp.tryunsora.com/api/v1/videos/create" \
  -H "Authorization: Bearer uns_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2.0",
    "prompt": "Character walks through neon alley, same outfit as reference",
    "aspectRatio": "9:16",
    "duration": 10,
    "referenceImages": ["https://cdn.example.com/ref.jpg"]
  }'
curl -X POST "https://mvp.tryunsora.com/api/v1/videos/create" \
  -H "Authorization: Bearer uns_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2.0",
    "prompt": "Smooth transition from day to night over the city skyline",
    "aspectRatio": "16:9",
    "duration": 5,
    "image": "https://cdn.example.com/frame-start.jpg",
    "lastImage": "https://cdn.example.com/frame-end.jpg"
  }'
{
  "success": true,
  "generation": {
    "id": "<string>"
  },
  "model": "seedance_2.0",
  "creditsDeducted": 123,
  "creditsRemaining": 123
}
{
"error": "<string>",
"success": true,
"code": "<string>",
"message": "<string>"
}
{
"error": "<string>",
"success": true,
"code": "<string>",
"message": "<string>"
}
Creates a video generation with any supported video model. Credits are charged when the job is queued. Poll Poll video status with generation.id until status is COMPLETED or FAILED.

Supported models

Pass the model key in the model body field. Default: seedance-2.0.
Model keyNameDurationAspect ratiosSound
kling-standardKling v3.0 Standard1–15s16:9, 1:1, 9:16sound
kling-proKling v3.0 Pro3–15s16:9, 1:1, 9:16sound
veoGoogle Veo 3.14, 6, or 8s16:9, 9:16sound
veo-fastGoogle Veo 3.1 Fast4, 6, or 8s16:9, 9:16sound
veo-liteGoogle Veo 3.1 Lite4, 6, or 8s16:9, 9:16sound
sora-2OpenAI Sora 24, 8, 12, 16, or 20s16:9, 9:16
sora-2-proOpenAI Sora 2 Pro4, 8, 12, 16, or 20s16:9, 9:16
wanAlibaba Wan 2.65–15s16:9, 9:16
seedance-2.0Seedance 2.0 (1080p)4–15s21:9, 16:9, 4:3, 1:1, 3:4, 9:16generateAudio
seedance-2.0-fastSeedance 2.0 Fast (720p)4–15s21:9, 16:9, 4:3, 1:1, 3:4, 9:16generateAudio
All models run on WaveSpeed and share the same form inputs: image / lastImage for start/end frames, referenceImages (plus referenceVideos / referenceAudios on Seedance) for reference-guided generation, negativePrompt, sound / generateAudio, and resolution (Veo / Wan).

Headers

HeaderRequiredDescription
AuthorizationYesBearer uns_live_* API key or Clerk JWT
Idempotency-KeyNoMax 128 chars. Replays the same response for 24h on API key requests
Content-TypeYesapplication/json

Request body

prompt
string
required
Text prompt describing the video to generate.
model
string
Video model key from the table above. Default: seedance-2.0.
duration
integer
Length in seconds (integer). Default: 5. The valid range depends on the model (see table above).
aspectRatio
string
Aspect ratio. Default: 16:9. Valid values depend on the model (see table above).
negativePrompt
string
What to avoid in the video. Supported by Kling, Veo, and Wan models.
sound
boolean
Generate audio with the video. Default: false. Supported by Kling v3 and Veo 3.1 models — increases credit cost.
resolution
string
720p or 1080p for Veo 3.1 and Wan 2.6 models. Seedance resolution is fixed by the model variant.
image
string
Start image URL for image-to-video. On Seedance models this switches to first/last-frame mode.
lastImage
string
End/last image URL, for models that support start/end frames.
referenceImages
string[]
Reference image URLs. Veo 3.1 reference mode; Seedance omni reference (up to 9 public image URLs).
referenceVideos
string[]
Seedance only — up to 3 public video URLs. Using video references increases credit cost.
referenceAudios
string[]
Seedance only — up to 3 public audio URLs.
generateAudio
boolean
Seedance only — generate a soundtrack/audio for the video. Default: false.

Credits

ModelPricing
kling-standard5s: 20 · 10s: 35 · 15s: 50 — with sound: 25 / 50 / 75
kling-pro5s: 45 · 10s: 85 · 15s: 125 — with sound: 65 / 125 / 190
veo9 credits/second — with sound: 18 credits/second
veo-fast4.5 credits/second — with sound: 6.75 credits/second (rounded up)
veo-lite3.6 credits/second (rounded up)
sora-24s: 20 · 8s: 35 · 12s: 50 · 16s: 65 · 20s: 80
sora-2-pro4s: 50 · 8s: 95 · 12s: 145 · 16s: 190 · 20s: 240
wan720p — 5s: 20 · 10s: 40 · 15s: 60; 1080p — 5s: 30 · 10s: 60 · 15s: 90
seedance-2.05s: 40 · 10s: 80 · 15s: 100 — with referenceVideos: 80 / 140 / 200
seedance-2.0-fast5s: 20 · 10s: 40 · 15s: 60 — with referenceVideos: 40 / 80 / 100

Async completion

Poll GET /video/status/{id} — see Poll video status. No webhooks.

Response

{
  "success": true,
  "generation": {
    "id": "cm123abc",
    "status": "QUEUED"
  },
  "model": "seedance-2.0",
  "creditsDeducted": 40,
  "creditsRemaining": 60
}

Examples

curl -X POST "https://mvp.tryunsora.com/api/v1/videos/create" \
  -H "Authorization: Bearer uns_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Slow cinematic drone shot over misty mountains at sunrise",
    "aspectRatio": "16:9",
    "duration": 5
  }'
curl -X POST "https://mvp.tryunsora.com/api/v1/videos/create" \
  -H "Authorization: Bearer uns_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "veo",
    "prompt": "A barista pours latte art in a cozy cafe, ambient chatter",
    "aspectRatio": "16:9",
    "duration": 8,
    "sound": true
  }'
curl -X POST "https://mvp.tryunsora.com/api/v1/videos/create" \
  -H "Authorization: Bearer uns_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kling-pro",
    "prompt": "The character turns and smiles at the camera",
    "image": "https://cdn.example.com/start.jpg",
    "duration": 5
  }'
curl -X POST "https://mvp.tryunsora.com/api/v1/videos/create" \
  -H "Authorization: Bearer uns_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sora-2",
    "prompt": "A golden retriever surfs a small wave at sunset, slow motion",
    "duration": 8
  }'
curl -X POST "https://mvp.tryunsora.com/api/v1/videos/create" \
  -H "Authorization: Bearer uns_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2.0",
    "prompt": "Character walks through neon alley, same outfit as reference",
    "aspectRatio": "9:16",
    "duration": 10,
    "referenceImages": ["https://cdn.example.com/ref.jpg"]
  }'
curl -X POST "https://mvp.tryunsora.com/api/v1/videos/create" \
  -H "Authorization: Bearer uns_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2.0",
    "prompt": "Smooth transition from day to night over the city skyline",
    "aspectRatio": "16:9",
    "duration": 5,
    "image": "https://cdn.example.com/frame-start.jpg",
    "lastImage": "https://cdn.example.com/frame-end.jpg"
  }'

Errors

HTTPWhen
400Invalid model, prompt, mode, ratio, duration, or reference files
401Invalid auth
402Insufficient credits
404User not found
429Rate limit exceeded
500Server error

Authorizations

Authorization
string
header
required

Clerk session JWT or Unsora API key (uns_live_*)

Headers

Idempotency-Key
string

Optional. Replays the original response for 24h when using an API key.

Maximum string length: 128

Body

application/json

Create a video generation. model selects the video model. Use image/lastImage for start/end frames, referenceImages (plus referenceVideos/referenceAudios on Seedance) for reference-guided generation.

prompt
string
required
model
enum<string>
default:seedance-2.0

Video model to generate with. See the model table in the docs for durations, ratios and features.

Available options:
kling-standard,
kling-pro,
veo,
veo-fast,
veo-lite,
sora-2,
sora-2-pro,
wan,
seedance-2.0,
seedance-2.0-fast
duration
integer
default:5

Video length in seconds. Valid range depends on the model: Kling Standard 1-15, Kling Pro 3-15, Veo 3.1 (all) 4-8, Sora 2 / Sora 2 Pro 4-20, Wan 2.6 5-15, Seedance 2.0 (both) 4-15.

aspectRatio
string
default:16:9

Aspect ratio. Kling: 16:9, 1:1, 9:16. Veo: 16:9, 9:16. Seedance: 21:9, 16:9, 4:3, 1:1, 3:4, 9:16.

negativePrompt
string

What to avoid in the video. Supported by Kling, Veo and Wan models.

resolution
string

Output resolution (720p or 1080p) for Wan 2.6. Seedance output resolution is fixed (2.0: 1080p, 2.0 Fast: 720p).

sound
boolean
default:false

Generate audio. Supported by Kling v3 and Veo 3.1 models (increases credit cost).

image
string<uri>

Start image URL for image-to-video. On Seedance models this switches to first/last-frame mode.

lastImage
string<uri>

End/last image URL, for models that support start/end frames.

referenceImages
string<uri>[]

Reference image URLs. Veo 3.1 reference mode; Seedance omni reference (up to 9).

referenceVideos
string<uri>[]

Seedance omni reference only — up to 3 video URLs. Using video references increases credit cost.

Maximum array length: 3
referenceAudios
string<uri>[]

Seedance omni reference only — up to 3 audio URLs.

Maximum array length: 3
generateAudio
boolean
default:false

Seedance only — generate a soundtrack/audio for the video.

Response

Job queued

success
boolean
required
generation
object
required
model
enum<string>
required
Available options:
seedance_2.0
creditsDeducted
number
creditsRemaining
number