Kling Custom Voice Integration Guide
kling-custom-voice clones a target speaker into a reusable Kling voice profile. Submit a clean 5–30 second voice sample (an audio file URL or a previously generated Kling video ID), and Kling returns a globally unique voice_id that can be reused as the speaker for downstream Kling models such as kling-lip-sync or any avatar pipeline that accepts a voice_id.
kling-custom-voice
Asynchronous. The SubmitRequest response returns immediately with status: "dispatched"; the final result arrives via the webhook (and is also persisted on the request record).
Parameters
Provide exactly one ofvoice_urlorvideo_id. They are mutually exclusive — submitting both, or neither, will be rejected by Kling.
Submit Request — using voice_url
Submit Request — using video_id
webhook field in the request body is optional.
Final Outcome
outcome.voices is an array — typically of length 1 — describing the cloned voice profile:
If Kling reports success but returns no voices (rare), the outcome instead carries:
Pricing
The reconciliation is idempotent — duplicate success callbacks for the same task will not double-charge.
Failure & Refund
If Kling reports the task as failed (or our pipeline classifies the response as a failure), the request status becomesfailed and the full pre-charge is refunded. No post-charge adjustment is applied.
End-to-End Flow
POST /requestswithkling-custom-voice, providing exactly one ofvoice_urlorvideo_id.- Wait for the webhook (or poll
GET /requests/{request_id}). - On success, capture
outcome.voices[0].voice_id. - Reuse that
voice_idas the speaker in subsequent Kling generation requests (e.g.kling-lip-sync, avatar pipelines).