Omni Video
Create a Kling-compatible multimodal Omni video task.
Create Task
Request
http
POST /v1/videos/omni-video| Field | Type | Required | Supported values and limits | Description |
|---|---|---|---|---|
model_name | string | Yes | kling-v3-omni | Omni video generation model. This is the only supported model value at present. |
multi_shot | boolean | No | true, false | Enables multi-shot generation. Default is false. When multi_shot=true, prompt is ignored; when multi_shot=false, shot_type and multi_prompt are ignored. |
shot_type | string | No | Only customize is supported | Required when multi_shot=true; ignored when multi_shot=false. Only custom storyboards are supported. intelligence is not supported. |
prompt | string | No | Up to 2500 chars | Required when multi_shot=false; ignored when multi_shot=true. You can reference input assets in the prompt with <<<image_1>>>, <<<element_1>>>, and <<<video_1>>>. |
multi_prompt | array | No | 1 to 6 items | Required when multi_shot=true and shot_type=customize; ignored when multi_shot=false. Used to define prompt and duration for each shot. |
multi_prompt[].index | integer | Yes | Starts from 1 | Shot index. |
multi_prompt[].prompt | string | Yes | Up to 512 chars | Prompt for the current shot. |
multi_prompt[].duration | string | Yes | At least 1 second | Duration of the current shot. The sum of all shot durations must equal the total duration. |
image_list | array | No | Public image URL or raw Base64 | Reference image list. It can be used for subject, scene, or style reference, and can also be used as first/end frame input. When an end frame is used, a first frame must also be present; when first-frame or first-and-end-frame generation is used, video editing cannot be used. |
image_list[].image_url | string | Yes | .jpg, .jpeg, .png; up to 10MB | Image URL or raw Base64. Images must be at least 300px, and the aspect ratio must stay between 1:2.5 and 2.5:1. |
image_list[].type | string | No | first_frame, end_frame | Frame type. If an end frame is used, a first frame must also be provided. End frame only is not supported. When more than 2 reference images are provided, end frame is not supported. |
element_list | array | No | Use within scenario limits | Reference element list, suitable for keeping subject identity or visual consistency in the generated video. When first-frame or first-and-end-frame generation is used, up to 3 elements are supported; with a reference video, the combined count of reference images and reference elements must not exceed 4, and video-role elements are not supported; without a reference video, the combined count must not exceed 7. |
element_list[].element_id | integer | Yes | Existing element ID | Element ID from the element library. |
video_list | array | No | Up to 1 video | Reference video list. It can be used either for video reference or as the input video for editing. When refer_type=base, first/end-frame input cannot be defined; when a reference video is present, sound must be off. |
video_list[].video_url | string | Yes | MP4, MOV | Video URL. Input videos must be at least 3 seconds long, no larger than 200MB, within 720px to 2160px in width and height, and between 24fps and 60fps. When using video reference capability, only 3 to 10 seconds is supported. |
video_list[].refer_type | string | No | feature, base | feature means reference video. base means the input video will be edited. Default is base. |
video_list[].keep_original_sound | string | No | yes, no | Whether to preserve the original input video sound. This also applies to feature reference videos. |
sound | string | No | on, off | Whether to generate audio together with the video. Default is off. When video_list is provided, only off is allowed. |
mode | string | No | std, pro | Generation mode. std is the standard mode. pro is the higher-quality mode and the default. 4k is not supported. |
aspect_ratio | string | No | 16:9, 9:16, 1:1 | Recommended when the request does not use first-frame input and does not perform video editing. |
duration | string | No | 3 to 15 | Total video duration in seconds. If video_list[].refer_type=base, output duration follows the input video and this field does not take effect. |
watermark_info | object | No | {"enabled": boolean} | Whether to return a watermarked result in parallel. |
external_task_id | string | No | Custom string | Custom task ID for later query use. It must be unique within the same account. |
When video_list is present, set sound to off.
Response
json
{
"code": 0,
"message": "success",
"request_id": "req_abc123",
"data": {
"task_id": "sg_vid_xxxxxxxx",
"task_status": "submitted",
"created_at": 1776209922,
"updated_at": 1776209922
}
}Example
Basic Example
bash
curl -sS "https://api.exchangetoken.ai/v1/videos/omni-video" \
-H "Authorization: Bearer sk-xxxxxx" \
-H "Content-Type: application/json" \
-d '{
"model_name": "kling-v3-omni",
"prompt": "Make <<<image_1>>> walk through a neon gallery, matching the mood of <<<video_1>>>",
"image_list": [
{"image_url": "https://example.com/character.png"}
],
"video_list": [
{"video_url": "https://example.com/reference.mp4", "refer_type": "feature", "keep_original_sound": "no"}
],
"mode": "pro",
"sound": "off",
"aspect_ratio": "16:9",
"duration": "7"
}'First and End Frame Example
bash
curl -sS "https://api.exchangetoken.ai/v1/videos/omni-video" \
-H "Authorization: Bearer sk-xxxxxx" \
-H "Content-Type: application/json" \
-d '{
"model_name": "kling-v3-omni",
"prompt": "The subject turns around and the camera slowly pushes in",
"image_list": [
{"image_url": "https://example.com/first.png", "type": "first_frame"},
{"image_url": "https://example.com/end.png", "type": "end_frame"}
],
"mode": "pro",
"sound": "off",
"duration": "5"
}'Query Task
Request
http
GET /v1/videos/omni-video/{task_id}Use data.task_id for polling.
Response
json
{
"code": 0,
"message": "success",
"request_id": "req_abc123",
"data": {
"task_id": "sg_vid_xxxxxxxx",
"task_status": "succeed",
"watermark_info": {
"enabled": false
},
"task_result": {
"videos": [
{
"url": "https://example.com/output.mp4"
}
]
},
"created_at": 1776209922,
"updated_at": 1776210072
}
}Status Values
task_status | Meaning |
|---|---|
submitted | Task accepted but not yet running. |
processing | Task is queued or running. |
succeed | Task completed and task_result.videos may be present. |
failed | Task failed or was cancelled. Check task_status_msg when present. |
Example
bash
curl -sS "https://api.exchangetoken.ai/v1/videos/omni-video/sg_vid_xxxxxxxx" \
-H "Authorization: Bearer sk-xxxxxx"