curl --request POST \
--url https://api.apimart.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "kling-v3",
"prompt": "A golden cat running on a sunlit meadow, slow motion, cinematic quality",
"mode": "std",
"duration": 5,
"aspect_ratio": "16:9"
}'
import requests
url = "https://api.apimart.ai/v1/videos/generations"
payload = {
"model": "kling-v3",
"prompt": "A golden cat running on a sunlit meadow, slow motion, cinematic quality",
"mode": "std",
"duration": 5,
"aspect_ratio": "16:9"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/videos/generations";
const payload = {
model: "kling-v3",
prompt: "A golden cat running on a sunlit meadow, slow motion, cinematic quality",
mode: "std",
duration: 5,
aspect_ratio: "16:9"
};
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://api.apimart.ai/v1/videos/generations"
payload := map[string]interface{}{
"model": "kling-v3",
"prompt": "A golden cat running on a sunlit meadow, slow motion, cinematic quality",
"mode": "std",
"duration": 5,
"aspect_ratio": "16:9",
}
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://api.apimart.ai/v1/videos/generations";
String payload = """
{
"model": "kling-v3",
"prompt": "A golden cat running on a sunlit meadow, slow motion, cinematic quality",
"mode": "std",
"duration": 5,
"aspect_ratio": "16:9"
}
""";
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://api.apimart.ai/v1/videos/generations";
$payload = [
"model" => "kling-v3",
"prompt" => "A golden cat running on a sunlit meadow, slow motion, cinematic quality",
"mode" => "std",
"duration" => 5,
"aspect_ratio" => "16:9"
];
$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;
?>
require 'net/http'
require 'json'
require 'uri'
url = URI("https://api.apimart.ai/v1/videos/generations")
payload = {
model: "kling-v3",
prompt: "A golden cat running on a sunlit meadow, slow motion, cinematic quality",
mode: "std",
duration: 5,
aspect_ratio: "16:9"
}
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer <token>"
request["Content-Type"] = "application/json"
request.body = payload.to_json
response = http.request(request)
puts response.body
import Foundation
let url = URL(string: "https://api.apimart.ai/v1/videos/generations")!
let payload: [String: Any] = [
"model": "kling-v3",
"prompt": "A golden cat running on a sunlit meadow, slow motion, cinematic quality",
"mode": "std",
"duration": 5,
"aspect_ratio": "16:9"
]
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer <token>", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try? JSONSerialization.data(withJSONObject: payload)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
print("Error: \(error)")
return
}
if let data = data, let responseString = String(data: data, encoding: .utf8) {
print(responseString)
}
}
task.resume()
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var url = "https://api.apimart.ai/v1/videos/generations";
var payload = @"{
""model"": ""kling-v3"",
""prompt"": ""A golden cat running on a sunlit meadow, slow motion, cinematic quality"",
""mode"": ""std"",
""duration"": 5,
""aspect_ratio"": ""16:9""
}";
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer <token>");
var content = new StringContent(payload, Encoding.UTF8, "application/json");
var response = await client.PostAsync(url, content);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
}
}
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_xxxxxxxxxx"
}
]
}
{
"error": {
"code": 400,
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}
{
"error": {
"code": 401,
"message": "Invalid authentication credentials",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Insufficient balance. Please top up your account",
"type": "payment_required"
}
}
{
"error": {
"code": 429,
"message": "Rate limit exceeded. Please try again later",
"type": "rate_limit_error"
}
}
{
"error": {
"code": 500,
"message": "Internal server error. Please try again later",
"type": "server_error"
}
}
Kling v3
Pembuatan Video Kling v3
- Mode pemrosesan asinkron, mengembalikan ID tugas untuk kueri berikutnya
- Mendukung teks-ke-video, gambar-ke-video (kontrol frame pertama/frame pertama-terakhir)
- Mendukung mode standar (720P), mode profesional (1080P), dan mode 4K
- Mendukung durasi video 3 hingga 15 detik
- Mendukung pembuatan video dengan audio
POST
/
v1
/
videos
/
generations
curl --request POST \
--url https://api.apimart.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "kling-v3",
"prompt": "A golden cat running on a sunlit meadow, slow motion, cinematic quality",
"mode": "std",
"duration": 5,
"aspect_ratio": "16:9"
}'
import requests
url = "https://api.apimart.ai/v1/videos/generations"
payload = {
"model": "kling-v3",
"prompt": "A golden cat running on a sunlit meadow, slow motion, cinematic quality",
"mode": "std",
"duration": 5,
"aspect_ratio": "16:9"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/videos/generations";
const payload = {
model: "kling-v3",
prompt: "A golden cat running on a sunlit meadow, slow motion, cinematic quality",
mode: "std",
duration: 5,
aspect_ratio: "16:9"
};
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://api.apimart.ai/v1/videos/generations"
payload := map[string]interface{}{
"model": "kling-v3",
"prompt": "A golden cat running on a sunlit meadow, slow motion, cinematic quality",
"mode": "std",
"duration": 5,
"aspect_ratio": "16:9",
}
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://api.apimart.ai/v1/videos/generations";
String payload = """
{
"model": "kling-v3",
"prompt": "A golden cat running on a sunlit meadow, slow motion, cinematic quality",
"mode": "std",
"duration": 5,
"aspect_ratio": "16:9"
}
""";
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://api.apimart.ai/v1/videos/generations";
$payload = [
"model" => "kling-v3",
"prompt" => "A golden cat running on a sunlit meadow, slow motion, cinematic quality",
"mode" => "std",
"duration" => 5,
"aspect_ratio" => "16:9"
];
$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;
?>
require 'net/http'
require 'json'
require 'uri'
url = URI("https://api.apimart.ai/v1/videos/generations")
payload = {
model: "kling-v3",
prompt: "A golden cat running on a sunlit meadow, slow motion, cinematic quality",
mode: "std",
duration: 5,
aspect_ratio: "16:9"
}
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer <token>"
request["Content-Type"] = "application/json"
request.body = payload.to_json
response = http.request(request)
puts response.body
import Foundation
let url = URL(string: "https://api.apimart.ai/v1/videos/generations")!
let payload: [String: Any] = [
"model": "kling-v3",
"prompt": "A golden cat running on a sunlit meadow, slow motion, cinematic quality",
"mode": "std",
"duration": 5,
"aspect_ratio": "16:9"
]
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer <token>", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try? JSONSerialization.data(withJSONObject: payload)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
print("Error: \(error)")
return
}
if let data = data, let responseString = String(data: data, encoding: .utf8) {
print(responseString)
}
}
task.resume()
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var url = "https://api.apimart.ai/v1/videos/generations";
var payload = @"{
""model"": ""kling-v3"",
""prompt"": ""A golden cat running on a sunlit meadow, slow motion, cinematic quality"",
""mode"": ""std"",
""duration"": 5,
""aspect_ratio"": ""16:9""
}";
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer <token>");
var content = new StringContent(payload, Encoding.UTF8, "application/json");
var response = await client.PostAsync(url, content);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
}
}
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_xxxxxxxxxx"
}
]
}
{
"error": {
"code": 400,
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}
{
"error": {
"code": 401,
"message": "Invalid authentication credentials",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Insufficient balance. Please top up your account",
"type": "payment_required"
}
}
{
"error": {
"code": 429,
"message": "Rate limit exceeded. Please try again later",
"type": "rate_limit_error"
}
}
{
"error": {
"code": 500,
"message": "Internal server error. Please try again later",
"type": "server_error"
}
}
curl --request POST \
--url https://api.apimart.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "kling-v3",
"prompt": "A golden cat running on a sunlit meadow, slow motion, cinematic quality",
"mode": "std",
"duration": 5,
"aspect_ratio": "16:9"
}'
import requests
url = "https://api.apimart.ai/v1/videos/generations"
payload = {
"model": "kling-v3",
"prompt": "A golden cat running on a sunlit meadow, slow motion, cinematic quality",
"mode": "std",
"duration": 5,
"aspect_ratio": "16:9"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/videos/generations";
const payload = {
model: "kling-v3",
prompt: "A golden cat running on a sunlit meadow, slow motion, cinematic quality",
mode: "std",
duration: 5,
aspect_ratio: "16:9"
};
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://api.apimart.ai/v1/videos/generations"
payload := map[string]interface{}{
"model": "kling-v3",
"prompt": "A golden cat running on a sunlit meadow, slow motion, cinematic quality",
"mode": "std",
"duration": 5,
"aspect_ratio": "16:9",
}
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://api.apimart.ai/v1/videos/generations";
String payload = """
{
"model": "kling-v3",
"prompt": "A golden cat running on a sunlit meadow, slow motion, cinematic quality",
"mode": "std",
"duration": 5,
"aspect_ratio": "16:9"
}
""";
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://api.apimart.ai/v1/videos/generations";
$payload = [
"model" => "kling-v3",
"prompt" => "A golden cat running on a sunlit meadow, slow motion, cinematic quality",
"mode" => "std",
"duration" => 5,
"aspect_ratio" => "16:9"
];
$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;
?>
require 'net/http'
require 'json'
require 'uri'
url = URI("https://api.apimart.ai/v1/videos/generations")
payload = {
model: "kling-v3",
prompt: "A golden cat running on a sunlit meadow, slow motion, cinematic quality",
mode: "std",
duration: 5,
aspect_ratio: "16:9"
}
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer <token>"
request["Content-Type"] = "application/json"
request.body = payload.to_json
response = http.request(request)
puts response.body
import Foundation
let url = URL(string: "https://api.apimart.ai/v1/videos/generations")!
let payload: [String: Any] = [
"model": "kling-v3",
"prompt": "A golden cat running on a sunlit meadow, slow motion, cinematic quality",
"mode": "std",
"duration": 5,
"aspect_ratio": "16:9"
]
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer <token>", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try? JSONSerialization.data(withJSONObject: payload)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
print("Error: \(error)")
return
}
if let data = data, let responseString = String(data: data, encoding: .utf8) {
print(responseString)
}
}
task.resume()
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var url = "https://api.apimart.ai/v1/videos/generations";
var payload = @"{
""model"": ""kling-v3"",
""prompt"": ""A golden cat running on a sunlit meadow, slow motion, cinematic quality"",
""mode"": ""std"",
""duration"": 5,
""aspect_ratio"": ""16:9""
}";
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer <token>");
var content = new StringContent(payload, Encoding.UTF8, "application/json");
var response = await client.PostAsync(url, content);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
}
}
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_xxxxxxxxxx"
}
]
}
{
"error": {
"code": 400,
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}
{
"error": {
"code": 401,
"message": "Invalid authentication credentials",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Insufficient balance. Please top up your account",
"type": "payment_required"
}
}
{
"error": {
"code": 429,
"message": "Rate limit exceeded. Please try again later",
"type": "rate_limit_error"
}
}
{
"error": {
"code": 500,
"message": "Internal server error. Please try again later",
"type": "server_error"
}
}
Otorisasi
string
wajib
Semua endpoint API memerlukan autentikasi Bearer TokenDapatkan API Key Anda:Kunjungi Halaman Manajemen API Key untuk mendapatkan API Key AndaTambahkan ke header request:
Authorization: Bearer YOUR_API_KEY
Parameter Request
string
wajib
Nama model pembuatan videoModel yang didukung:
kling-v3- Kling v3 (direkomendasikan)
boolean
default:"false"
Menentukan apakah moderasi konten dijalankan sebelum tugas video dikirim.
true: periksa prompt dan gambar input denganomni-moderation-latestfalseatau dihilangkan: tidak mengirim permintaan moderasi, tanpa biaya atau latensi moderasi tambahan (default)
string
wajib
Prompt teksJelaskan adegan, aksi, dan gaya secara detail untuk hasil pembuatan yang lebih baik. Prompt bahasa Inggris direkomendasikan.Contoh:
"a golden retriever running on the beach, sunset, cinematic"string
Prompt negatif untuk mengecualikan konten yang tidak diinginkanContoh:
"blurry, low quality, distorted"string
default:"std"
Mode pembuatanOpsi:
std- Mode standar (720P)pro- Mode profesional (1080P)4k- Mode 4K
stdinteger
default:"5"
Default:
5
Durasi video (detik)Rentang: 3-15 (minimum 3 detik, maksimum 15 detik)⚠️ Catatan: Harus berupa angka biasa (misalnya 6), jangan tambahkan tanda kutip, jika tidak akan terjadi errorstring
default:"16:9"
Rasio aspek videoOpsi:
16:9- Lanskap9:16- Potret1:1- Persegi
16:9array<url>
Array URL gambar untuk pembuatan gambar-ke-video
- Berikan 1 gambar: digunakan sebagai bingkai pertama
- Berikan 2 gambar: secara otomatis ditetapkan sebagai bingkai pertama + bingkai terakhir
["https://example.com/first.jpg"]- Maksimum 2 gambar yang didukung
- URL gambar harus dapat diakses publik tanpa proteksi hotlink
- Dalam mode gambar-ke-video,
aspect_ratiodapat ditimpa oleh rasio gambar aktual
boolean
Apakah menambahkan watermark
boolean
default:"false"
Apakah membuat video dengan audio
boolean
default:"false"
Apakah mengaktifkan mode multi-shot.
truefalse
string
Metode pemisahan shot:
customize / intelligence.Wajib saat multi_shot=true.array<object>
Informasi per shot, seperti prompt dan durasi.Tentukan urutan shot, prompt, dan durasi melalui Wajib saat
index, prompt, dan duration.- Mendukung 1 hingga 6 shot
- Panjang konten maksimum per shot adalah 512
- Setiap durasi shot harus >= 1 dan tidak boleh melebihi total durasi tugas
- Jumlah semua durasi shot harus sama dengan
durationtingkat atas
"multi_prompt": [
{ "index": 1, "prompt": "string", "duration": 5 },
{ "index": 2, "prompt": "string", "duration": 5 }
]
multi_shot=true dan shot_type=customize.array<object>
Daftar subjek referensi, hingga 3 subjek.Catatan:
- Buat secara langsung melalui
name,description,element_input_urls
[
{
"name": "element_dog",
"description": "a golden retriever, fluffy fur, friendly expression",
"element_input_urls": [
"https://example.com/image1.png",
"https://example.com/image2.png"
]
},
{
"name": "element_cat",
"description": "an orange tabby cat, round face, bright eyes",
"element_input_urls": [
"https://example.com/image1.png",
"https://example.com/image2.png"
]
}
]
name,description, danelement_input_urlswajib untuk pembuatan secara langsungelement_input_urls: 2-4 gambar per subjek (yang pertama sebagai gambar frontal, sisanya sebagai referensi)- Rujuk elemen dalam
promptdengan@name, misalnya"@element_dog chasing @element_cat on grass"
Kendala Parameter
mode=4kdidukung untukkling-v3image_urlsmendukung hingga 2 gambar (1 bingkai pertama, 2 bingkai pertama+terakhir)- Input hanya bingkai terakhir tidak valid (harus menyertakan bingkai pertama)
- Saat
multi_shot=true,prompttingkat atas dapat dihilangkan multi_promptmendukung hingga 6 shot, danindexharus dimulai dari 1 dan berurutan
Matriks Dukungan Fitur
| Type | Fitur | std 5s | std 10s | std 15s | pro 5s | pro 10s |
|---|---|---|---|---|---|---|
| Teks-ke-Video | Pembuatan | ✅ | ✅ | ✅ | ✅ | ✅ |
| Gambar-ke-Video | Pembuatan | ✅ | ✅ | ✅ | ✅ | ✅ |
| Gambar-ke-Video | Bingkai Pertama | ✅ | ✅ | ✅ | ✅ | ✅ |
| Gambar-ke-Video | Bingkai Terakhir | ✅ | ✅ | ✅ | ✅ | ✅ |
Teks-ke-Video vs Gambar-ke-Video
Sistem otomatis menentukan mode berdasarkan apakahimage_urls disediakan: tanpa gambar berarti teks-ke-video, dengan gambar berarti gambar-ke-video.
| Parameter | Teks-ke-Video | Gambar-ke-Video |
|---|---|---|
prompt | ✅ Wajib | ✅ Wajib |
image_urls | ❌ Tidak digunakan | ✅ Wajib (1-2 gambar) |
negative_prompt | ✅ Opsional | ✅ Opsional |
mode | ✅ Opsional | ✅ Opsional |
duration | ✅ Opsional (3-15) | ✅ Opsional (3-15) |
aspect_ratio | ✅ Opsional | ⚠️ Dapat ditimpa oleh rasio gambar |
watermark | ✅ Opsional | ✅ Opsional |
audio | ✅ Opsional | ✅ Opsional |
Respons
integer
Kode status respons, 200 jika berhasil
array
Kasus Penggunaan
Kasus 1: Teks-ke-Video (Mode Standar)
{
"model": "kling-v3",
"prompt": "A golden cat running on a sunlit meadow, slow motion, cinematic quality",
"mode": "std",
"duration": 5,
"aspect_ratio": "16:9"
}
Kasus 2: Teks-ke-Video (Mode Pro + Prompt Negatif)
{
"model": "kling-v3",
"prompt": "Tokyo Shibuya crossing at night, neon lights reflected on wet ground, people walking with umbrellas",
"negative_prompt": "blurry, low quality, distorted",
"mode": "pro",
"duration": 10,
"aspect_ratio": "16:9"
}
Kasus 3: Teks-ke-Video (15 detik)
{
"model": "kling-v3",
"prompt": "a time-lapse of a flower blooming in a garden",
"duration": 15,
"aspect_ratio": "16:9"
}
Kasus 4: Gambar-ke-Video (Frame Pertama)
{
"model": "kling-v3",
"prompt": "the cat slowly walks forward and looks around",
"image_urls": ["https://example.com/cat.jpg"],
"mode": "std",
"duration": 5
}
Kasus 5: Gambar-ke-Video (Kontrol Frame Pertama + Terakhir)
{
"model": "kling-v3",
"prompt": "smooth cinematic transition",
"image_urls": [
"https://example.com/frame-start.jpg",
"https://example.com/frame-end.jpg"
],
"mode": "std",
"duration": 5
}
Kasus 6: Membuat Video dengan Audio
{
"model": "kling-v3",
"prompt": "A rock singer singing on this stage, concert scene, flashing lights",
"audio": true,
"mode": "std",
"duration": 5
}
Kasus 7: Storyboard Multi-Shot (customize, 15 detik, potret dengan audio)
{
"model": "kling-v3",
"multi_prompt": [
{
"index": 1,
"prompt": "Two friends talking under a streetlight at night. Warm glow, casual poses, no dialogue.",
"duration": 2
},
{
"index": 2,
"prompt": "A runner sprinting through a forest, leaves flying. Low-angle shot, focus on movement.",
"duration": 3
},
{
"index": 3,
"prompt": "A woman hugging a cat, smiling. Soft sunlight, cozy home setting, emphasize warmth.",
"duration": 3
},
{
"index": 4,
"prompt": "A door creaking open, shadowy hallway. Dark tones, minimal details, eerie mood.",
"duration": 3
},
{
"index": 5,
"prompt": "A man slipping on a banana peel, shocked expression. Exaggerated pose, bright colors.",
"duration": 3
},
{
"index": 6,
"prompt": "A sunset over mountains, small figure walking away. Wide angle, peaceful atmosphere.",
"duration": 1
}
],
"multi_shot": true,
"shot_type": "customize",
"duration": 15,
"mode": "pro",
"audio": true,
"aspect_ratio": "9:16"
}
Kueri Hasil TugasPembuatan video adalah tugas asinkron yang mengembalikan
task_id saat dikirim. Gunakan endpoint Dapatkan Status Tugas untuk mengueri progres dan hasil pembuatan.