Kling Talking Photo API
Turn one photo + one audio into a talking video in a single call. The service internally chains two steps: image2video (animate the still photo) then lip-sync (drive the mouth with the audio).
- Endpoint:
POST https://api.acedata.cloud/kling/talking-photo
- Pricing: by duration — 5s 16.45 Credits, 10s 30.45 Credits (image2video + lip-sync bundle)
| Field |
Value |
authorization |
Bearer ${API_KEY} |
content-type |
application/json |
¶ Request parameters
| Field |
Type |
Required |
Default |
Description |
image_url |
string |
yes |
— |
Public URL of the portrait image; a clear frontal face works best |
audio_url |
string |
yes |
— |
Public URL of the driving audio (.mp3/.wav/.m4a/.aac, <=5MB) |
prompt |
string |
no |
— |
Motion/expression hint for the animation step |
model |
string |
no |
kling-v2-1-master |
Kling model for the animation step |
duration |
integer |
no |
5 |
Video length (5 or 10 seconds) |
mode |
string |
no |
pro |
Animation quality (std/pro) |
callback_url |
string |
no |
— |
If set (or async=true), returns task_id and calls back |
async |
boolean |
no |
false |
Async mode; poll via /kling/tasks or receive callback |
¶ Request example
curl -X POST 'https://api.acedata.cloud/kling/talking-photo' \
-H 'authorization: Bearer ${API_KEY}' \
-H 'content-type: application/json' \
-d '{
"image_url": "https://cdn.acedata.cloud/4hfydw.jpg",
"audio_url": "https://cdn.acedata.cloud/6f7d62b18b.wav",
"duration": 5
}'
¶ Response example
{
"success": true,
"task_id": "0c0b4d3a-2f1e-4a6b-9c2d-2b3c4d5e6f70",
"video_id": "895055968777281546",
"video_url": "https://platform2.cdn.acedata.cloud/kling/07a3ec65-9f7e-4a09-b7b7-282684082527.mp4",
"source_video_url": "https://platform2.cdn.acedata.cloud/kling/163ac822-1a15-4f5e-a2eb-465154df15af.mp4",
"duration": 5,
"state": "succeed"
}
¶ Notes
- Use a clear, frontal, single-person photo.
- Keep the audio no longer than the video (5s/10s).
- Billed on success; validation failures (4xx) are not billed.
- Generation takes ~4–6 minutes (two steps); prefer
async=true + /kling/tasks polling.