PopNowAPI Docs
Main content

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

OptionCredits (per second of output)US dollars
generate_audio = false, resolution = 720p10.08$0.1008
generate_audio = false, resolution = 1080p13.44$0.1344
generate_audio = true, resolution = 720p13.44$0.1344
generate_audio = true, resolution = 1080p16.8$0.168
generate_audio = false, resolution = 4k50.4$0.504
generate_audio = true, resolution = 4k50.4$0.504

Parameters

FieldTypeDefaultAllowedWhat it does
promptRequiredstring—up to 2,500 charactersDescribe the scene, the action and the camera. With sound on, add dialogue in quotes and the sounds you want.
aspect_ratioOptionalstring16:916:9, 9:16, 1:1Output aspect ratio.
resolutionOptionalstring720p720p, 1080p, 4kOutput resolution. Higher tiers cost more per second.
generate_audioOptionalbooleanfalse—Generate a native soundtrack (voices, effects, ambience) with the picture. Audio costs more per second.
duration_secondsOptionalinteger53 to 15Output length in whole seconds, from 3 to 15. Billed per second.
shot_typeOptionalstringsinglesingle, multi, customizesingle 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_promptOptionalarray<object>—up to 6 itemsShot 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.

POST /api/v1/jobs/createTask
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.

GET /api/v1/jobs/recordInfo
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

OptionCredits (per second of output)US dollars
generate_audio = false, resolution = 720p10.08$0.1008
generate_audio = false, resolution = 1080p13.44$0.1344
generate_audio = true, resolution = 720p13.44$0.1344
generate_audio = true, resolution = 1080p16.8$0.168
generate_audio = false, resolution = 4k50.4$0.504
generate_audio = true, resolution = 4k50.4$0.504

Parameters

FieldTypeDefaultAllowedWhat it does
promptRequiredstring—up to 2,500 charactersDescribe what happens after the opening frame: the action, the camera and, with sound on, the sounds.
image_urlRequiredstring (uri)——Opening frame. The clip starts from this image.
last_image_urlOptionalstring (uri)——Optional closing frame the clip should end on.
resolutionOptionalstring720p720p, 1080p, 4kOutput resolution. Higher tiers cost more per second.
generate_audioOptionalbooleanfalse—Generate a native soundtrack (voices, effects, ambience) with the picture. Audio costs more per second.
duration_secondsOptionalinteger53 to 15Output length in whole seconds, from 3 to 15. Billed per second.
shot_typeOptionalstringsinglesingle, multi, customizesingle 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_promptOptionalarray<object>—up to 6 itemsShot 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.

POST /api/v1/jobs/createTask
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.

GET /api/v1/jobs/recordInfo
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

OptionCredits (per second of output)US dollars
generate_audio = false, resolution = 720p10.08$0.1008
generate_audio = false, resolution = 1080p13.44$0.1344
generate_audio = true, resolution = 720p13.44$0.1344
generate_audio = false, resolution = 720p, with_video = true15.12$0.1512
generate_audio = true, resolution = 1080p16.8$0.168
generate_audio = false, resolution = 1080p, with_video = true20.16$0.2016
generate_audio = false, resolution = 4k62.85$0.6285
generate_audio = true, resolution = 4k62.85$0.6285

Parameters

FieldTypeDefaultAllowedWhat it does
promptRequiredstring—up to 2,500 charactersSay who and what each reference is (<<<image_1>>>, <<<image_2>>> and so on) and describe the shot they should produce.
reference_image_urlsRequiredarray<string (uri)>—up to 7 itemsReference 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_urlsOptionalarray<string (uri)>—up to 1 itemsOptional 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.
elementsOptionalarray<object>—up to 1 itemsOne 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_ratioOptionalstring16:916:9, 9:16, 1:1Output aspect ratio.
resolutionOptionalstring720p720p, 1080p, 4kOutput resolution. Higher tiers cost more per second.
generate_audioOptionalbooleanfalse—Generate a native soundtrack (voices, effects, ambience) with the picture. Audio costs more per second. Not available with a reference video.
keep_original_audioOptionalbooleantrue—Keep the reference video's own sound in the result. Only matters when a reference video is given.
duration_secondsOptionalinteger53 to 15Output length in whole seconds, from 3 to 15. Billed per second.
shot_typeOptionalstringsinglesingle, multi, customizesingle 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_promptOptionalarray<object>—up to 6 itemsShot 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.

POST /api/v1/jobs/createTask
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.

GET /api/v1/jobs/recordInfo
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

OptionCredits (per second of output)US dollars
720p18.78$0.1878
1080p25.2$0.252

Parameters

FieldTypeDefaultAllowedWhat it does
promptRequiredstring—up to 2,500 charactersSay what to change in the clip: the subject, outfit, setting, style or weather. Anything you do not mention stays as it is.
video_urlRequiredstring (uri)——Source clip to edit, 3 to 10 seconds, at least 720 pixels on each side. The result is as long as this clip.
elementsOptionalarray<object>—up to 1 itemsOne 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_urlsOptionalarray<string (uri)>—up to 4 itemsOptional reference images, up to 4, for a new character, outfit, object or style. Refer to them as <<<image_1>>>, <<<image_2>>> and so on.
resolutionOptionalstring720p720p, 1080pOutput resolution. Higher tiers cost more per second.
keep_original_audioOptionalbooleantrue—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.

POST /api/v1/jobs/createTask
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.

GET /api/v1/jobs/recordInfo
curl "https://api.popnow.ai/api/v1/jobs/recordInfo?taskId=TASK_ID_FROM_CREATE_TASK" \
  -H "Authorization: Bearer $POPNOW_API_KEY"

Next steps

On this page