Kling-o1 Video Editing
curl --request POST \
--url https://api.novita.ai/v3/async/kling-o1-video-edit \
--header 'Authorization: <authorization>' \
--header 'Content-Type: <content-type>' \
--data '
{
"video": "<string>",
"images": [
"<string>"
],
"prompt": "<string>",
"fast_mode": true,
"aspect_ratio": "<string>",
"keep_original_sound": true
}
'import requests
url = "https://api.novita.ai/v3/async/kling-o1-video-edit"
payload = {
"video": "<string>",
"images": ["<string>"],
"prompt": "<string>",
"fast_mode": True,
"aspect_ratio": "<string>",
"keep_original_sound": True
}
headers = {
"Content-Type": "<content-type>",
"Authorization": "<authorization>"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': '<content-type>', Authorization: '<authorization>'},
body: JSON.stringify({
video: '<string>',
images: ['<string>'],
prompt: '<string>',
fast_mode: true,
aspect_ratio: '<string>',
keep_original_sound: true
})
};
fetch('https://api.novita.ai/v3/async/kling-o1-video-edit', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.novita.ai/v3/async/kling-o1-video-edit",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'video' => '<string>',
'images' => [
'<string>'
],
'prompt' => '<string>',
'fast_mode' => true,
'aspect_ratio' => '<string>',
'keep_original_sound' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: <content-type>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.novita.ai/v3/async/kling-o1-video-edit"
payload := strings.NewReader("{\n \"video\": \"<string>\",\n \"images\": [\n \"<string>\"\n ],\n \"prompt\": \"<string>\",\n \"fast_mode\": true,\n \"aspect_ratio\": \"<string>\",\n \"keep_original_sound\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "<content-type>")
req.Header.Add("Authorization", "<authorization>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.novita.ai/v3/async/kling-o1-video-edit")
.header("Content-Type", "<content-type>")
.header("Authorization", "<authorization>")
.body("{\n \"video\": \"<string>\",\n \"images\": [\n \"<string>\"\n ],\n \"prompt\": \"<string>\",\n \"fast_mode\": true,\n \"aspect_ratio\": \"<string>\",\n \"keep_original_sound\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.novita.ai/v3/async/kling-o1-video-edit")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = '<content-type>'
request["Authorization"] = '<authorization>'
request.body = "{\n \"video\": \"<string>\",\n \"images\": [\n \"<string>\"\n ],\n \"prompt\": \"<string>\",\n \"fast_mode\": true,\n \"aspect_ratio\": \"<string>\",\n \"keep_original_sound\": true\n}"
response = http.request(request)
puts response.read_body{
"task_id": "<string>"
}Video Generator
Kling-o1 Video Editing
POST
/
v3
/
async
/
kling-o1-video-edit
Kling-o1 Video Editing
curl --request POST \
--url https://api.novita.ai/v3/async/kling-o1-video-edit \
--header 'Authorization: <authorization>' \
--header 'Content-Type: <content-type>' \
--data '
{
"video": "<string>",
"images": [
"<string>"
],
"prompt": "<string>",
"fast_mode": true,
"aspect_ratio": "<string>",
"keep_original_sound": true
}
'import requests
url = "https://api.novita.ai/v3/async/kling-o1-video-edit"
payload = {
"video": "<string>",
"images": ["<string>"],
"prompt": "<string>",
"fast_mode": True,
"aspect_ratio": "<string>",
"keep_original_sound": True
}
headers = {
"Content-Type": "<content-type>",
"Authorization": "<authorization>"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': '<content-type>', Authorization: '<authorization>'},
body: JSON.stringify({
video: '<string>',
images: ['<string>'],
prompt: '<string>',
fast_mode: true,
aspect_ratio: '<string>',
keep_original_sound: true
})
};
fetch('https://api.novita.ai/v3/async/kling-o1-video-edit', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.novita.ai/v3/async/kling-o1-video-edit",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'video' => '<string>',
'images' => [
'<string>'
],
'prompt' => '<string>',
'fast_mode' => true,
'aspect_ratio' => '<string>',
'keep_original_sound' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: <content-type>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.novita.ai/v3/async/kling-o1-video-edit"
payload := strings.NewReader("{\n \"video\": \"<string>\",\n \"images\": [\n \"<string>\"\n ],\n \"prompt\": \"<string>\",\n \"fast_mode\": true,\n \"aspect_ratio\": \"<string>\",\n \"keep_original_sound\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "<content-type>")
req.Header.Add("Authorization", "<authorization>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.novita.ai/v3/async/kling-o1-video-edit")
.header("Content-Type", "<content-type>")
.header("Authorization", "<authorization>")
.body("{\n \"video\": \"<string>\",\n \"images\": [\n \"<string>\"\n ],\n \"prompt\": \"<string>\",\n \"fast_mode\": true,\n \"aspect_ratio\": \"<string>\",\n \"keep_original_sound\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.novita.ai/v3/async/kling-o1-video-edit")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = '<content-type>'
request["Authorization"] = '<authorization>'
request.body = "{\n \"video\": \"<string>\",\n \"images\": [\n \"<string>\"\n ],\n \"prompt\": \"<string>\",\n \"fast_mode\": true,\n \"aspect_ratio\": \"<string>\",\n \"keep_original_sound\": true\n}"
response = http.request(request)
puts response.read_body{
"task_id": "<string>"
}Kling Omni Video O1 video editor supports conversational video editing through natural language commands. With simple text instructions such as “remove pedestrians” or “change day to dusk”, you can remove objects, replace backgrounds, modify styles, adjust weather/lighting, and transform scenes.
This is an asynchronous API; only the task_id will be returned. You should use the task_id to request the Task Result API to retrieve the video generation results.
Request Headers
Supports:
application/jsonBearer authentication format, for example: Bearer {{API Key}}.
Request Body
The video URL.
Including reference images of the element, scene, style, etc. Max 4.Array length: 0 - 4
The positive prompt for the generation.
Whether to use fast mode
The aspect ratio of the generated video.Optional values:
16:9, 9:16, 1:1Select whether to keep the video original sound through the parameter.
Response
Use the task_id to request the Task Result API to retrieve the generated outputs.
Last modified on July 3, 2026
Was this page helpful?
⌘I