Water-filled rice terraces curve down a hillside at sunrise, a sea of mist in the valley below and a pink and gold sky reflected in the water.

Kling O3 (Kling 3.0 Omni) API: access, pricing and code

Summary

Runway Dev gives you the official Kling O3 API, also called Kling 3.0 Omni, in two main tiers, Kling O3 Pro and Kling O3 4K, plus a smaller Standard tier. Kling O3 is Kling’s omni video model: it edits a video from a text prompt, and it generates clips with sound from text or from a first frame and reference images. The tiers take the same inputs at different output sizes. This page covers access, pricing, inputs and code, and how your coding agent can build the integration for you.

What is Kling O3?

Kling O3, also called Kling 3.0 Omni, is Kling’s video model for editing and generating in one model. Send it a clip and a prompt, and it rewrites the clip (the light, the weather, the style or what is in the frame) while the framing and the motion stay as they were. Send it text, or a first frame with reference images, and it makes a new clip of 3 to 15 seconds, with sound generated in the same pass and, if you ask for it, several shots in one clip.

Clip sent Kling O3 edit
One video-to-video request turns a sunny afternoon into blue hour, with the same tram, framing, motion and sound. Drag the divider to compare the clip sent with the edit.

Prompt

Change <<<video_1>>> to blue hour just after sunset: a deep blue sky, warm light glowing in the windows of the houses, the street lamps and the tram headlights on, their light reflecting on the cobblestones. Keep the street, the houses, the tram and its motion exactly the same.

What is the difference between Kling O3 and Kling 3.0?

Kling O3 and Kling 3.0 both generate video with sound on Runway Dev, from a text prompt on POST /v1/text_to_video or from a first frame on POST /v1/image_to_video, with the same tiers, durations and multi-shot prompts. What sets Kling O3 apart is editing: it takes a clip you already have and rewrites it from a prompt on POST /v1/video_to_video, keeping its framing, motion and sound. Kling 3.0 has no video-to-video endpoint.

On Runway Dev Kling O3 Kling 3.0
Edit a video (POST /v1/video_to_video) Yes, keeping the clip’s sound No
Generate from text (POST /v1/text_to_video) Yes Yes
Generate from images (POST /v1/image_to_video) A first frame, a last frame and reference images A first and a last frame
cfgScale Not taken Taken
Price with audio off The same rate as with audio Lower on Standard and Pro

For new clips without reference images, the Kling 3.0 API page covers that model. Kling O3 is the one to call when the job starts from a video you already have.

What are the ways to use Kling O3 on Runway Dev?

Kling O3 runs on Runway Dev four ways, all from one account:

Way in Best for What you need
Playground Trying a prompt, then copying the request as code A Runway Dev account
API and SDKs Calling Kling O3 from your own code An API key, plus the Node or Python SDK if you want one
Coding agent Having Claude Code, Codex or Cursor build the API integration into your product, tool or pipeline The Runway Dev MCP and skills, and an API key for live calls
Workflows A Kling O3 edit as one step with other models, run with one API call A workflow built in the Runway app and published as an endpoint

Kling O3 is also available in Model Router, a saved config you send with the request instead of a model ID. You set what to optimize for (cost, quality or latency), a maximum cost per generation and the models allowed, and the router picks one for each request sent to POST /v1/generate/video.

How do you get API access to Kling O3?

You get API access to Kling O3 with a Runway Dev account and an API key:

  1. Create an account at https://dev.runway.com.
  2. Create an API key in your project’s dashboard.
  3. Add credits to your project’s balance.
  4. Store the key in your environment as RUNWAYML_API_SECRET.
  5. Send a request with "model": "klingO3_pro" (or klingO3_4k, klingO3_standard) and the X-Runway-Version header to one of its endpoints. The code below is ready to run.

How much does the Kling O3 API cost?

The Kling O3 API on Runway Dev is billed per second of video, at one rate per tier whether you edit a clip or generate one, with or without audio: 17 credits ($0.17) per second on Kling O3 Pro and 43 credits ($0.43) per second on Kling O3 4K. An edit is billed by the length of the clip you send, because Kling O3 returns the whole clip edited. Kling O3 Standard costs 13 credits ($0.13) per second.

Kling O3 Pro

Credits USD
17 credits per second $0.17 per second

Kling O3 4K

Credits USD
43 credits per second $0.43 per second

Kling O3 Standard

Credits USD
13 credits per second $0.13 per second

Prices current as of October 22, 2026. 1 credit = $0.01.

Kling O3 4K, with its sound, at 43 credits ($0.43) per second.

Prompt

Slow aerial drift over water-filled rice terraces on a hillside at sunrise, mist lying in the valley below, the terraces reflecting the pink and gold sky, thin streams of water spilling from one terrace to the next. No people, no text. Audio: trickling water, morning birds, a soft wind.

How the billing works:

  • Audio doesn’t change the price. Every tier bills the same rate whether audio is on or off.
  • An edit bills the length of its source. A video-to-video request takes no duration: the clip in promptVideo sets how many seconds are billed.
  • Input images add nothing to the price. Only the seconds of video Kling O3 returns are billed.
  • A task that fails input moderation (SAFETY.INPUT.*) is still charged. See task failures for what each failure means.

Every rate is also listed in the docs pricing guide.

What inputs does Kling O3 accept?

Kling O3 accepts a prompt of up to 2,500 characters and makes clips of 3 to 15 seconds. Images and video go in as a first frame, references or the clip to edit, and each endpoint uses them its own way.

On POST /v1/video_to_video Kling O3 edits the clip in promptVideo from a promptText, which is required, and returns the whole clip at its own length and framing, so the request takes no duration or ratio. The clip can run up to 10 seconds, with each side at least 720 pixels. Add up to 4 reference images for something the edit should bring in. In the prompt, <<<video_1>>> stands for the clip and <<<image_1>>> for the first reference image. The edit keeps the clip’s own sound unless you send keepOriginalSound: false in providerSettings, and the request takes no audio field.

On POST /v1/image_to_video the clip starts from the image in promptImage, which needs a first frame and can add a last one. references adds images of a subject, an object or a style to bring into the clip, up to 7 images in all, keyframes included. The prompt names each image as <<<image_1>>>, <<<image_2>>> and so on, in the order the request sends them: the first frame, the last frame if there is one, then the references. The clip takes the first frame’s shape.

A first frame and one reference image: the clip starts on the clifftop and brings in the kite with its panels and colors.

Inputs

  • A grassy clifftop above the sea on a windy afternoon, long grass and wildflowers bent by the windFirst frame, image_1
  • A diamond-shaped kite with orange, teal and cream panels and a tail of orange and teal ribbon bowsReference, image_2

Prompt

The kite from <<<image_2>>> flies above the clifftop in <<<image_1>>>, held on a taut thin string that runs down out of the bottom of the frame. The wind tugs it up and to the side and its ribbon tail streams out behind it, while the long grass and wildflowers bend the same way. The camera tilts up slightly to keep the kite in frame. Audio: strong gusts of wind, the kite fabric fluttering, waves breaking far below.

On POST /v1/text_to_video the prompt alone makes the clip, at the ratio you pick from the tier’s list.

The tier sets the size, and ratio picks the shape. Kling O3 Pro takes One of 1920:1080, 1080:1920 or 1440:1440, Kling O3 4K takes One of 3840:2160, 2160:3840 or 2880:2880 and Kling O3 Standard takes One of 1280:720, 720:1280 or 960:960. A ratio copied from another tier fails validation.

providerSettings carries Kling’s own options:

  • multiPrompt is a list of shots, each with its own prompt and duration, that Kling O3 makes into one multi-shot clip on text-to-video and image-to-video. The shot durations add up to the clip’s length, within 3 to 15 seconds, and promptText becomes optional. It doesn’t combine with a last frame, and video-to-video doesn’t take it.
  • shotType is customize by default with multiPrompt, which follows your list of shots. intelligence has Kling plan the shots from promptText, which is then required.
  • keepOriginalSound, on video-to-video only, keeps the sound of the clip you edit. It defaults to true.

Here is every field, by tier and endpoint:

Kling O3 Pro

POST /v1/image_to_video

Field Accepts
model (required) klingO3_pro
audio true or false. Default true
providerSettings See the API reference
promptText Text, 2 to 2,500 characters
promptImage (required) One image, or a list of up to 2 images, each with an optional position of first or last
ratio One of 1920:1080, 1080:1920 or 1440:1440
duration Whole number from 3 to 15
references One image, or a list of images

POST /v1/text_to_video

Field Accepts
model (required) klingO3_pro
audio true or false. Default true
providerSettings See the API reference
promptText Text, 2 to 2,500 characters
ratio (required) One of 1920:1080, 1080:1920 or 1440:1440
duration Whole number from 3 to 15

POST /v1/video_to_video

Field Accepts
model (required) klingO3_pro
providerSettings See the API reference
promptText (required) Text, 2 to 2,500 characters
promptVideo (required) One video
references One image, or a list of images

Kling O3 4K

POST /v1/image_to_video

Field Accepts
model (required) klingO3_4k
audio true or false. Default true
providerSettings See the API reference
promptText Text, 2 to 2,500 characters
promptImage (required) One image, or a list of up to 2 images, each with an optional position of first or last
ratio One of 3840:2160, 2160:3840 or 2880:2880
duration Whole number from 3 to 15
references One image, or a list of images

POST /v1/text_to_video

Field Accepts
model (required) klingO3_4k
audio true or false. Default true
providerSettings See the API reference
promptText Text, 2 to 2,500 characters
ratio (required) One of 3840:2160, 2160:3840 or 2880:2880
duration Whole number from 3 to 15

POST /v1/video_to_video

Field Accepts
model (required) klingO3_4k
providerSettings See the API reference
promptText (required) Text, 2 to 2,500 characters
promptVideo (required) One video
references One image, or a list of images

Kling O3 Standard

POST /v1/image_to_video

Field Accepts
model (required) klingO3_standard
audio true or false. Default true
providerSettings See the API reference
promptText Text, 2 to 2,500 characters
promptImage (required) One image, or a list of up to 2 images, each with an optional position of first or last
ratio One of 1280:720, 720:1280 or 960:960
duration Whole number from 3 to 15
references One image, or a list of images

POST /v1/text_to_video

Field Accepts
model (required) klingO3_standard
audio true or false. Default true
providerSettings See the API reference
promptText Text, 2 to 2,500 characters
ratio (required) One of 1280:720, 720:1280 or 960:960
duration Whole number from 3 to 15

POST /v1/video_to_video

Field Accepts
model (required) klingO3_standard
providerSettings See the API reference
promptText (required) Text, 2 to 2,500 characters
promptVideo (required) One video
references One image, or a list of images

Images and videos go in as an HTTPS URL, a runway:// URI from an upload or a data URI; inputs lists sizes and formats. Each table shows what a field accepts on its own. Rules that combine fields are checked when the task is submitted, and the API reference has them in full.

Two more rules change what you send:

  • Reference images take no position. Keyframes go in promptImage, and a position in references fails validation.
  • Audio is generated unless you turn it off. On text-to-video and image-to-video, audio defaults to true; send false for a silent clip. The price stays the same.

How do you call Kling O3 from curl, Node and Python?

You call Kling O3 by sending klingO3_pro as the model to one of its endpoints. This request restyles a clip with POST /v1/video_to_video, and the other fields keep their defaults:

curl

curl -X POST https://api.dev.runwayml.com/v1/video_to_video \
  -H "Authorization: Bearer $RUNWAYML_API_SECRET" \
  -H "X-Runway-Version: 2024-11-06" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "klingO3_pro",
    "promptText": "Restyle <<<video_1>>> as a hand-painted watercolor animation on textured paper, with soft washes of color and visible brush strokes. Keep the composition, the boats and their motion the same.",
    "promptVideo": "https://d3phaj0sisr2ct.cloudfront.net/devportal/learn/kling-o3-api-code-harbor-source-7fde11f5.mp4"
  }'

# The response carries the task id. Poll the task until it finishes:
curl https://api.dev.runwayml.com/v1/tasks/$TASK_ID \
  -H "Authorization: Bearer $RUNWAYML_API_SECRET" \
  -H "X-Runway-Version: 2024-11-06"

Node.js

import RunwayML, { TaskFailedError } from '@runwayml/sdk';

// Reads your API key from RUNWAYML_API_SECRET.
const client = new RunwayML();

try {
  const task = await client.videoToVideo
    .create({
      model: 'klingO3_pro',
      promptText: 'Restyle <<<video_1>>> as a hand-painted watercolor animation on textured paper, with soft washes of color and visible brush strokes. Keep the composition, the boats and their motion the same.',
      promptVideo: 'https://d3phaj0sisr2ct.cloudfront.net/devportal/learn/kling-o3-api-code-harbor-source-7fde11f5.mp4',
    })
    .waitForTaskOutput();
  console.log(task.output);
} catch (error) {
  if (error instanceof TaskFailedError) {
    console.error(error.taskDetails);
  } else {
    throw error;
  }
}

Python

from runwayml import RunwayML, TaskFailedError

# Reads your API key from RUNWAYML_API_SECRET.
client = RunwayML()

try:
    task = client.video_to_video.create(
        model="klingO3_pro",
        prompt_text="Restyle <<<video_1>>> as a hand-painted watercolor animation on textured paper, with soft washes of color and visible brush strokes. Keep the composition, the boats and their motion the same.",
        prompt_video="https://d3phaj0sisr2ct.cloudfront.net/devportal/learn/kling-o3-api-code-harbor-source-7fde11f5.mp4",
    ).wait_for_task_output()
    print(task.output)
except TaskFailedError as error:
    print(error.task_details)
Clip sent Kling O3 edit
The request above, as Kling O3 returns it: drag the divider to compare the clip in promptVideo with the watercolor edit.

To edit on another tier, send klingO3_4k or klingO3_standard as the model. The rest of the request stays the same.

Generation is asynchronous:

  • The create request returns a task ID right away, and the video is made in the background.
  • Poll GET /v1/tasks/{id} with backoff until the status is SUCCEEDED, FAILED or CANCELLED. THROTTLED means the task is waiting in a queue, not rejected.
  • Output URLs are temporary, so download the video when the task succeeds. See outputs.
  • The SDKs poll for you. waitForTaskOutput() and wait_for_task_output() raise TaskFailedError with the task’s details when it fails. They also stop waiting after a default timeout while the task keeps running, so for long clips pass a longer timeout or keep polling the task ID.
  • To use your own rules instead of one fixed model, send a Model Router’s configId to POST /v1/generate/video in place of the model. Add dryRun to see which model it picks without creating a task.

Why does a Kling O3 API request fail?

A Kling O3 task fails with a failure code that names the cause, and a request that breaks an input rule is rejected before a task is made. The common ones:

  • SAFETY.INPUT.*: content moderation rejected an input. The suffix hints at which one but may not match. The task is charged and shouldn’t be retried as is: change the inputs first.
  • SAFETY.OUTPUT.*: the generated video was rejected by moderation. Change the prompt or references before you try again.
  • ASSET.INVALID: an input file’s dimensions, duration or another property is outside what the model takes. Check it against inputs and fix it before retrying.
  • A promptVideo rejected for its length or size: the clip to edit runs over 10 seconds, or a side is under 720 pixels. Trim it or export it at a larger size.
  • INTERNAL.BAD_OUTPUT.01: the output failed a quality check, often because of logos, watermarks or text in the input images. Remove them and retry.
  • THIRD_PARTY.UNAVAILABLE: the model’s provider didn’t return the video, because of an outage or load. Wait, then retry.
  • A validation error on ratio: the ratio belongs to another tier or another model. Pick one from the tier’s list above.
  • A request rejected for a missing prompt: text-to-video and image-to-video need a promptText or a multiPrompt, and video-to-video always needs a promptText.
  • Too many images on image-to-video: the first frame, the last frame and the references count together, up to 7.
  • An output link that stopped working: output URLs expire. Download the video when the task succeeds.

What does Runway Dev add when you call Kling O3?

Runway Dev serves Kling O3 next to Runway’s own models and other labs’ models, behind one API key and one credit balance: you build with a single key and pay a single bill, instead of an account, a key and an invoice per lab.

A coding agent can do the Kling O3 integration for you on Runway Dev, end to end. Connect the Runway Dev MCP and the agent works from your live account: the models your project can call with their current prices and input limits, your credit balance and the record behind any task. It writes the integration against what the API accepts today, and when a task fails it looks up the reason and fixes it. The Runway Dev skills show the agent how to integrate with the official SDKs and how to build with models, Model Routers, Recipes and Workflows.

With Workflows, a Kling O3 edit becomes one step of a larger pipeline: chain it with Runway’s own models and other labs’ models, for images, video and audio, and run the whole pipeline with a single API call. Workflows don’t need to be built by a developer. A creative or marketing teammate builds and tests one visually in the Runway app (how Workflows work), then publishes it as an endpoint that your code calls. When the team updates the workflow, your code keeps calling the same endpoint.

FAQ

How do I get API access to Kling O3?

Create a Runway Dev account at dev.runway.com, make an API key and add credits. Then send klingO3_pro, klingO3_4k or klingO3_standard as the model to any of its endpoints: POST /v1/image_to_video, POST /v1/text_to_video and POST /v1/video_to_video. To have a coding agent write the integration instead, connect the Runway Dev MCP and install the Runway Dev skills: the agent builds it from your live account, with the prices and input limits your project has today.

Can Kling O3 edit a video through an API?

Kling O3 edits a video through POST /v1/video_to_video on Runway Dev. Send the clip as promptVideo and describe the change in promptText; Kling O3 returns the whole clip edited, at its own length and framing, with its original sound kept by default. Reference images can bring a subject or an object into the edit.

How much does the Kling O3 API cost?

On Runway Dev, Kling O3 Pro costs 17 credits ($0.17) per second, Kling O3 4K 43 credits ($0.43) per second and Kling O3 Standard 13 credits ($0.13) per second, with or without audio. An edit is billed by the length of the clip you send. Prices are current as of October 22, 2026.

What is the difference between Kling O3 and Kling 3.0?

Kling O3 and Kling 3.0 both generate video with sound from text or a first frame on Runway Dev, in the same tiers, durations and multi-shot prompts. Kling O3 adds video editing on POST /v1/video_to_video, which Kling 3.0 doesn’t offer, and takes reference images next to the first frame. Kling 3.0 Standard and Pro have a lower rate with audio off, while Kling O3 bills one rate per tier.

Is the Kling O3 API on Runway Dev the official model?

Runway Dev’s Kling O3 API runs the official Kling 3.0 Omni model from Kling, in all three tiers. You call it with your Runway Dev API key and the model IDs klingO3_pro, klingO3_4k and klingO3_standard, like every other model on Runway Dev.

Can I use Kling O3 without writing code?

You can use Kling O3 on Runway Dev without writing code yourself. The playground sends a request from a form and gives it back as code, and a coding agent connected to the Runway Dev MCP writes the integration for you. A creative or marketing teammate can also build a workflow around Kling O3 in the Runway app and publish it as an endpoint your app calls.

Does the same Runway Dev API key work for Kling O3 and other models?

One Runway Dev API key calls Kling O3 and every other model your project can use, Runway’s own and other labs’, with the same SDKs, task flow and credit balance. Switching models means changing the model field, or the rules of a Model Router.

What are the Kling O3 model IDs on Runway Dev?

The model IDs are klingO3_pro for Kling O3 Pro, klingO3_4k for Kling O3 4K and klingO3_standard for Kling O3 Standard. Each works on the same three endpoints: POST /v1/image_to_video, POST /v1/text_to_video and POST /v1/video_to_video.

How long can a Kling O3 video be, and at what sizes?

A Kling O3 clip generated on Runway Dev runs 3 to 15 seconds, and an edit keeps the length of the clip you send. The tier sets the size: Kling O3 Pro renders One of 1920:1080, 1080:1920 or 1440:1440, and Kling O3 4K One of 3840:2160, 2160:3840 or 2880:2880.

Does Kling O3 generate audio through the API?

Kling O3 generates audio with the video by default on text-to-video and image-to-video; send audio: false for a silent clip. An edit keeps the sound of the clip you send instead, unless keepOriginalSound is false.

Can Kling O3 make multi-shot videos through the API?

Kling O3 makes a multi-shot clip when you send multiPrompt in providerSettings: a list of shots, each with its own prompt and duration, on text-to-video or image-to-video. Set shotType to intelligence to have Kling plan the shots from your promptText instead.

Why did my Kling O3 request fail with SAFETY.INPUT.TEXT?

SAFETY.INPUT.TEXT means content moderation rejected an input of your request; the suffix hints at the prompt but may not match. The task is charged and shouldn’t be retried as is, so change the prompt or inputs before you send it again.

Can I switch from Kling O3 to another video model without changing my code?

A Model Router lets you change models without touching your code. Send its configId to POST /v1/generate/video, and change the models it may use, its priority or its cost cap in the router.

Start building on Runway Dev