Kling v4 Flash Video Generation
One kling-4.0-flash model for text-to-video, reference media and first-frame generation
All three input modes use kling-4.0-flash. The API selects the generation path from the supplied media. Generation is asynchronous; query the platform task ID returned by submission.
Use a platform API key. Mainland China users can replace https://toapis.com with https://toapis.cn. Availability depends on the deployed channel configuration and account access.
Input modes
| Mode | Request content |
|---|---|
| Text-to-video | Send a prompt and output specifications without media. |
| Reference media | Use image_urls / video_urls, or media with reference roles. Images and videos can be combined. |
| First frame | Set a single first_frame image in image_with_roles. Do not include reference images or videos; middle and last frames are unsupported. |
Request parameters
AuthorizationstringheaderrequiredAuthenticate with Bearer YOUR_API_KEY.
modelstringbodyrequiredAlways kling-4.0-flash. Do not change the model ID between modes.
promptstringbodyrequiredRequired, nonblank, at most 8000 Unicode characters. Describe the subject, action, camera and relationships between media.
durationintegerbodydefault: 5Integer from 3 to 20 seconds. Defaults to 5.
resolutionstringbodydefault: 720pOnly 720p. Defaults to 720p.
aspect_ratiostringbodyauto, 16:9, 9:16, 1:1 or 21:9. Omission leaves the upstream default unchanged; send auto explicitly for automatic aspect ratio.
image_urlsstring[]bodyReference image URL array, at most 10 images. Positions do not imply a first frame. Counts combine with reference image roles; use one representation per media item.
video_urlsstring[]bodyReference video URL array, at most 5 videos combined with video_with_roles.
image_with_rolesobject[]bodyEach object has url and role. reference / reference_image means reference image; first_frame means the first frame. keyframe and last_frame are unsupported.
video_with_rolesobject[]bodyEach object has url and role. Supported roles: reference / reference_video.
metadataobjectbodyBoolean keep_original_sound preserves reference video audio, for example {"keep_original_sound": true}. Use for reference videos only. First-frame mode rejects this key even when false.
client_business_idstringbodyOptional client business ID, stored with the task and accepted by the same query endpoint.
Media rules and validation
- Use publicly accessible HTTP(S) media URLs without usernames or passwords. Upload local files with image upload or video upload. Do not send local paths or base64.
- Reference mode allows up to 10 images and 5 videos. Plain arrays and explicit reference roles are combined; do not send the same media twice.
- First-frame mode accepts exactly one
first_frameimage;keyframeandlast_frameroles are rejected. The first frame is selected by role, not by plain image array positions. - First frame and reference media are mutually exclusive. Do not use legacy Kling
mode,audio,video_listor Omni reference structures.audio_with_roles,metadata.elementsandmetadata.voicesare unsupported. - Invalid specifications, roles, URLs, counts or mode combinations are rejected. Correct the returned error before retrying. This page does not promise file size, codec or input video duration limits; media must also satisfy upload service and upstream requirements.
Request examples
Text-to-video
{
"model": "kling-4.0-flash",
"prompt": "Waves on the shore, a slow camera push, sunset lighting",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "16:9"
}Reference media
{
"model": "kling-4.0-flash",
"prompt": "Keep the character from the reference image and the camera motion from the reference video",
"duration": 10,
"resolution": "720p",
"aspect_ratio": "16:9",
"image_urls": [
"https://example.com/character.png"
],
"video_urls": [
"https://example.com/motion.mp4"
],
"metadata": {
"keep_original_sound": true
}
}First frame
{
"model": "kling-4.0-flash",
"prompt": "Starting from the first frame, the character slowly turns toward the window",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "16:9",
"image_with_roles": [
{
"url": "https://example.com/first.png",
"role": "first_frame"
}
]
}Submit a task
requestExample
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"model": "kling-4.0-flash",
"prompt": "Waves on the shore, a slow camera push, sunset lighting",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "16:9"
}'responseExample
{
"id": "task_example",
"object": "generation.task",
"model": "kling-4.0-flash",
"status": "queued",
"created_at": 1792713600
}Task queries and billing
The response id is the platform task ID. Query it below instead of using the provider task_id. States include queued, in_progress, completed and failed. See video task status for the result schema and task webhooks for callbacks.
curl --request GET \
--url https://toapis.com/v1/videos/generations/YOUR_TASK_ID \
--header 'Authorization: Bearer YOUR_API_KEY'Defaults are 5 seconds / 720p. Set these explicitly to control output specifications. This page does not quote fixed prices or equate original audio preservation with legacy Sound billing. Account quotes and task usage / billing determine the actual charges.