Videos
March 5, 2026 (May 14, 2026)
Table of contents
- Model Comparison: Seedance
- Model Comparison: HappyHorse
- Model Comparison: Kling
- Model Comparison: Kling O3
- Model Comparison: Kling Motion Control
- Model Comparison: Wan
- Model Comparison: Veo / Sora
- Model Comparison: Gen-4.5 / Gen-4
- Request Headers
- Request Body
- Responses
- Model
- Examples
- Try It
Unified video generation endpoint supporting multiple AI models: Seedance 2.0 seedance-2, HappyHorse 1.0 happyhorse-1.0, Kling O3 4K kling-o3-4k, Kling O3 Pro kling-o3-pro, Kling O3 Standard kling-o3-standard, Kling 3.0 Pro kling-3.0-pro, Kling 3.0 Standard kling-3.0-standard, Kling 3.0 Motion Control kling-3.0-motion-control, Kling 2.6 Pro kling-2.6-pro, Kling 2.6 I2V kling-2.6-i2v, Wan 2.6 Flash wan-2.6-flash, Wan 2.2 Animate wan-2.2-animate, Veo 3.1 veo-3.1, Sora 2 sora-2, Sora 2 Pro sora-2-pro, Gen-4.5 gen4.5, Gen-4 gen4, and Gen-4 Turbo gen4-turbo.
Each model has different capabilities, duration options, aspect ratios, resolution options, and reference image support.
Accounts with a Runway Unlimited plan can set exploreMode to true to generate videos without using credits. Explore mode generations are queued at lower priority and may take significantly longer. Not all models support exploreMode β see model comparison for details. Generation takes ~10 minutes on average. Up to two generations can usually run in parallel per account. Gen-4 Turbo and Veo 3.1 are notably faster (~1β2 min).
Model Comparison: Seedance
Seedance 2.0 on Runway supports real-people faces and generally applies lighter content moderation than the Dreamina version of the same model.
| Feature | Seedance 2.0 |
|---|---|
| Duration | 4β15s |
| aspect_ratio | 16:9, 9:16, 1:1, 4:3, 3:4, 21:9 |
| Resolution | 480p (default), 720p, 1080p |
| Reference images (multi-ref mode) | 0β11 |
| Reference videos (multi-ref mode) | 0β3 |
| Combined references (multi-ref mode) | up to 11 total (images + videos), max 3 of which may be videos |
| Reference video β max duration | β€ 15 seconds |
| Reference video β max resolution | β€ 720p (longest side β€ 1280 px) |
| Keyframe mode | startFrameAssetId (required), endFrameAssetId (optional, requires startFrameAssetId) |
| Keyframe β multi-ref | mutually exclusive in a single request |
| Prompt asset references | @IMG_1..@IMG_11 (images), @VID_1..@VID_3 (videos) |
| text_prompt | optional, 3500 chars |
| audio | on (default) |
| endFrame | yes (dedicated endFrameAssetId field) |
| exploreMode | yes |
| Typical generation time (exploreMode) | ~10 min total (queue ~7β9 min + render ~1.5β4 min) |
Model Comparison: HappyHorse
| Feature | HappyHorse 1.0 |
|---|---|
| Duration | 3β15s |
| aspect_ratio | 16:9, 9:16, 1:1, 4:3, 3:4 |
| Resolution | 720p (default), 1080p |
| Reference images | 0 (T2V) or 1 (I2V β first frame) β imageAssetId1 only |
| text_prompt | optional, 2500 chars |
| exploreMode | yes |
| Typical generation time (exploreMode) | ~10 min total at 720p (queue ~8 min + render ~1.5 min); up to ~22 min at 1080p/15s |
Model Comparison: Kling
| Feature | Kling 3.0 Pro | Kling 3.0 Standard | Kling 2.6 Pro | Kling 2.6 I2V |
|---|---|---|---|---|
| Duration | 5s, 10s, 15s | 5s, 10s, 15s | 5s, 10s | 5s, 10s |
| aspect_ratio | 16:9, 9:16, 1:1 | 16:9, 9:16, 1:1 | 16:9, 9:16 | β |
| Resolution (T2V) | auto | auto | auto | β |
| Reference images | 0β2 | 0β2 | 0β1 | 1 (required) |
| text_prompt | optional, 2500 chars | optional, 2500 chars | required, 2500 chars | required, 2500 chars |
| audio | on (default) | on (default) | on (default) | on (default) |
| endFrame | yes | yes | β | β |
| multishot | 2β5 shots | 2β5 shots | β | β |
| exploreMode | yes | yes | yes | yes |
Model Comparison: Kling O3
Kling O3 is an omni video model with three workflows per tier β Frames, Multishot, and Edit Video. The three tiers (kling-o3-4k, kling-o3-pro, kling-o3-standard) differ only in output resolution and credit cost; kling-o3-4k does not support Edit Video.
- Frames β text-to-video and/or up to 7 reference images. A
startFrameAssetId(first frame) may be combined with reference images;endFrameAssetIdrequiresstartFrameAssetIdand cannot be combined with reference images. - Multishot β 2β6 shots via
multishot_prompt_N/multishot_duration_N(each shot 3β12 s, total β€ 15 s). Reference images fromimageAssetId1..imageAssetId7are bound to a shot by referencing them as@IMG_Nin that shotβs prompt. - Edit Video (
kling-o3-pro/kling-o3-standardonly) β transform an existing video:videoAssetId(source β€ 10 s) plus up to 4 reference images. The output duration tracks the source video length.
| Feature | Kling O3 4K | Kling O3 Pro | Kling O3 Standard |
|---|---|---|---|
| Duration (Frames) | 5s, 10s, 15s | 5s, 10s, 15s | 5s, 10s, 15s |
| aspect_ratio | 16:9, 9:16, 1:1 | 16:9, 9:16, 1:1 | 16:9, 9:16, 1:1 |
| Resolution (derived from aspect_ratio) | 3840Γ2160 / 2160Γ3840 / 2880Γ2880 | 1920Γ1080 / 1080Γ1920 / 1440Γ1440 | 1280Γ720 / 720Γ1280 / 960Γ960 |
| Reference images | 0β7 | 0β7 | 0β7 |
| text_prompt | optional, 2500 chars | optional, 2500 chars | optional, 2500 chars |
| audio | on (default) | on (default) | on (default) |
| Keyframes | startFrameAssetId + optional endFrameAssetId | startFrameAssetId + optional endFrameAssetId | startFrameAssetId + optional endFrameAssetId |
| multishot | 2β6 shots (per-shot refs) | 2β6 shots (per-shot refs) | 2β6 shots (per-shot refs) |
| Edit Video | β | yes (videoAssetId β€ 10 s + β€ 4 refs) | yes (videoAssetId β€ 10 s + β€ 4 refs) |
| exploreMode | yes | yes | yes |
| Typical generation time (exploreMode) | ~11 min total (queue ~8 min + render ~3 min) | ~11 min total (queue ~8 min + render ~3 min) | ~8 min total (queue ~7 min + render ~1 min) |
Model Comparison: Kling Motion Control
Character animation via motion transfer. The character image (imageAssetId1) is animated to mimic the gestures and motion of the performance video (videoAssetId). Output dimensions inherit from the character image; output duration inherits from the performance video.
| Feature | Kling 3.0 Motion Control |
|---|---|
Reference image (imageAssetId1) | 1 (required) β character to be animated |
Reference video (videoAssetId) | 1 (required) β performance / motion source, 3 β€ duration β€ 30 s |
| Resolution | 720p (default, std mode), 1080p (pro mode) |
| Duration | inherited from reference video β duration not accepted |
| aspect_ratio | inherited from character image β aspect_ratio not accepted |
characterOrientation | image (default) or video |
audio | on (default) β keeps the original audio from the reference video; set false for silent output |
| text_prompt | optional, 2500 chars (e.g. βMotion descriptionβ) |
| exploreMode | yes |
| Typical generation time (exploreMode) | ~18 min total (queue ~10 min + render ~8 min) |
Model Comparison: Wan
| Feature | Wan 2.6 Flash | Wan 2.2 Animate |
|---|---|---|
| Duration | 5s, 10s, 15s | auto |
| aspect_ratio | 16:9, 9:16, 1:1 | 16:9, 9:16, 1:1, 4:3, 3:4 |
| Resolution | 720p, 1080p | β |
| Reference images | 1 (required) | 1 (required) |
| Reference video | β | 1 (required) |
| text_prompt | required, 1500 chars | β |
| audio | on (default) | β |
| exploreMode | yes | yes |
Model Comparison: Veo / Sora
| Feature | Veo 3.1 | Sora 2 | Sora 2 Pro |
|---|---|---|---|
| Duration | 4s, 6s, 8s | 4s, 8s, 12s | 4s, 8s, 12s |
| aspect_ratio | 16:9, 9:16 | 16:9, 9:16 | 16:9, 9:16 |
| Resolution | 720p, 1080p | β | 720p, 1080p |
| Reference images | 0β2 | 0β1 | 0β1 |
| text_prompt | optional, 5000 chars | optional, 1000 chars | optional, 1000 chars |
| audio | on (default) | always on | always on |
| endFrame | yes | β | β |
| exploreMode | no | yes | yes |
Model Comparison: Gen-4.5 / Gen-4
| Feature | Gen-4.5 | Gen-4 | Gen-4 Turbo |
|---|---|---|---|
| Duration | 2β10s | 5s, 10s | 5s, 10s |
| aspect_ratio (T2V) | 16:9 | all | all |
| aspect_ratio (I2V) | all | all | all |
| Resolution | β | 720p | 720p |
| Reference images | 0β1 | 1 (required) | 1 (required) |
| text_prompt | optional, 5000 chars | required, 1000 chars | required, 1000 chars |
| seed | auto | auto | auto |
| audio | on (default) | β | β |
| exploreMode | yes | yes | yes |
Please be aware that Runwayβs moderation system analyzes your image and text prompts and may fail task with moderation message if the prompt is determined to be offensive. Runway monitors the rate and the number of moderated tasks, which may result in your account being suspended when the internal threshold is exceeded.
The account you use to upload asset(s) via POST /assets will also be used to execute the generation. Uploading an asset to a specific account ensures that generation with that asset will occur under the same account.
https://api.useapi.net/v1/runwayml/videos/create
Request Headers
Authorization: Bearer {API token}
Content-Type: application/json
# Alternatively you can use multipart/form-data
# Content-Type: multipart/form-data
API tokenis required, see Setup useapi.net for details.
Request Body
{
"model": "gen4.5",
"email": "Optional Runway API account email",
"text_prompt": "A cinematic aerial shot of a coastal city at golden hour",
"duration": 5,
"aspect_ratio": "16:9",
"exploreMode": true,
"replyUrl": "Place your call back URL here",
"replyRef": "Place your reference id here",
"maxJobs": 5
}
-
modelis required. Supported values:seedance-2,happyhorse-1.0,kling-o3-4k,kling-o3-pro,kling-o3-standard,kling-3.0-pro,kling-3.0-standard,kling-3.0-motion-control,kling-2.6-pro,kling-2.6-i2v,wan-2.6-flash,wan-2.2-animate,veo-3.1,sora-2,sora-2-pro,gen4.5,gen4,gen4-turbo. See model comparison for details. -
emailis optional, if not provided API will randomly select available account. -
text_promptdescribes your video in detail. Required forgen4,gen4-turbo,kling-2.6-pro,kling-2.6-i2v, andwan-2.6-flash. Not supported forwan-2.2-animate. Optional for all other models. Maximum length varies by model (1000β5000 characters; 3500 forseedance-2; 2500 forkling-3.0-motion-control,happyhorse-1.0, and thekling-o3-*models). Forseedance-2, prompts may reference uploaded assets by slot using@IMG_1..@IMG_11and@VID_1..@VID_3. For thekling-o3-*models, prompts may reference uploaded assets by slot using@IMG_1..@IMG_7. durationis optional. Default is the first supported value for the model.- Seedance 2.0: 4β15
- HappyHorse 1.0: 3β15
- Kling O3 4K/Pro/Standard:
5,10,15(Frames). For multishot, total duration is the sum of the per-shot durations. For Edit Video, duration is derived from the source video anddurationis ignored. - Kling 3.0 Pro/Standard:
5,10,15 - Kling 3.0 Motion Control: not supported (output duration inherits from the reference video)
- Kling 2.6 Pro, Kling 2.6 I2V:
5,10 - Wan 2.6 Flash:
5,10,15 - Wan 2.2 Animate: not supported (auto)
- Veo 3.1:
4,6,8 - Sora 2, Sora 2 Pro:
4,8,12 - Gen-4.5: 2β10 (continuous range)
- Gen-4, Gen-4 Turbo:
5,10
-
aspect_ratiois optional. Default varies by model. Available values depend on model β see model comparison. resolutionis optional. Available resolutions depend on model.- Seedance 2.0:
480p(default),720p,1080p - HappyHorse 1.0:
720p(default),1080p - Kling 3.0 Motion Control:
720p(default, βstdβ mode),1080p(βproβ mode) - Wan 2.6 Flash:
720p(default),1080p - Veo 3.1:
720p(default),1080p - Sora 2 Pro:
720p(default),1080p - Gen-4, Gen-4 Turbo:
720p - Kling O3 4K/Pro/Standard: not supported β the output resolution is derived from the model tier and
aspect_ratio(see Kling O3 model comparison). - All other models: not supported (resolution auto-selected)
- Seedance 2.0:
-
audiois optional. Defaulttrue. Set tofalseto disable audio generation. Supported by: Seedance 2.0, Kling O3 4K/Pro/Standard, Kling 3.0 Pro/Standard, Kling 3.0 Motion Control, Kling 2.6 Pro, Kling 2.6 I2V, Wan 2.6 Flash, Veo 3.1, Gen-4.5. Forkling-3.0-motion-control,audiocontrols whether the original audio of the reference video (videoAssetId) is preserved in the output. For thekling-o3-*models in Edit Video mode,audiocontrols whether the original sound of the source video (videoAssetId) is preserved in the output. -
seedis optional. Only supported by Gen-4.5, Gen-4, and Gen-4 Turbo (auto-generated if not provided). Valid range 1β4294967294. imageAssetId1,imageAssetId2β¦imageAssetId11are optional. Specify the assetIds of reference images. Use GET /assets/?mediaType=image to see the list of image assets. To upload a new image asset use POST /assets. Maximum number of reference images depends on model β see model comparison.imageAssetId1: start frame imageimageAssetId2: end frame image (only for models supportingendFrame: Gen-4.5, Kling 3.0 Pro/Standard, Veo 3.1)imageAssetId3β¦imageAssetId11: additional reference image slots, used only byseedance-2in multi-reference mode.- For the
kling-o3-*models,imageAssetId1..imageAssetId7are reference image slots (0β7 images). In Edit Video mode at most 4 reference images are accepted. The end frame for Kling O3 is supplied viaendFrameAssetId(notimageAssetId2).
videoAssetId,videoAssetId2,videoAssetId3are optional. Specify the assetIds of reference videos. Use POST /assets to upload a video asset.videoAssetId: the single reference video forwan-2.2-animate(required for that model) and forkling-3.0-motion-control(required as the performance/motion source). Also the source video forkling-o3-pro/kling-o3-standardEdit Video mode.videoAssetId2,videoAssetId3: additional video-reference slots used only byseedance-2in multi-reference mode.- For
seedance-2, each reference video must be β€ 15 seconds long and β€ 720p (longest side β€ 1280 px). - For
kling-3.0-motion-control, the reference video must be between 3 and 30 seconds. - For
kling-o3-pro/kling-o3-standardEdit Video, the source video must be β€ 10 seconds.kling-o3-4kdoes not support Edit Video.
startFrameAssetId,endFrameAssetIdare optional. Dedicated keyframe fields forseedance-2and thekling-o3-*models.startFrameAssetId: first-frame image (taggedfirst_frameon the wire).endFrameAssetId: last-frame image (taggedend_frame). RequiresstartFrameAssetIdβ cannot be supplied alone.- For
seedance-2, keyframe mode is mutually exclusive with multi-reference mode (imageAssetIdN/videoAssetIdN). Using both in the same request returns 400. - For the
kling-o3-*models,startFrameAssetIdmay be combined with reference images (imageAssetId1..imageAssetId7), butendFrameAssetIdcannot β supplyingendFrameAssetIdtogether with any reference image returns 400.
-
characterOrientationis optional. Used only bykling-3.0-motion-control. Supported values:image(default),video. Controls whether the characterβs orientation in the output is anchored to the character image or to the performance video. multishot_prompt_Nandmultishot_duration_Nare optional. Multi-shot parameters for creating multi-scene videos. Supported by Kling 3.0 Pro/Standard and thekling-o3-*models. Each shot requires both a prompt and a duration. Shot duration range: 3β12 seconds. Total duration across all shots must not exceed 15 seconds. Prompt max length: 512 characters per shot. Shots must be numbered contiguously starting from 1.- Kling 3.0 Pro/Standard:
multishot_prompt_1..multishot_prompt_5/multishot_duration_1..multishot_duration_5β minimum 2 shots, maximum 5 shots. - Kling O3 4K/Pro/Standard:
multishot_prompt_1..multishot_prompt_6/multishot_duration_1..multishot_duration_6β minimum 2 shots, maximum 6 shots. For thekling-o3-*models, reference images supplied viaimageAssetId1..imageAssetId7are bound to a specific shot by referencing them as@IMG_Nin that shotβs prompt β e.g.@IMG_1inmultishot_prompt_2bindsimageAssetId1to shot 2. The same image may be referenced from multiple shots; an image not referenced by any shot is used as a global reference. An optional first frame for the whole sequence can be supplied viastartFrameAssetId.
- Kling 3.0 Pro/Standard:
-
exploreModeis optional. Set totrueif you have a Runway Unlimited plan and wish to execute relaxed generation. You are not charged credits for Explore mode generations. Not supported byveo-3.1β will return 400 if set totrue. -
replyUrlis optional, if not provided value from useapi.net account will be used. Place here your callback URL. API will call the providedreplyUrlonce Runway task completed or failed. Maximum length 1024 characters. We recommend using sites like webhook.site to test callback URL functionality. Callback body has the same JSON shape as GET /tasks/taskIdresponse. -
replyRefis optional, place here your reference id which will be stored and returned along with this Runway task response / result. Maximum length 1024 characters. maxJobsis optional, if not provided value for referenced by image assetId account will be used. Valid range: 1β10. Runway has dynamic query capacity and guarantees that, for a given account, at least one job will run β often two, and very rarely, three. If you have a single account linked, keep adding new jobs until you receive a429response. Once you get a429, wait for xx seconds or until at least one job completes, then try again. If you need to run more jobs in parallel, simply add more Runway accounts.
Responses
-
Use returned
taskIdto retrieve task status and results using GET /tasks/taskId. The generated video can be found in theartifactsarray of the task with the statusSUCCEEDED.If you specify the optional parameter
replyUrlthe API will call the providedreplyUrlwith task progress updates until the task is complete or fails.{ "task": { "id": "<uuid>", "name": "gen4.5 <your text prompt>", "image": null, "createdAt": "2026-03-05T10:00:00.000Z", "updatedAt": "2026-03-05T10:00:00.100Z", "taskType": "gen4.5", "options": { "name": "gen4.5 <your text prompt>", "text_prompt": "<your text prompt>", "seconds": 5, "seed": 12345, "watermark": false, "route": "t2v", "width": 1280, "height": 720, "assetGroupId": "<uuid>", "creationSource": "tool-mode", "exploreMode": true, "recordingEnabled": true }, "status": "PENDING", "error": null, "progressText": null, "progressRatio": "0", "estimatedTimeToStartSeconds": 0, "artifacts": [], "sharedAsset": null, "sourceAssetId": null, "taskId": "user:user_id-runwayml:account_email-task:task_uuid", "code": 200 } } -
{ "error": "<Error message>", "code": 400 } -
{ "error": "Unauthorized", "code": 401 } -
You do not have enough credits to run this task.
{ "error": "You do not have enough credits to run this task." } -
Wait in a loop for at least 10..30 seconds and retry again.
When
exploreModeistrueand another explore mode job is still running, the new job will not start until the current one completes. Since explore mode generations can take significantly longer, you may need to wait before retrying.There are two possible cases for API response 429:
- API query is full and can not accept new videos/create requests. Size of query defined by
maxJobsoptional parameter.
{ "error": "Account <Runway account email> is busy executing <Account maxJobs> tasks", "runningTasks": { "<Runway account email>": [ { "email": "<Runway account email>", "taskId": "user:user_id-runwayml:account_email-task:task_#1_uuid", "id": "<uuid>", "replyUrl": "<replyUrl if provided>", "replyRef": "<replyRef if provided>" } ] }, "code": 429 }- The API received an HTTP response status 429 from Runway. Runway has dynamic query management and may limit the number of simultaneously executed tasks based on internal service load and policies.
{ "error": "You have too many tasks running or pending. Please wait for some of them to finish before starting more." } - API query is full and can not accept new videos/create requests. Size of query defined by
Model
{ // TypeScript, all fields are optional
taskId: string,
id: string,
name: string,
image: string,
createdAt: string,
updatedAt: string,
taskType: string,
options: {
name: string,
text_prompt: string,
seconds: number,
seed: number,
watermark: boolean,
route: string,
width: number,
height: number,
exploreMode: boolean,
assetGroupId: string,
creationSource: string,
recordingEnabled: boolean
},
status: string,
progressText: string,
progressRatio: number,
estimatedTimeToStartSeconds: number,
artifacts: any[],
sharedAsset: any,
error: {
errorMessage: string,
reason: string,
message: string,
moderation_category: string,
tally_asimov: boolean
},
code: number,
replyUrl: string,
replyRef: string
}
Examples
-
curl -H "Accept: application/json" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer β¦" \ -X POST "https://api.useapi.net/v1/runwayml/videos/create" \ -d '{"model": "gen4.5", "text_prompt": "A cinematic aerial shot of a coastal city at golden hour", "duration": 5}' -
const model = "gen4.5"; const text_prompt = "A cinematic aerial shot of a coastal city at golden hour"; const duration = 5; const apiUrl = `https://api.useapi.net/v1/runwayml/videos/create`; const token = "API token"; const data = { method: 'POST', headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' } }; data.body = JSON.stringify({ model, text_prompt, duration }); const response = await fetch(apiUrl, data); const result = await response.json(); console.log("response", {response, result}); -
import requests model = "gen4.5" text_prompt = "A cinematic aerial shot of a coastal city at golden hour" duration = 5 apiUrl = f"https://api.useapi.net/v1/runwayml/videos/create" token = "API token" headers = { "Content-Type": "application/json", "Authorization" : f"Bearer {token}" } body = { "model": f"{model}", "text_prompt": f"{text_prompt}", "duration": duration } response = requests.post(apiUrl, headers=headers, json=body) print(response, response.json())