OV
Kling Omni-Video API
Multi-modal Visual Language (MVL) video generation -- combine natural language prompts with video, image, and subject references in a single unified endpoint.
Quick Start
1
Get your API key from the Console2
Choose a model (kling-video-o1 or kling-v3-omni)3
Send POST request to create task4
Poll GET request for video resultAuthentication
Add Authorization header with Bearer token to all requests:
Authorization: Bearer YOUR_API_KEY
Available Models
| Model | API Name | Features | Price (85% off) |
|---|---|---|---|
| Kling Video O1 | kling-video-o1 | 3-10s, MVL Multi-modal, Audio, Per-Second | From $0.0064/s |
| Kling V3 Omni | kling-v3-omni | 3-15s, MVL Multi-modal, Audio, Keep Sound, Per-Second | From $0.0064/s |
Detailed Pricing (85% off)
Kling Video O1
| Mode | Audio | $/s |
|---|---|---|
| std | - | $0.0633 |
| std | on | $0.0956 |
| pro | - | $0.0853 |
| pro | on | $0.1280 |
Kling V3 Omni
| Mode | Audio | Keep Sound | $/s |
|---|---|---|---|
| std | - | - | $0.0633 |
| std | - | on | $0.0853 |
| std | on | - | $0.0956 |
| pro | - | - | $0.0853 |
| pro | - | on | $0.1059 |
| pro | on | - | $0.1280 |
Endpoints
POST
/api/v1/video/generationsCreate a Kling Omni-Video generation task. Uses the unified omni-video endpoint (POST /kling/v1/videos/omni-video) under the hood.
GET
/api/v1/video/generations?task_id=xxxQuery task status and get video URL
Request Parameters
Common Parameters
modelrequiredstring
"kling-video-o1" or "kling-v3-omni"
promptstring
Text prompt (max 2500 chars). Describes the desired video content.
image_listarray
Array of { image_url, type }. type: "first_frame" or "end_frame".
video_listarray
Array of { video_url, refer_type, keep_original_sound }. refer_type: "feature" or "base". keep_original_sound: "yes" or "no".
element_listarray
Array of { element_id }. Subject references for consistent characters/objects.
modestring
"std" (standard) or "pro" (high quality). Default: "std"
durationstring
O1: "3" to "10". V3 Omni: "3" to "15". Default: "5"
soundstring
"on" or "off". Enable audio generation. Default: "off"
aspect_ratiostring
"16:9", "9:16", or "1:1"
callback_urlstring
Webhook URL for completion notification
Advanced Parameters
multi_shotboolean
Enable multi-shot video generation
shot_typestring
Camera shot type control
multi_promptstring
Multi-segment prompt for scene transitions
watermark_infoobject
{ enabled: true/false } - Generate watermarked version
Code Examples
curl -X POST https://apimodels.app/api/v1/video/generations \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kling-video-o1",
"prompt": "A girl dancing on the beach at sunset, cinematic lighting",
"mode": "std",
"duration": "5",
"aspect_ratio": "16:9"
}'Response Format
Create Task Response
{
"code": 200,
"msg": "success",
"data": {
"taskId": "clxxx...",
"state": "pending",
"model": "kling-video/kling-video-o1"
}
}Success Response
{
"code": 200,
"msg": "success",
"data": {
"taskId": "clxxx...",
"state": "completed",
"model": "kling-video/kling-video-o1",
"resultUrls": ["https://...video.mp4"],
"createTime": 1705123450000,
"completeTime": 1705123500000
}
}Failed Response
{
"code": 200,
"msg": "success",
"data": {
"taskId": "clxxx...",
"state": "failed",
"model": "kling-video/kling-video-o1",
"failMsg": "Content policy violation"
}
}Task States
pendingTask queued, waiting to processprocessingVideo is being generatedcompletedVideo generation successfulfailedVideo generation failedError Codes
400Bad Request - Missing or invalid parameters401Unauthorized - Invalid API key402Payment Required - Insufficient credits404Not Found - Task ID not found500Internal Server ErrorImportant Notes
- *Video files are stored for 7 days, download promptly
- *Omni-Video uses a single unified endpoint -- no need to choose between text-to-video and image-to-video
- *At least one of prompt, image_list, or video_list must be provided
- *O1 supports 3-10s duration, V3 Omni supports 3-15s duration, both priced per second
- *Audio generation is available for both models (set sound: "on")
- *Use video_list with refer_type: "base" for video editing/re-creation
- *Poll every 5-10 seconds to check status