Videos

March 5, 2026 (May 14, 2026)

Table of contents

  1. Model Comparison: Seedance
  2. Model Comparison: HappyHorse
  3. Model Comparison: Kling
  4. Model Comparison: Kling O3
  5. Model Comparison: Kling Motion Control
  6. Model Comparison: Wan
  7. Model Comparison: Veo / Sora
  8. Model Comparison: Gen-4.5 / Gen-4
  9. Request Headers
  10. Request Body
  11. Responses
  12. Model
  13. Examples
  14. 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; endFrameAssetId requires startFrameAssetId and 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 from imageAssetId1..imageAssetId7 are bound to a shot by referencing them as @IMG_N in that shot’s prompt.
  • Edit Video (kling-o3-pro / kling-o3-standard only) β€” 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
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
}
  • model is 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.

  • email is optional, if not provided API will randomly select available account.

  • text_prompt describes your video in detail. Required for gen4, gen4-turbo, kling-2.6-pro, kling-2.6-i2v, and wan-2.6-flash. Not supported for wan-2.2-animate. Optional for all other models. Maximum length varies by model (1000–5000 characters; 3500 for seedance-2; 2500 for kling-3.0-motion-control, happyhorse-1.0, and the kling-o3-* models). For seedance-2, prompts may reference uploaded assets by slot using @IMG_1..@IMG_11 and @VID_1..@VID_3. For the kling-o3-* models, prompts may reference uploaded assets by slot using @IMG_1..@IMG_7.

  • duration is 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 and duration is 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_ratio is optional. Default varies by model. Available values depend on model β€” see model comparison.

  • resolution is 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)
  • audio is optional. Default true. Set to false to 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. For kling-3.0-motion-control, audio controls whether the original audio of the reference video (videoAssetId) is preserved in the output. For the kling-o3-* models in Edit Video mode, audio controls whether the original sound of the source video (videoAssetId) is preserved in the output.

  • seed is optional. Only supported by Gen-4.5, Gen-4, and Gen-4 Turbo (auto-generated if not provided). Valid range 1–4294967294.

  • imageAssetId1, imageAssetId2 … imageAssetId11 are 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 image
    • imageAssetId2: end frame image (only for models supporting endFrame: Gen-4.5, Kling 3.0 Pro/Standard, Veo 3.1)
    • imageAssetId3 … imageAssetId11: additional reference image slots, used only by seedance-2 in multi-reference mode.
    • For the kling-o3-* models, imageAssetId1..imageAssetId7 are 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 via endFrameAssetId (not imageAssetId2).
  • videoAssetId, videoAssetId2, videoAssetId3 are optional. Specify the assetIds of reference videos. Use POST /assets to upload a video asset.
    • videoAssetId: the single reference video for wan-2.2-animate (required for that model) and for kling-3.0-motion-control (required as the performance/motion source). Also the source video for kling-o3-pro / kling-o3-standard Edit Video mode.
    • videoAssetId2, videoAssetId3: additional video-reference slots used only by seedance-2 in 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-standard Edit Video, the source video must be ≀ 10 seconds. kling-o3-4k does not support Edit Video.
  • startFrameAssetId, endFrameAssetId are optional. Dedicated keyframe fields for seedance-2 and the kling-o3-* models.
    • startFrameAssetId: first-frame image (tagged first_frame on the wire).
    • endFrameAssetId: last-frame image (tagged end_frame). Requires startFrameAssetId β€” 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, startFrameAssetId may be combined with reference images (imageAssetId1..imageAssetId7), but endFrameAssetId cannot β€” supplying endFrameAssetId together with any reference image returns 400.
  • characterOrientation is optional. Used only by kling-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_N and multishot_duration_N are optional. Multi-shot parameters for creating multi-scene videos. Supported by Kling 3.0 Pro/Standard and the kling-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 the kling-o3-* models, reference images supplied via imageAssetId1..imageAssetId7 are bound to a specific shot by referencing them as @IMG_N in that shot’s prompt β€” e.g. @IMG_1 in multishot_prompt_2 binds imageAssetId1 to 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 via startFrameAssetId.
  • exploreMode is optional. Set to true if you have a Runway Unlimited plan and wish to execute relaxed generation. You are not charged credits for Explore mode generations. Not supported by veo-3.1 β€” will return 400 if set to true.

  • replyUrl is optional, if not provided value from useapi.net account will be used. Place here your callback URL. API will call the provided replyUrl once 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/taskId response.

  • replyRef is optional, place here your reference id which will be stored and returned along with this Runway task response / result. Maximum length 1024 characters.

  • maxJobs is 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 a 429 response. Once you get a 429, 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
  • 200 OK

    Use returned taskId to retrieve task status and results using GET /tasks/taskId. The generated video can be found in the artifacts array of the task with the status SUCCEEDED.

    If you specify the optional parameter replyUrl the API will call the provided replyUrl with 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
        }
    }
    
  • 400 Bad Request

    {
      "error": "<Error message>",
      "code": 400
    }
    
  • 401 Unauthorized

    {
      "error": "Unauthorized",
      "code": 401
    }
    
  • 412 Insufficient credits

    You do not have enough credits to run this task.

    {
        "error": "You do not have enough credits to run this task."
    }
    
  • 429 Too Many Requests

    Wait in a loop for at least 10..30 seconds and retry again.

    When exploreMode is true and 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:

    {
        "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."
    }
    
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())
    
Try It