Kling logo
fal-ai/kling-video/o3/standard/image-to-video

Generate a video by taking a start frame and an end frame, animating the transition between them while following text-driven style and scene guidance.
Inference
Commercial use
Partner

Input

Type # to reference inputs.

Additional Settings

Customize your input with more control.

Result

Idle

What would you like to do next?

For every second of video you generated, you will be charged $0.084 (audio off) or $0.112 (audio on). For example, a 5s video with audio on will cost $0.56.

Logs

Run Kling o3 Image To Video API on fal

Kling O3 Standard image-to-video on fal.ai. Animate a transition between a start frame and an optional end frame, guided by text prompts. The more affordable sibling to O3 Pro, sharing the same model generation at a lower price point.


Features

  • Videos up to 15 seconds
  • Start + end frame support: animate the transition between two images
  • Multi-prompt support for multi-shot narrative control
  • Native audio generation (Chinese and English; other languages auto-translated)
  • Strong subject and text consistency
  • Scene cuts and ultra-high-definition storyboards

Note: This endpoint uses image_url (not start_image_url) — this differs from v3 endpoints.


Pricing

Audio offAudio on
Per second$0.084$0.112
5s example$0.42$0.56
15s example$1.26$1.68

Generation Speed

In testing, O3 Standard completed a 5s generation in ~94 seconds, compared to ~318 seconds for a comparable O3 Pro job. Standard is roughly 3x faster than Pro.


Quick Start

Install
bash
npm install --save @fal-ai/client
bash
export FAL_KEY="YOUR_API_KEY"
Submit a request
javascript
import { fal } from "@fal-ai/client";

const result = await fal.subscribe("fal-ai/kling-video/o3/standard/image-to-video", {
  input: {
    image_url: "https://example.com/start-frame.png",
    end_image_url: "https://example.com/end-frame.png",
    prompt: "The character walks forward slowly, camera following from behind.",
    duration: "10",
    generate_audio: false,
  },
  logs: true,
  onQueueUpdate: (update) => {
    if (update.status === "IN_PROGRESS") {
      update.logs.map((log) => log.message).forEach(console.log);
    }
  },
});

console.log(result.data.video.url);
Python
python
import fal_client

def on_queue_update(update):
    if isinstance(update, fal_client.InProgress):
        for log in update.logs:
            print(log["message"])

result = fal_client.subscribe(
    "fal-ai/kling-video/o3/standard/image-to-video",
    arguments={
        "image_url": "https://example.com/start-frame.png",
        "end_image_url": "https://example.com/end-frame.png",
        "prompt": "The character walks forward slowly, camera following from behind.",
        "duration": "10",
        "generate_audio": False,
    },
    with_logs=True,
    on_queue_update=on_queue_update,
)
print(result)

Input Parameters

ParameterTypeDefaultDescription
image_urlstring—Required. Start frame image URL
promptstring—Text prompt (required if multi_prompt not set)
end_image_urlstring—Optional end frame image URL
durationDurationEnum"5"Video length in seconds: 3–15
generate_audioboolean—Generate native audio
multi_promptKlingV3MultiPromptElement[]—Multi-shot prompt list (overrides prompt)
shot_typestring"customize"Required when using multi_prompt

Start + End Frame

Supply both image_url and end_image_url to animate a transition between two specific frames. The model interpolates the motion between them while following your text prompt.

javascript
{
  image_url: "https://example.com/scene-open.png",
  end_image_url: "https://example.com/scene-close.png",
  prompt: "The door slowly swings open. Dust motes drift in the light.",
  duration: "5",
}

Multi-Prompt (Multi-Shot)

Divide the video into multiple shots, each with its own prompt and duration:

javascript
{
  image_url: "https://example.com/start.png",
  multi_prompt: [
    { prompt: "Wide shot: the figure approaches the gate.", duration: "5" },
    { prompt: "Close-up: her hand reaches for the handle.", duration: "5" },
  ],
  shot_type: "customize",
  duration: "10",
}

Output

json
{
  "video": {
    "url": "https://v3b.fal.media/files/...",
    "content_type": "video/mp4",
    "file_name": "output.mp4",
    "file_size": 12037975
  }
}

Infrastructure

  • Concurrency alias: fal-ai/kling-video-v3 (shared across all v3/o3 endpoints)
  • Default concurrency limit: 1 per user (overrides available on request)
  • For long jobs, use fal.queue.submit + webhook rather than blocking

O3 Standard vs. O3 Pro

O3 StandardO3 Pro
Price (audio off)$0.084/s$0.112/s
Price (audio on)$0.112/s$0.168/s
Generation speed (5s job)~94s~318s
Custom element supportNoYes
Use caseSpeed + cost efficiencyMaximum quality

EndpointDescription
fal-ai/kling-video/o3/pro/image-to-videoO3 Pro tier, higher quality, custom elements
fal-ai/kling-video/v3/pro/image-to-videoKling v3 Pro, cinematic output
fal-ai/kling-video/v3/standard/image-to-videoKling v3 Standard
fal-ai/kling-video/o3/standard/text-to-videoO3 Standard, text-to-video