Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.runflow.io/llms.txt

Use this file to discover all available pages before exploring further.

Pricing: $0.112/second. Endpoint: POST /v1/models/kuaishou/kling-video/v3/pro/image-to-video/runs.
Kling 3.0 Pro: Top-tier image-to-video with cinematic visuals, fluid motion, and native audio generation, with custom element support.

Overview

Pricing

  • Base price: $0.112/second
  • Note: Without audio

Kling v3 Pro - Image to Video API

Endpoint: POST /v1/models/kuaishou/kling-video/v3/pro/image-to-video/runs

Run the model

Python

import requests

response = requests.post(
    "https://api.runflow.io/v1/models/kuaishou/kling-video/v3/pro/image-to-video/runs",
    headers={"Authorization": "Bearer RUNFLOW_API_KEY"},
    json={
        "input": {
            "prompt": "Gentle head turn with a warm smile, hair blowing slightly in a soft breeze, cinematic portrait",
            "start_image_url": "https://public.runflow.io/images/models/_base/portrait-woman-studio.png"
        },
        "callback_url": "https://your-server.com/webhook"
    },
)

data = response.json()
print(data)

Node.js

const response = await fetch(
  "https://api.runflow.io/v1/models/kuaishou/kling-video/v3/pro/image-to-video/runs",
  {
    method: "POST",
    headers: {
      "Authorization": "Bearer RUNFLOW_API_KEY",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
        "input": {
            "prompt": "Gentle head turn with a warm smile, hair blowing slightly in a soft breeze, cinematic portrait",
            "start_image_url": "https://public.runflow.io/images/models/_base/portrait-woman-studio.png"
        },
        "callback_url": "https://your-server.com/webhook"
    }),
  }
);

const data = await response.json();
console.log(data);

cURL

curl -X POST https://api.runflow.io/v1/models/kuaishou/kling-video/v3/pro/image-to-video/runs \
  -H "Authorization: Bearer $RUNFLOW_API_KEY" \
  -H "Content-Type: application/json" \
  --data-binary @- <<'JSON'
{
    "input": {
        "prompt": "Gentle head turn with a warm smile, hair blowing slightly in a soft breeze, cinematic portrait",
        "start_image_url": "https://public.runflow.io/images/models/_base/portrait-woman-studio.png"
    },
    "callback_url": "https://your-server.com/webhook"
}
JSON

Request parameters

ParameterTypeRequiredDescription
inputobjectrequiredModel input parameters. See “Input schema” below.
callback_urlstring | nulloptionalWebhook URL - POSTed when the run reaches a terminal state.
metadataobject | nulloptionalArbitrary key-value pairs attached to the run.

Input schema

FieldTypeRequiredAllowed valuesDescription
promptstringoptionalAnyText prompt for video generation. Either prompt or multi_prompt must be provided, but not both.
elementsjsonoptionalAnyElements (characters/objects) to include in the video. Each example can either be an image set (frontal + reference images) or a video. Reference in prompt as @Element1, @Element2, etc.
multi_promptjsonoptionalSee nested fields belowList of prompts for multi-shot video generation. If provided, divides the video into multiple shots.
generate_audiobooleanoptionalAnyWhether to generate native audio for the video. Supports Chinese and English voice output. Other languages are automatically translated to English. For English speech, use lowercase letters; for acronyms or proper nouns, use uppercase.
durationstringoptional3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15The duration of the generated video in seconds
shot_typestringoptionalAnyThe type of multi-shot video generation. Required when multi_prompt is provided.
start_image_urlimagerequiredAnyURL of the image to be used for the video
end_image_urlimageoptionalAnyURL of the image to be used for the end of the video
negative_promptstringoptionalAny
cfg_scalefloatoptionalAnyThe CFG (Classifier Free Guidance) scale is a measure of how close you want the model to stick to your prompt.

Output schema

FieldTypeDescription
outputsjsonUnified output array - one entry per generated artifact with url/type/width/height/duration/etc.
nsfw_detectedjsontrue if the provider flagged output as NSFW, false if cleared, null if not checked.
seedjsonDeterministic seed used for generation, or null if the provider doesn’t return one.
timingjsonProvider timing info (inference_ms etc.), or null.

Callback payload

When you provide a callback_url, Runflow POSTs to it once the run reaches a terminal state.
FieldTypeDescription
eventstringEvent type: “run.completed”, “run.failed”, or “run.cancelled”.
run_idstringThe unique identifier of the run.
statusstringTerminal status: “succeeded”, “failed”, or “cancelled”.
outputobject | nullThe run output. Null if the run failed or was cancelled.
duration_msnumber | nullTotal run duration in milliseconds.
created_atstring | nullISO 8601 timestamp when the run was created.
completed_atstring | nullISO 8601 timestamp when the run reached terminal state.
metadataobject | nullThe metadata object passed at run creation, if any.
  • Retries: 3 attempts with exponential backoff (1s, 2s). Retries on 5xx / network errors only.
  • Headers: Runflow-Request-Id is always sent. Runflow-Signature is sent if a signing secret is configured.

Additional Resources

Browse all models

Browse the catalog.

Run lifecycle

Callbacks, polling, statuses.

Callbacks

Handle async results.

Pricing

How requests bill out.