Kling O3
Kuaishou Kling O3. Cinematic motion from a prompt or a picture. With a picture attached, the clip keeps the picture's shape.
Model id: kling-o3
Parameters
Only model and prompt are required. Omitted optional params use the default. An unsupported value returns 400. These values are the same ones GET /v1/models?type=video reports.
| Parameter | Allowed | Default | Required |
|---|---|---|---|
quality |
std, pro | std | No |
duration |
5, 10 | 5 | No |
seed |
0-2147483647 | — | No |
Attachment roles and upload limits
| Role | Content block | Max per request | Supported | Required |
|---|---|---|---|---|
Opening
first_frame
|
image_url |
— | Yes | Optional |
Ending
last_frame
|
image_url |
— | No | Optional |
Reference image
reference_image
|
image_url |
7 | Yes | Optional |
Reference video
reference_video
|
video_url |
— | No | Optional |
Source video (edit/motion reference)
source_video
|
video_url |
— | No | Optional |
| Combination | Allowed | Notes |
|---|---|---|
| Opening + Ending | No | Sets the clip's opening and closing image. This is only offered on models that accept a last frame. Other models refuse the second image. |
| Opening + Reference image | Yes | Refused. A picture used as a frame and a picture used as a likeness reference are different modes, and no model accepts both at once. |
| Opening + Reference video | No | Allowed. A video reference is a different medium from a frame, so the two do not compete. |
| Reference image | Yes | Up to the per-request maximum in the table above. The cap differs per model, so one model's number never applies to another. |
| Source video (edit/motion reference) | No | The source clip's own duration is billed on top of the output, so a 5s edit of a 5s clip bills as 10 seconds. |
| Source image (photo to edit) | No | Never accepted on a video model, whatever its other capabilities. Editing a photo belongs on the image endpoint. |
The role token distinguishes two attachments. First frame and last frame both travel as an image_url content block, so the block alone cannot identify them.
On this endpoint, a request may carry only one image_url attachment, and a second one is rejected even though /media allows more. This is the most common cause of support requests.
Sending a role a model does not support returns 422 model_capability_unsupported.
Per-file and total byte ceilings differ per model. One model's numbers never apply to another.
Limits have not yet been published for this model.
Example
curl https://console.aimodelhub.ai/v1/videos \
-H "Authorization: Bearer $AIHUB_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"kling-o3","prompt":"a drone shot over a canyon"}'Metered once at this model's list price on success and debited from the wallet. See the Video overview for the full request/response shape.