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_url``string`Required. Start frame image URL
`prompt``string`Text prompt (required if `multi_prompt` not set)
`end_image_url``string`Optional end frame image URL
`duration``DurationEnum``"5"`Video length in seconds: `3``15`
`generate_audio``boolean`Generate native audio
`multi_prompt``KlingV3MultiPromptElement[]`Multi-shot prompt list (overrides `prompt`)
`shot_type``string``"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-video`O3 Pro tier, higher quality, custom elements
`fal-ai/kling-video/v3/pro/image-to-video`Kling v3 Pro, cinematic output
`fal-ai/kling-video/v3/standard/image-to-video`Kling v3 Standard
`fal-ai/kling-video/o3/standard/text-to-video`O3 Standard, text-to-video