Kling Image-to-Video
Create a text-to-video task and follow it through completion or failure.
Overview
Create an asynchronous text-to-video task with a supported model. Use the returned task ID to retrieve its state, or provide callback_url for terminal delivery.
Quick start
- Create an API key and set it as RUNAPI_API_KEY.
- Choose a supported model and send a POST request whose body matches that model's schema.
- Store the returned task ID, then poll until a terminal state or handle the terminal callback.
Endpoint
- Base URL
https://runapi.ai- API version
v1- Authentication
Authorization: Bearer YOUR_API_TOKEN
Supported models
Open a model page for current pricing, rate limits, and commercial-usage details.
Request schema
Fields and allowed values depend on the selected model. When supplied, callback_url receives a terminal task delivery.
kling-o113 fields
aspect_ratiostringOutput aspect ratio.
Allowed values:16:9, 9:16, 1:1
Default: 16:9
callback_urlstringWebhook URL for async notifications.
duration_secondsintegerDuration in seconds.
Allowed values:5
Default: 5
enable_soundbooleanSound generation must remain disabled.
Default:false
first_frame_image_urlstringPublic HTTP(S) JPG, JPEG, or PNG first-frame image URL.
last_frame_image_urlstringPublic HTTP(S) JPG, JPEG, or PNG final-frame image URL; cannot be combined with reference_image_urls or reference_video_url.
modestringGeneration mode.
Allowed values:std, pro
Default: std
modelstringModel slug.
preserve_reference_video_audiobooleanPreserve the reference video's original audio.
Default:false
promptstringVideo description; reference media with matching numbered markers.
Range:1 - 2500
reference_image_urlsarrayOrdered public HTTP(S) JPG, JPEG, or PNG reference image URLs; cannot be combined with last_frame_image_url.
reference_video_typestringUse the video as a base edit or feature reference.
Allowed values:base, feature
Default: base
reference_video_urlstringPublic HTTP(S) MP4 or MOV reference video URL; cannot be combined with last_frame_image_url.
kling-v2.1-master-image-to-video9 fields
aspect_ratiostringOutput aspect ratio.
callback_urlstringWebhook URL for async notifications.
cfg_scalenumberGuidance scale (0-1).
duration_secondsintegerDuration in seconds.
Allowed values:5, 10
first_frame_image_urlstringFirst frame image URL.
last_frame_image_urlstringFinal frame image URL for supported image-to-video models.
modelstringModel slug.
negative_promptstringNegative prompt.
promptstringVideo description.
kling-v2.1-pro9 fields
aspect_ratiostringOutput aspect ratio.
callback_urlstringWebhook URL for async notifications.
cfg_scalenumberGuidance scale (0-1).
duration_secondsintegerDuration in seconds.
Allowed values:5, 10
first_frame_image_urlstringFirst frame image URL.
last_frame_image_urlstringFinal frame image URL for supported image-to-video models.
modelstringModel slug.
negative_promptstringNegative prompt.
promptstringVideo description.
kling-v2.1-standard9 fields
aspect_ratiostringOutput aspect ratio.
callback_urlstringWebhook URL for async notifications.
cfg_scalenumberGuidance scale (0-1).
duration_secondsintegerDuration in seconds.
Allowed values:5, 10
first_frame_image_urlstringFirst frame image URL.
last_frame_image_urlstringFinal frame image URL for supported image-to-video models.
modelstringModel slug.
negative_promptstringNegative prompt.
promptstringVideo description.
kling-v2.5-turbo-image-to-video-pro9 fields
aspect_ratiostringOutput aspect ratio.
callback_urlstringWebhook URL for async notifications.
cfg_scalenumberGuidance scale (0-1).
duration_secondsintegerDuration in seconds.
Allowed values:5, 10
first_frame_image_urlstringFirst frame image URL.
last_frame_image_urlstringFinal frame image URL for supported image-to-video models.
modelstringModel slug.
negative_promptstringNegative prompt.
promptstringVideo description.
kling-v2.69 fields
aspect_ratiostringOutput aspect ratio.
Allowed values:16:9, 9:16, 1:1
Default: 16:9
callback_urlstringWebhook URL for async notifications.
duration_secondsintegerDuration in seconds.
Allowed values:5, 10
Default: 5
enable_soundbooleanEnable sound generation; requires pro mode.
Default:false
first_frame_image_urlstringFirst frame image URL.
last_frame_image_urlstringFinal frame image URL; requires pro mode and 5 seconds.
modestringGeneration mode.
Allowed values:std, pro
Default: std
modelstringModel slug.
promptstringVideo description.
Range:1 - 2500
kling-v3-omni9 fields
aspect_ratiostringOutput aspect ratio.
Allowed values:16:9, 9:16, 1:1
Default: 16:9
callback_urlstringWebhook URL for async notifications.
duration_secondsintegerDuration in seconds.
Allowed values:3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
Default: 5
enable_soundbooleanEnable synchronized sound generation.
Default:false
first_frame_image_urlstringFirst frame image URL.
last_frame_image_urlstringFinal frame image URL; requires a 5-second duration.
modelstringModel slug.
output_resolutionstringOutput resolution.
Allowed values:720p, 1080p, 4k
Default: 720p
promptstringVideo description.
Range:1 - 2500
kling-v3-turbo-image-to-video6 fields
callback_urlstringWebhook URL for async notifications.
duration_secondsintegerDuration in seconds.
Allowed values:3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
Default: 5
first_frame_image_urlstringFirst frame image URL.
modelstringModel slug.
output_resolutionstringOutput resolution.
Allowed values:720p, 1080p
Default: 720p
promptstringVideo description.
Range:1 - 2500
Create acceptance
POST /api/v1/kling/image_to_video
{
"billing": {
"refund": null,
"reservation": null,
"settlement": null
},
"id": "tsk_reference_demo",
"status": "processing"
}
Polling processing
GET /api/v1/kling/image_to_video/:id
{
"billing": {
"refund": null,
"reservation": null,
"settlement": null
},
"id": "tsk_reference_demo",
"status": "processing"
}
Polling completed
GET /api/v1/kling/image_to_video/:id
{
"billing": {
"refund": null,
"reservation": null,
"settlement": null
},
"id": "tsk_reference_demo",
"status": "completed",
"videos": [
{
"url": "https://file.runapi.ai/reference-video.mp4"
}
]
}
Polling failed
GET /api/v1/kling/image_to_video/:id
{
"billing": {
"refund": null,
"reservation": null,
"settlement": null
},
"error": "Task processing failed.",
"id": "tsk_reference_demo",
"status": "failed"
}
Customer callback: completed
POST callback_url
{
"billing": {
"refund": null,
"reservation": null,
"settlement": null
},
"id": "tsk_reference_demo",
"status": "completed",
"videos": [
{
"url": "https://file.runapi.ai/reference-video.mp4"
}
]
}
Customer callback: failed
POST callback_url
{
"billing": {
"refund": null,
"reservation": null,
"settlement": null
},
"error": {
"code": "generation_failed",
"message": "Task processing failed."
},
"id": "tsk_reference_demo",
"status": "failed"
}
Errors
{
"error": {
"code": "invalid_request",
"message": "A required request field is missing."
}
}
Generated Code Samples
Use cURL directly, or install an SDK for your language. Each sample submits the validated request shown in this reference.
curl -X POST https://runapi.ai/api/v1/kling/image_to_video \
-H 'Authorization: Bearer YOUR_API_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"model":"kling-o1","prompt":"A gentle camera pan across the scene.","first_frame_image_url":"https://file.runapi.ai/first-frame.png"}'