Kling 3.0 & 3.0 Omni
Kling 3.0 and Kling 3.0 Omni text-to-video, image-to-video, Omni video generation, and motion control APIs.
All four capabilities use asynchronous tasks. Create a task, keep the returned task ID, and query its status and outputs.
Text to video
| Item | Value |
|---|---|
| Method | POST |
| URL | https://api.tokenhub.belivestudios.com/text-to-video/kling-3.0 |
| Authentication | Header Authorization: Bearer sk-your-belive-studios-key |
| Content-Type | application/json |
| Field | Type | Required | Default | Values | Description |
|---|---|---|---|---|---|
prompt | string | Yes | — | — | Positive or negative prompt; max 3,072 characters (2,500 recommended). |
settings | object | No | — | — | Multi-shot, audio, resolution, aspect ratio, and duration settings. |
settings.multi_shot | boolean | No | true | — | Enable multi-shot generation; up to six shots, each at least one second and totaling duration. |
settings.audio | string | No | off | native, off | Generate matched audio or no audio. |
settings.resolution | string | No | 720p | 720p, 1080p, 4k | Output resolution. |
settings.aspect_ratio | string | No | 16:9 | 16:9, 9:16, 1:1 | Output aspect ratio. |
settings.duration | integer | No | 5 | 3–15 | Integer duration in seconds. |
options | object | No | — | — | Callback, custom task ID, and watermark settings. |
options.callback_url | string | No | — | — | Callback URL for status changes. |
options.external_task_id | string | No | — | — | Account-unique custom ID. |
options.watermark_info | object | No | — | — | Watermark configuration. |
options.watermark_info.enabled | boolean | No | false | — | Also generate a watermarked result. |
Create task
curl https://api.tokenhub.belivestudios.com/text-to-video/kling-3.0 \
-H "Authorization: Bearer sk-your-belive-studios-key" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A girl looks out of a train window",
"settings": {"multi_shot": true, "audio": "off", "resolution": "4k", "aspect_ratio": "16:9", "duration": 15},
"options": {"watermark_info": {"enabled": false}}
}'{
"prompt": "A girl looks out of a train window",
"settings": {
"multi_shot": true,
"audio": "off",
"resolution": "4k",
"aspect_ratio": "16:9",
"duration": 15
},
"options": {
"watermark_info": {
"enabled": false
}
}
}Create response
{
"code": 0,
"message": "string",
"request_id": "string",
"data": {
"id": "893605946402811985",
"status": "submitted",
"create_time": 1781080778802,
"update_time": 1781080794151,
"external_id": "text-task-001"
}
}Create response fields
All four create endpoints return the same response structure:
| Field | Type | Description |
|---|---|---|
code | integer | Error code; 0 indicates success. |
message | string | Error or status message. |
request_id | string | System-generated request ID for tracing. |
data.id | string | System-generated task ID. |
data.status | string | submitted, processing, succeeded, or failed. |
data.create_time | integer | Creation time as a Unix millisecond timestamp. |
data.update_time | integer | Update time as a Unix millisecond timestamp. |
data.external_id | string | Custom task ID, when supplied. |
Query by task ID
GET https://api.tokenhub.belivestudios.com/tasks — provide exactly one of task_ids or external_task_ids; comma-separated batches are supported.
| Query parameter | Type | Required | Description |
|---|---|---|---|
task_ids | string | One of two | System task IDs, comma-separated for a batch. |
external_task_ids | string | One of two | Custom task IDs, comma-separated for a batch. |
curl "https://api.tokenhub.belivestudios.com/tasks?task_ids=893605946402811985" \
-H "Authorization: Bearer sk-your-belive-studios-key" \
-H "Content-Type: application/json"{
"code": 0,
"message": "string",
"request_id": "string",
"data": [
{
"id": "893605946402811985",
"status": "succeeded",
"message": "string",
"create_time": 1781080778802,
"update_time": 1781080794151,
"external_id": "text-task-001",
"outputs": [
{
"type": "video",
"id": "video-output-id",
"url": "string",
"watermark_url": "string",
"duration": "10"
},
{
"type": "image",
"url": "string",
"watermark_url": "string",
"group_id": "group-1"
},
{
"type": "audio",
"id": "audio-output-id",
"mp3_url": "string",
"wav_url": "string",
"mp3_duration": "10",
"wav_duration": "10"
},
{
"type": "voice",
"id": "voice-output-id",
"name": "voice",
"url": "string",
"owned_by": "kling",
"status": "succeeded"
},
{
"type": "element",
"id": "element-output-id",
"name": "character",
"description": "string",
"element_type": "video_character_elements",
"references": [
{
"type": "image",
"role": "frontal",
"url": "https://p2-kling.klingai.com/kcdn/cdn-kcdn112452/kling-tob-release_note/image_7.1.png"
}
],
"owned_by": "kling",
"status": "succeeded",
"tags": [
{
"id": 1,
"name": "tag",
"description": "string"
}
]
}
],
"billing": [
{
"charge_type": "unit",
"amount": "1",
"package_type": "video"
}
]
}
]
}outputs may contain video (id, url, watermark_url, duration), image (url, optional watermark_url and group_id), audio (MP3/WAV URLs and durations), voice, or element results. Billing entries may contain charge_type, cash_type, amount, currency, package_type, and list_price. Result URLs are cleaned up after 30 days.
| Response field | Type | Description |
|---|---|---|
code | integer | Error code; 0 indicates success. |
message | string | Status or error message. |
request_id | string | Request ID for tracing. |
data[].id | string | System task ID. |
data[].status | string | submitted, processing, succeeded, or failed. |
data[].message | string | Task status; failure reason may be included. |
data[].create_time / update_time | integer | Unix timestamps in milliseconds. |
data[].external_id | string | Custom task ID, if supplied. |
data[].outputs | array | Generated outputs. Video entries include id, url, watermark_url, and duration; image entries include url, optional watermark_url and group_id; audio entries include id, mp3_url, wav_url, mp3_duration, and wav_duration; voice entries include id, name, url, owned_by, and status; element entries include id, name, description, element_type, references, owned_by, status, and tags. |
data[].billing | array | Billing details. Each item may contain charge_type, cash_type, amount, currency, package_type, and list_price. |
Query with a cursor
POST https://api.tokenhub.belivestudios.com/tasks only queries asynchronous, non-real-time tasks. For the first request, use a time range and filters. For subsequent pages, pass the previous response's data.next_cursor as cursor; when cursor is supplied, start_time and end_time are ignored. filters[].key is status or product_type; use video for video tasks. The response contains data.result, data.count, data.next_cursor, and data.has_more.
| Request field | Type | Description |
|---|---|---|
start_time | string | Start of the creation-time range (Unix milliseconds); defaults to 30 days before end_time and must be earlier than end_time. |
end_time | string | End of the creation-time range (Unix milliseconds); defaults to now. |
cursor | string | Previous data.next_cursor; when supplied, the time range is ignored. |
limit | integer | Number of tasks; default 100, maximum 500. |
filters | array | Filter conditions. |
filters[].key | string | status or product_type. |
filters[].values | array | Status: submitted, processing, succeeded, failed; product type: video, image, try_on. |
data.result | array | Returned tasks, with the same fields as the task-ID query. |
data.count | integer | Number of tasks in this page. |
data.next_cursor | string | Cursor for the next page. |
data.has_more | boolean | Whether more results are available. |
curl https://api.tokenhub.belivestudios.com/tasks \
-H "Authorization: Bearer sk-your-belive-studios-key" \
-H "Content-Type: application/json" \
-d '{
"limit": 100,
"filters": [
{
"key": "status",
"values": [
"succeeded"
]
},
{
"key": "product_type",
"values": [
"video"
]
}
]
}'To fetch the next page, pass the previous response's data.next_cursor as cursor:
{
"cursor": "data.next_cursor from the previous response",
"limit": 100,
"filters": [
{
"key": "product_type",
"values": ["video"]
}
]
}