Kling O3 API reference
All-in-one Kling: create, animate, reference and edit up to 4K
Call Kling O3 from your own code with one PopNow API key. Below are the exact model IDs to send, every input field the model accepts, what each request costs in credits, and a request you can paste into a terminal.
At a glance
- Made by
- Kuaishou
- Output
- Video
- From
- 10.08 credits per second of output ($0.1008)
1 credit = $0.01. A task holds the highest possible charge when it is accepted and settles the real amount when it finishes, rounded up to whole credits; failed tasks are not charged. Ask POST /api/v1/jobs/quote for the exact figure before you run.
Create Video
kling/o3/text-to-video
Price
| Option | Credits (per second of output) | US dollars |
|---|---|---|
generate_audio = false, resolution = 720p | 10.08 | $0.1008 |
generate_audio = false, resolution = 1080p | 13.44 | $0.1344 |
generate_audio = true, resolution = 720p | 13.44 | $0.1344 |
generate_audio = true, resolution = 1080p | 16.8 | $0.168 |
generate_audio = false, resolution = 4k | 50.4 | $0.504 |
generate_audio = true, resolution = 4k | 50.4 | $0.504 |
Parameters
| Field | Type | Default | Allowed | What it does |
|---|---|---|---|---|
promptRequired | string | — | up to 2,500 characters | Describe the scene, the action and the camera. With sound on, add dialogue in quotes and the sounds you want. |
aspect_ratioOptional | string | 16:9 | 16:9, 9:16, 1:1 | Output aspect ratio. |
resolutionOptional | string | 720p | 720p, 1080p, 4k | Output resolution. Higher tiers cost more per second. |
generate_audioOptional | boolean | false | — | Generate a native soundtrack (voices, effects, ambience) with the picture. Audio costs more per second. |
duration_secondsOptional | integer | 5 | 3 to 15 | Output length in whole seconds, from 3 to 15. Billed per second. |
shot_typeOptional | string | single | single, multi, customize | single keeps one continuous shot; multi lets the model cut the prompt into several shots on its own; customize follows the shot list you give in multi_prompt. |
multi_promptOptional | array<object> | — | up to 6 items | Shot list for shot_type customize: one entry per shot, in order, each with its own prompt and length in seconds. The lengths must add up to duration_seconds. |
Example request
This request runs as it is; any field you leave out uses its default. Put your key in POPNOW_API_KEY first.
curl -X POST "https://api.popnow.ai/api/v1/jobs/createTask" \
-H "Authorization: Bearer $POPNOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"model": "kling/o3/text-to-video",
"input": {
"prompt": "A paper boat drifts down a rain-soaked street at dusk, neon signs reflecting in the water, slow tracking shot at ground level",
"duration_seconds": 5,
"generate_audio": false,
"resolution": "720p"
}
}'The response carries a taskId straight away. Read the result with GET /api/v1/jobs/recordInfo, or add callBackUrl to be notified.
curl "https://api.popnow.ai/api/v1/jobs/recordInfo?taskId=TASK_ID_FROM_CREATE_TASK" \
-H "Authorization: Bearer $POPNOW_API_KEY"Image to Video
kling/o3/image-to-video
Price
| Option | Credits (per second of output) | US dollars |
|---|---|---|
generate_audio = false, resolution = 720p | 10.08 | $0.1008 |
generate_audio = false, resolution = 1080p | 13.44 | $0.1344 |
generate_audio = true, resolution = 720p | 13.44 | $0.1344 |
generate_audio = true, resolution = 1080p | 16.8 | $0.168 |
generate_audio = false, resolution = 4k | 50.4 | $0.504 |
generate_audio = true, resolution = 4k | 50.4 | $0.504 |
Parameters
| Field | Type | Default | Allowed | What it does |
|---|---|---|---|---|
promptRequired | string | — | up to 2,500 characters | Describe what happens after the opening frame: the action, the camera and, with sound on, the sounds. |
image_urlRequired | string (uri) | — | — | Opening frame. The clip starts from this image. |
last_image_urlOptional | string (uri) | — | — | Optional closing frame the clip should end on. |
resolutionOptional | string | 720p | 720p, 1080p, 4k | Output resolution. Higher tiers cost more per second. |
generate_audioOptional | boolean | false | — | Generate a native soundtrack (voices, effects, ambience) with the picture. Audio costs more per second. |
duration_secondsOptional | integer | 5 | 3 to 15 | Output length in whole seconds, from 3 to 15. Billed per second. |
shot_typeOptional | string | single | single, multi, customize | single keeps one continuous shot; multi lets the model cut the prompt into several shots on its own; customize follows the shot list you give in multi_prompt. |
multi_promptOptional | array<object> | — | up to 6 items | Shot list for shot_type customize: one entry per shot, in order, each with its own prompt and length in seconds. The lengths must add up to duration_seconds. |
Example request
This request runs as it is; any field you leave out uses its default. Put your key in POPNOW_API_KEY first.
The example uses PopNow sample files in image_url. Replace them with your own public HTTPS links, uploads or saved assets.
curl -X POST "https://api.popnow.ai/api/v1/jobs/createTask" \
-H "Authorization: Bearer $POPNOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"model": "kling/o3/image-to-video",
"input": {
"prompt": "He lands softly on the rooftop, laughs and turns toward the camera while the balloons sway in the evening breeze; slow push-in",
"image_url": "https://media.popnow.ai/influencer/examples/marco.webp",
"duration_seconds": 5,
"generate_audio": false,
"resolution": "720p"
}
}'The response carries a taskId straight away. Read the result with GET /api/v1/jobs/recordInfo, or add callBackUrl to be notified.
curl "https://api.popnow.ai/api/v1/jobs/recordInfo?taskId=TASK_ID_FROM_CREATE_TASK" \
-H "Authorization: Bearer $POPNOW_API_KEY"Reference to Video
kling/o3/reference-to-video
Price
| Option | Credits (per second of output) | US dollars |
|---|---|---|
generate_audio = false, resolution = 720p | 10.08 | $0.1008 |
generate_audio = false, resolution = 1080p | 13.44 | $0.1344 |
generate_audio = true, resolution = 720p | 13.44 | $0.1344 |
generate_audio = false, resolution = 720p, with_video = true | 15.12 | $0.1512 |
generate_audio = true, resolution = 1080p | 16.8 | $0.168 |
generate_audio = false, resolution = 1080p, with_video = true | 20.16 | $0.2016 |
generate_audio = false, resolution = 4k | 62.85 | $0.6285 |
generate_audio = true, resolution = 4k | 62.85 | $0.6285 |
Parameters
| Field | Type | Default | Allowed | What it does |
|---|---|---|---|---|
promptRequired | string | — | up to 2,500 characters | Say who and what each reference is (<<<image_1>>>, <<<image_2>>> and so on) and describe the shot they should produce. |
reference_image_urlsRequired | array<string (uri)> | — | up to 7 items | Reference images for characters, objects, outfits or places, up to 7. Refer to them in the prompt as <<<image_1>>>, <<<image_2>>> and so on. |
reference_video_urlsOptional | array<string (uri)> | — | up to 1 items | Optional reference video (one clip) whose motion, camera or characters the new shot should draw on. Refer to it in the prompt as <<<video_1>>>. With a video, use up to 4 reference images. A run with a reference video is billed at a higher per-second rate. |
elementsOptional | array<object> | — | up to 1 items | One named subject built from 2 to 4 images of the same character or object. Write @name in the prompt where it should appear. 4K only. |
aspect_ratioOptional | string | 16:9 | 16:9, 9:16, 1:1 | Output aspect ratio. |
resolutionOptional | string | 720p | 720p, 1080p, 4k | Output resolution. Higher tiers cost more per second. |
generate_audioOptional | boolean | false | — | Generate a native soundtrack (voices, effects, ambience) with the picture. Audio costs more per second. Not available with a reference video. |
keep_original_audioOptional | boolean | true | — | Keep the reference video's own sound in the result. Only matters when a reference video is given. |
duration_secondsOptional | integer | 5 | 3 to 15 | Output length in whole seconds, from 3 to 15. Billed per second. |
shot_typeOptional | string | single | single, multi, customize | single keeps one continuous shot; multi lets the model cut the prompt into several shots on its own; customize follows the shot list you give in multi_prompt. |
multi_promptOptional | array<object> | — | up to 6 items | Shot list for shot_type customize: one entry per shot, in order, each with its own prompt and length in seconds. The lengths must add up to duration_seconds. |
Example request
This request runs as it is; any field you leave out uses its default. Put your key in POPNOW_API_KEY first.
The example uses PopNow sample files in reference_image_urls. Replace them with your own public HTTPS links, uploads or saved assets.
curl -X POST "https://api.popnow.ai/api/v1/jobs/createTask" \
-H "Authorization: Bearer $POPNOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"model": "kling/o3/reference-to-video",
"input": {
"prompt": "The man from the reference image jogs across a sunlit rooftop at golden hour and smiles at the camera; smooth tracking shot",
"reference_image_urls": [
"https://media.popnow.ai/influencer/examples/ava.webp"
],
"duration_seconds": 5,
"generate_audio": false,
"resolution": "720p"
}
}'The response carries a taskId straight away. Read the result with GET /api/v1/jobs/recordInfo, or add callBackUrl to be notified.
curl "https://api.popnow.ai/api/v1/jobs/recordInfo?taskId=TASK_ID_FROM_CREATE_TASK" \
-H "Authorization: Bearer $POPNOW_API_KEY"Edit Video
kling/o3/video-edit
Price
| Option | Credits (per second of output) | US dollars |
|---|---|---|
720p | 18.78 | $0.1878 |
1080p | 25.2 | $0.252 |
Parameters
| Field | Type | Default | Allowed | What it does |
|---|---|---|---|---|
promptRequired | string | — | up to 2,500 characters | Say what to change in the clip: the subject, outfit, setting, style or weather. Anything you do not mention stays as it is. |
video_urlRequired | string (uri) | — | — | Source clip to edit, 3 to 10 seconds, at least 720 pixels on each side. The result is as long as this clip. |
elementsOptional | array<object> | — | up to 1 items | One named subject to bring into the edited clip, built from 2 to 4 images of the same character or object. Write @name in the prompt where it should appear. |
reference_image_urlsOptional | array<string (uri)> | — | up to 4 items | Optional reference images, up to 4, for a new character, outfit, object or style. Refer to them as <<<image_1>>>, <<<image_2>>> and so on. |
resolutionOptional | string | 720p | 720p, 1080p | Output resolution. Higher tiers cost more per second. |
keep_original_audioOptional | boolean | true | — | Keep the source clip's own sound in the result. |
Example request
This request runs as it is; any field you leave out uses its default. Put your key in POPNOW_API_KEY first.
The example uses PopNow sample files in video_url. Replace them with your own public HTTPS links, uploads or saved assets.
curl -X POST "https://api.popnow.ai/api/v1/jobs/createTask" \
-H "Authorization: Bearer $POPNOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"model": "kling/o3/video-edit",
"input": {
"prompt": "Recolor the flowers in soft pastel blue; keep the face and the motion unchanged",
"video_url": "https://media.popnow.ai/effects/flower-bloom-1abd6efb.mp4",
"resolution": "720p"
}
}'The response carries a taskId straight away. Read the result with GET /api/v1/jobs/recordInfo, or add callBackUrl to be notified.
curl "https://api.popnow.ai/api/v1/jobs/recordInfo?taskId=TASK_ID_FROM_CREATE_TASK" \
-H "Authorization: Bearer $POPNOW_API_KEY"
