curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "kling_v3_omni",
"params": {
"prompt": "A golden retriever running on a sunny beach, cinematic, natural lighting",
"type": "all_reference",
"resolution": "720p",
"aspect_ratio": "16:9",
"video_length": 5,
"generate_audio": false
},
"out_task_id": "kling_v3_omni_t2v_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "kling_v3_omni",
"params": {
"prompt": "The person slowly turns and smiles, slight camera push-in",
"type": "first_last_frame",
"image_url": [
"https://example.com/first-frame.jpg",
"https://example.com/last-frame.jpg"
],
"resolution": "1080p",
"video_length": 5
},
"out_task_id": "kling_v3_omni_frames_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "kling_v3_omni",
"params": {
"prompt": "Keep the subject and camera move from the reference clip, cleaner lighting",
"type": "all_reference",
"video_url": ["https://example.com/reference.mp4"],
"refer_type": "feature",
"resolution": "720p",
"video_length": 3
},
"out_task_id": "kling_v3_omni_feature_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "kling_v3_omni",
"params": {
"prompt": "Keep the same scene, slightly brighter daylight",
"type": "all_reference",
"video_url": ["https://example.com/source.mp4"],
"refer_type": "base",
"resolution": "720p",
"keep_original_sound": false
},
"out_task_id": "kling_v3_omni_base_123456"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "kling_v3_omni",
"params": {
"prompt": "A golden retriever running on a sunny beach, cinematic, natural lighting",
"type": "all_reference",
"resolution": "720p",
"aspect_ratio": "16:9",
"video_length": 5,
"generate_audio": False
},
"out_task_id": "kling_v3_omni_t2v_123456"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://aireiter.com/api/openapi/submit";
const payload = {
model: "kling_v3_omni",
params: {
prompt: "A golden retriever running on a sunny beach, cinematic, natural lighting",
type: "all_reference",
resolution: "720p",
aspect_ratio: "16:9",
video_length: 5,
generate_audio: false
},
out_task_id: "kling_v3_omni_t2v_123456"
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://aireiter.com/api/openapi/submit"
payload := map[string]interface{}{
"model": "kling_v3_omni",
"params": map[string]interface{}{
"prompt": "A golden retriever running on a sunny beach, cinematic, natural lighting",
"type": "all_reference",
"resolution": "720p",
"aspect_ratio": "16:9",
"video_length": 5,
"generate_audio": false,
},
"out_task_id": "kling_v3_omni_t2v_123456",
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String url = "https://aireiter.com/api/openapi/submit";
String payload = """
{
"model": "kling_v3_omni",
"params": {
"prompt": "A golden retriever running on a sunny beach, cinematic, natural lighting",
"type": "all_reference",
"resolution": "720p",
"aspect_ratio": "16:9",
"video_length": 5,
"generate_audio": false
},
"out_task_id": "kling_v3_omni_t2v_123456"
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$url = "https://aireiter.com/api/openapi/submit";
$payload = [
"model" => "kling_v3_omni",
"params" => [
"prompt" => "A golden retriever running on a sunny beach, cinematic, natural lighting",
"type" => "all_reference",
"resolution" => "720p",
"aspect_ratio" => "16:9",
"video_length" => 5,
"generate_audio" => false
],
"out_task_id" => "kling_v3_omni_t2v_123456"
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer <token>",
"Content-Type: application/json"
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
{
"statusCode": 200,
"message": "",
"data": {
"out_task_id": "kling_v3_omni_t2v_123456",
"status": "pending",
"created_at": "2026-08-28T06:03:28.242Z"
}
}
{
"statusCode": 400,
"message": "Invalid request parameters",
"ok": false
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key"
}
}
{
"error": {
"code": 433,
"message": "Insufficient account balance, please top up and try again"
}
}
{
"error": {
"code": 500,
"message": "Internal server error, please try again later"
}
}
Kling v3 Omni
Kling v3 Omni Video Generation
- Kuaishou Kling v3 Omni, also known as Kling O3
- Asynchronous processing mode, returns a task ID for later querying
- Supports two generation modes: text/reference and first/last frame
- Supports 720p / 1080p / 4K, 3-15 second duration, optional native audio and reference video
POST
/
api
/
openapi
/
submit
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "kling_v3_omni",
"params": {
"prompt": "A golden retriever running on a sunny beach, cinematic, natural lighting",
"type": "all_reference",
"resolution": "720p",
"aspect_ratio": "16:9",
"video_length": 5,
"generate_audio": false
},
"out_task_id": "kling_v3_omni_t2v_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "kling_v3_omni",
"params": {
"prompt": "The person slowly turns and smiles, slight camera push-in",
"type": "first_last_frame",
"image_url": [
"https://example.com/first-frame.jpg",
"https://example.com/last-frame.jpg"
],
"resolution": "1080p",
"video_length": 5
},
"out_task_id": "kling_v3_omni_frames_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "kling_v3_omni",
"params": {
"prompt": "Keep the subject and camera move from the reference clip, cleaner lighting",
"type": "all_reference",
"video_url": ["https://example.com/reference.mp4"],
"refer_type": "feature",
"resolution": "720p",
"video_length": 3
},
"out_task_id": "kling_v3_omni_feature_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "kling_v3_omni",
"params": {
"prompt": "Keep the same scene, slightly brighter daylight",
"type": "all_reference",
"video_url": ["https://example.com/source.mp4"],
"refer_type": "base",
"resolution": "720p",
"keep_original_sound": false
},
"out_task_id": "kling_v3_omni_base_123456"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "kling_v3_omni",
"params": {
"prompt": "A golden retriever running on a sunny beach, cinematic, natural lighting",
"type": "all_reference",
"resolution": "720p",
"aspect_ratio": "16:9",
"video_length": 5,
"generate_audio": False
},
"out_task_id": "kling_v3_omni_t2v_123456"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://aireiter.com/api/openapi/submit";
const payload = {
model: "kling_v3_omni",
params: {
prompt: "A golden retriever running on a sunny beach, cinematic, natural lighting",
type: "all_reference",
resolution: "720p",
aspect_ratio: "16:9",
video_length: 5,
generate_audio: false
},
out_task_id: "kling_v3_omni_t2v_123456"
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://aireiter.com/api/openapi/submit"
payload := map[string]interface{}{
"model": "kling_v3_omni",
"params": map[string]interface{}{
"prompt": "A golden retriever running on a sunny beach, cinematic, natural lighting",
"type": "all_reference",
"resolution": "720p",
"aspect_ratio": "16:9",
"video_length": 5,
"generate_audio": false,
},
"out_task_id": "kling_v3_omni_t2v_123456",
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String url = "https://aireiter.com/api/openapi/submit";
String payload = """
{
"model": "kling_v3_omni",
"params": {
"prompt": "A golden retriever running on a sunny beach, cinematic, natural lighting",
"type": "all_reference",
"resolution": "720p",
"aspect_ratio": "16:9",
"video_length": 5,
"generate_audio": false
},
"out_task_id": "kling_v3_omni_t2v_123456"
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$url = "https://aireiter.com/api/openapi/submit";
$payload = [
"model" => "kling_v3_omni",
"params" => [
"prompt" => "A golden retriever running on a sunny beach, cinematic, natural lighting",
"type" => "all_reference",
"resolution" => "720p",
"aspect_ratio" => "16:9",
"video_length" => 5,
"generate_audio" => false
],
"out_task_id" => "kling_v3_omni_t2v_123456"
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer <token>",
"Content-Type: application/json"
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
{
"statusCode": 200,
"message": "",
"data": {
"out_task_id": "kling_v3_omni_t2v_123456",
"status": "pending",
"created_at": "2026-08-28T06:03:28.242Z"
}
}
{
"statusCode": 400,
"message": "Invalid request parameters",
"ok": false
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key"
}
}
{
"error": {
"code": 433,
"message": "Insufficient account balance, please top up and try again"
}
}
{
"error": {
"code": 500,
"message": "Internal server error, please try again later"
}
}
The model name of Kling v3 Omni in AIReiter is
kling_v3_omni. This model is also commonly searched as Kling O3.Authorizations
string
required
All endpoints require Bearer Token authentication.Get the API Key:Visit the API Key Management page to get your API Key.When using it, add the following to the request header:
Authorization: Bearer YOUR_API_KEY
Body
string
required
Model name, fixed value:
kling_v3_omni
object
required
Model parameters object.
Show params object properties
Show params object properties
string
required
Text description for video generation. Required.Reference images can be cited in the prompt as
<<<image_1>>>, <<<image_2>>> in the same order as image_url. If images are sent without a citation, the system prepends <<<image_1>>>.string
Negative prompt. Up to 2500 characters.
string
default:"all_reference"
Generation mode. Do not mix modes in one request:
all_reference- Text/reference. Prompt required. Optional: up to 7 reference images and one reference videofirst_last_frame- First/last frame. First frame required, last frame optional
First/last frames cannot appear in the same request as reference images or a reference video.
integer
default:"5"
Output duration in seconds. Integer from
3 to 15.all_referencewith no reference video, orrefer_type=feature: output follows this fieldrefer_type=base: output follows the uploaded clip; do not rely on this field
string
default:"720p"
Output resolution:
720p- default1080p4K
string
default:"16:9"
Aspect ratio. Ignored when a first frame or reference video is provided.
16:9- landscape, default9:16- portrait1:1- square
boolean
default:"false"
Whether to generate a native audio track.
false- no audio, defaulttrue- generate audio
Ignored when
video_url is set. Cannot be combined with a reference video.string | string[]
Image URL. Must be publicly reachable.
all_reference- optional, up to 7 imagesfirst_last_frame- first item is the first frame (required), second item is the last frame (optional)
string
Last-frame image URL.Only valid for
first_last_frame. You can also pass the last frame as the second item in image_url. Last frame without a first frame is rejected.string | string[]
Reference video URL. Only valid for
all_reference. Max 1 clip.Requirements:- MP4 or MOV
- 3-10 seconds
- Max 200MB
- Shortest side at least 720px
Do not send this field with
first_last_frame. The URL must be public and the duration metadata must be readable.string
default:"feature"
How the reference video is used. Only applies when
video_url is set:feature- style or motion reference; output duration followsvideo_lengthbase- edit the uploaded clip; output duration follows the source and ignoresvideo_length
boolean
default:"false"
Keep the source audio track. Only applies when
video_url is set.false- do not keep, defaulttrue- keep original sound
boolean
default:"false"
Add a watermark. Default
false.boolean
default:"false"
Enable multi-shot. When
true, the model splits the prompt into shots automatically.string
required
Caller task ID.Required. Letters, digits, underscore, and hyphen only, 1-64 characters. Use the same ID to query status and results.
Response
string
Caller task ID. Use it to query results.
string
Initial status, usually
"pending".string
Creation time, ISO format.
Query Task
Kling v3 Omni is asynchronous. After submit, query status without_task_id.
string
required
The caller task ID sent at submit time.
curl --request POST \
--url https://aireiter.com/api/openapi/query \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"out_task_id": "kling_v3_omni_t2v_123456"
}'
output contains the generated video objects with a video field.
Mode parameter map
type / reference video | Required | Duration |
|---|---|---|
all_reference, no video_url | prompt | video_length 3-15s |
all_reference, refer_type=feature | prompt, video_url | output follows video_length |
all_reference, refer_type=base | prompt, video_url | output follows the upload, 3-10s |
first_last_frame | prompt, first-frame image_url | video_length 3-15s |
Request Examples
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "kling_v3_omni",
"params": {
"prompt": "A golden retriever running on a sunny beach, cinematic, natural lighting",
"type": "all_reference",
"resolution": "720p",
"aspect_ratio": "16:9",
"video_length": 5,
"generate_audio": false
},
"out_task_id": "kling_v3_omni_t2v_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "kling_v3_omni",
"params": {
"prompt": "The person slowly turns and smiles, slight camera push-in",
"type": "first_last_frame",
"image_url": [
"https://example.com/first-frame.jpg",
"https://example.com/last-frame.jpg"
],
"resolution": "1080p",
"video_length": 5
},
"out_task_id": "kling_v3_omni_frames_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "kling_v3_omni",
"params": {
"prompt": "Keep the subject and camera move from the reference clip, cleaner lighting",
"type": "all_reference",
"video_url": ["https://example.com/reference.mp4"],
"refer_type": "feature",
"resolution": "720p",
"video_length": 3
},
"out_task_id": "kling_v3_omni_feature_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "kling_v3_omni",
"params": {
"prompt": "Keep the same scene, slightly brighter daylight",
"type": "all_reference",
"video_url": ["https://example.com/source.mp4"],
"refer_type": "base",
"resolution": "720p",
"keep_original_sound": false
},
"out_task_id": "kling_v3_omni_base_123456"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "kling_v3_omni",
"params": {
"prompt": "A golden retriever running on a sunny beach, cinematic, natural lighting",
"type": "all_reference",
"resolution": "720p",
"aspect_ratio": "16:9",
"video_length": 5,
"generate_audio": False
},
"out_task_id": "kling_v3_omni_t2v_123456"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://aireiter.com/api/openapi/submit";
const payload = {
model: "kling_v3_omni",
params: {
prompt: "A golden retriever running on a sunny beach, cinematic, natural lighting",
type: "all_reference",
resolution: "720p",
aspect_ratio: "16:9",
video_length: 5,
generate_audio: false
},
out_task_id: "kling_v3_omni_t2v_123456"
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://aireiter.com/api/openapi/submit"
payload := map[string]interface{}{
"model": "kling_v3_omni",
"params": map[string]interface{}{
"prompt": "A golden retriever running on a sunny beach, cinematic, natural lighting",
"type": "all_reference",
"resolution": "720p",
"aspect_ratio": "16:9",
"video_length": 5,
"generate_audio": false,
},
"out_task_id": "kling_v3_omni_t2v_123456",
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String url = "https://aireiter.com/api/openapi/submit";
String payload = """
{
"model": "kling_v3_omni",
"params": {
"prompt": "A golden retriever running on a sunny beach, cinematic, natural lighting",
"type": "all_reference",
"resolution": "720p",
"aspect_ratio": "16:9",
"video_length": 5,
"generate_audio": false
},
"out_task_id": "kling_v3_omni_t2v_123456"
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$url = "https://aireiter.com/api/openapi/submit";
$payload = [
"model" => "kling_v3_omni",
"params" => [
"prompt" => "A golden retriever running on a sunny beach, cinematic, natural lighting",
"type" => "all_reference",
"resolution" => "720p",
"aspect_ratio" => "16:9",
"video_length" => 5,
"generate_audio" => false
],
"out_task_id" => "kling_v3_omni_t2v_123456"
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer <token>",
"Content-Type: application/json"
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
{
"statusCode": 200,
"message": "",
"data": {
"out_task_id": "kling_v3_omni_t2v_123456",
"status": "pending",
"created_at": "2026-08-28T06:03:28.242Z"
}
}
{
"statusCode": 400,
"message": "Invalid request parameters",
"ok": false
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key"
}
}
{
"error": {
"code": 433,
"message": "Insufficient account balance, please top up and try again"
}
}
{
"error": {
"code": 500,
"message": "Internal server error, please try again later"
}
}