curl --request POST \
--url https://api.apimart.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "kling-v4-flash",
"prompt": "A paper boat drifts along a gutter on a rainy night, with the gentle sound of rain",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "9:16"
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/videos/generations",
headers={"Authorization": "Bearer <token>"},
json={
"model": "kling-v4-flash",
"prompt": "A paper boat drifts along a gutter on a rainy night, with the gentle sound of rain",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "9:16"
}
)
response.raise_for_status()
print(response.json())
const response = await fetch("https://api.apimart.ai/v1/videos/generations", {
method: "POST",
headers: {
Authorization: "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "kling-v4-flash",
prompt: "A paper boat drifts along a gutter on a rainy night, with the gentle sound of rain",
duration: 5,
resolution: "720p",
aspect_ratio: "9:16"
})
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
Kling V4 Flash
Kling V4 Flash Pembuatan Video
Video dari teks, satu gambar awal, referensi gambar/video, pengeditan, dan perpanjangan. Hanya 720p, 3–20 detik hasil generasi, 24fps.
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-v4-flash",
"prompt": "A paper boat drifts along a gutter on a rainy night, with the gentle sound of rain",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "9:16"
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/videos/generations",
headers={"Authorization": "Bearer <token>"},
json={
"model": "kling-v4-flash",
"prompt": "A paper boat drifts along a gutter on a rainy night, with the gentle sound of rain",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "9:16"
}
)
response.raise_for_status()
print(response.json())
const response = await fetch("https://api.apimart.ai/v1/videos/generations", {
method: "POST",
headers: {
Authorization: "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "kling-v4-flash",
prompt: "A paper boat drifts along a gutter on a rainy night, with the gentle sound of rain",
duration: 5,
resolution: "720p",
aspect_ratio: "9:16"
})
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
Endpoint ini bekerja secara asinkron. Setelah mengirim permintaan, gunakan
task_id yang dikembalikan dengan GET /v1/tasks/{task_id} untuk memeriksa status dan hasil tugas.curl --request POST \
--url https://api.apimart.ai/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "kling-v4-flash",
"prompt": "A paper boat drifts along a gutter on a rainy night, with the gentle sound of rain",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "9:16"
}'
import requests
response = requests.post(
"https://api.apimart.ai/v1/videos/generations",
headers={"Authorization": "Bearer <token>"},
json={
"model": "kling-v4-flash",
"prompt": "A paper boat drifts along a gutter on a rainy night, with the gentle sound of rain",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "9:16"
}
)
response.raise_for_status()
print(response.json())
const response = await fetch("https://api.apimart.ai/v1/videos/generations", {
method: "POST",
headers: {
Authorization: "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "kling-v4-flash",
prompt: "A paper boat drifts along a gutter on a rainy night, with the gentle sound of rain",
duration: 5,
resolution: "720p",
aspect_ratio: "9:16"
})
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
Pemilihan mode
Kelima mode memakai nama model yang sama,kling-v4-flash. Mode dipilih berdasarkan aset yang diberikan dan omni_reference_task_type.
| Mode | Input |
|---|---|
| Teks ke video | Tanpa aset gambar, video, atau audio |
| Gambar ke video | Tepat satu frame awal melalui first_frame_image, first_frame dalam image_with_roles, atau satu-satunya gambar dalam image_urls |
| Pembuatan berbasis referensi | Berikan video_urls atau reference_image dalam image_with_roles, atau tetapkan omni_reference_task_type: "reference" secara eksplisit |
| Pengeditan video | Tetapkan omni_reference_task_type: "edit" dan berikan video input |
| Perpanjangan video | Tetapkan omni_reference_task_type: "extend" dan berikan video input |
omni_reference_task_type adalah auto, sama dengan tidak mengirim kolom ini. Jika secara eksplisit diatur ke reference, gambar dalam image_urls diperlakukan sebagai gambar referensi.
Mengirim hanya
video_url tanpa menentukan edit atau extend menghasilkan HTTP 400. Untuk memakai video sebagai referensi, gunakan video_urls.Header permintaan
string
wajib
Autentikasi Bearer:
Bearer <token>, dengan <token> sebagai API Key APIMart Anda.Parameter permintaan
string
wajib
Harus
kling-v4-flash.string
Jelaskan konten yang akan dibuat atau diedit. Opsional hanya untuk gambar ke video; wajib untuk mode lain. Gunakan
@Image1 / @Video1 sesuai urutan array mulai dari 1. Saat mengedit, video input adalah @Video1, gambar referensi adalah @Image1, @Image2, dan seterusnya.integer
Bilangan bulat
3–20 detik, biasanya default 5. Jika dihilangkan saat mengedit, durasi mengikuti input yang dibulatkan ke atas. Untuk perpanjangan, ini adalah panjang segmen tambahan. 0 eksplisit menghasilkan HTTP 400; null sama dengan tidak dikirim. Biaya memakai bilangan bulat ini; file aktual dapat lebih panjang sekitar satu frame.integer
Alias
duration dengan aturan yang sama. Jika keduanya dikirim, masing-masing harus dalam 3–20 dan nilainya sama; jika tidak, HTTP 400.string
default:"720p"
Hanya
720p, sekaligus nilai default. 1080p menghasilkan HTTP 400. Pemilihan tingkat melalui mode tidak didukung.string
Generasi dari teks, generasi referensi, dan pengeditan mendukung
16:9, 9:16, 1:1, dan 21:9; hanya generasi referensi yang menerima auto. Generasi dari gambar tidak menerima aspect_ratio / size: nilai yang tidak kosong mengembalikan HTTP 400, sedangkan string kosong dianggap tidak dikirim. Pangkas frame awal terlebih dahulu untuk mengubah rasio.| Mode | Perilaku default |
|---|---|
| Teks ke video | 16:9 |
| Gambar ke video | Jangan kirim aspect_ratio / size; mengikuti frame awal. Pangkas terlebih dahulu untuk mengubah rasio |
| Pembuatan berbasis referensi | auto |
| Pengeditan video | Mengikuti video input |
| Perpanjangan video | Kolom ini tidak didukung; rasio aspek asli dipertahankan |
string[]
Gambar ke video menerima tepat satu gambar awal; dua gambar menghasilkan HTTP 400. Pada referensi dan pengeditan, maksimal 10 gambar referensi. Untuk referensi berupa gambar saja, tetapkan
omni_reference_task_type: "reference". URL materi harus dapat diakses publik. Frame awal dan gambar referensi harus memiliki lebar serta tinggi minimal 300px, dengan rasio lebar:tinggi antara 2:5 dan 5:2. Gambar yang tidak sesuai mengembalikan HTTP 400 saat pengiriman tanpa biaya.object[]
Setiap item memiliki
url dan role. Gambar ke video menerima satu first_frame; referensi dan pengeditan memakai reference_image. Frame akhir dan tengah tidak didukung. Maksimal 10 gambar referensi dan total 15 materi termasuk video referensi. Frame awal dan gambar referensi harus memiliki lebar serta tinggi minimal 300px, dengan rasio lebar:tinggi antara 2:5 dan 5:2. Gambar yang tidak sesuai mengembalikan HTTP 400 saat pengiriman tanpa biaya.string
URL bingkai awal untuk gambar ke video. Bisa juga diberikan melalui
first_frame dalam image_with_roles, atau sebagai gambar pertama dalam image_urls. Frame awal dan gambar referensi harus memiliki lebar serta tinggi minimal 300px, dengan rasio lebar:tinggi antara 2:5 dan 5:2. Gambar yang tidak sesuai mengembalikan HTTP 400 saat pengiriman tanpa biaya.string[]
Maksimal 5 video referensi dengan total durasi paling lama 20 detik. Melebihi batas menghasilkan HTTP 400, tanpa pemotongan. Untuk pengeditan atau perpanjangan, satu entri dapat menggantikan
video_url jika jenis tugas ditetapkan secara eksplisit.Video referensi harus berformat MP4 / MOV dengan lebar dan tinggi masing-masing dalam rentang 700–4553px. Durasi dihitung dari stream video, bukan kontainer: minimal 3 detik per klip dan maksimal 20 detik total. Jika ada video referensi di bawah 3 detik, pengiriman mengembalikan HTTP 400 tanpa biaya.string
URL video input untuk pengeditan atau perpanjangan. Wajib menyertakan
omni_reference_task_type: "edit" atau "extend", jika tidak HTTP 400. Input pengeditan harus 3–20 detik; di luar rentang ditolak tanpa biaya.Pengeditan menerima video MP4 / MOV dengan lebar dan tinggi masing-masing dalam rentang 700–4553px. Batas 3–20 detik dihitung dari durasi stream video, bukan kontainer. Format, lebar, tinggi, atau durasi input pengeditan yang tidak sesuai mengembalikan HTTP 400 saat pengiriman tanpa biaya.Input perpanjangan tidak dibatasi oleh rentang tinggi atau minimum 3 detik pada pengeditan. Misalnya, video 480p berdurasi 2 detik dapat diperpanjang.string
default:"auto"
Mendukung
auto, reference, edit, dan extend.auto: memilih teks ke video, gambar ke video, atau pembuatan berbasis referensi berdasarkan aset; sama dengan tidak mengirim kolom ini.reference: pembuatan berbasis referensi; gambar dalamimage_urlsdiperlakukan sebagai referensi.edit: pengeditan video; memerlukan video input.extend: perpanjangan video; memerlukan video input.
string
Untuk generasi referensi dengan video:
origin mempertahankan audio video referensi pertama; auto menghasilkan audio baru dan menjadi nilai default. origin memerlukan video referensi. Jika video referensi pertama tidak memiliki trek audio, hasilnya juga tidak memiliki trek audio. Pengeditan menghasilkan audio baru tanpa mempertahankan audio asli; jangan kirim parameter ini dalam permintaan pengeditan. Perpanjangan tidak mendukungnya.Dimensi output dan laju frame
Output menggunakan tingkat720p dengan dimensi piksel aktual yang berubah sesuai rasio, pada 24fps. File dapat sekitar satu frame lebih panjang dari duration; misalnya permintaan 3 detik menghasilkan sekitar 3.04 detik.
| Rasio / mode | Piksel aktual |
|---|---|
16:9 | 1280×720 |
9:16 | 720×1280 |
1:1 | 960×960 |
21:9 | 1464×628 |
| Dari gambar | Mengikuti frame awal, total sekitar 0.92MP; frame awal 1:2.5 menghasilkan 604×1516 |
Contoh permintaan
URL aset di bawah hanyalah contoh. Ganti dengan URL asli yang dapat diakses publik.Gambar ke video: satu frame awal
{
"model": "kling-v4-flash",
"image_urls": [
"https://example.com/start.png"
]
}
prompt opsional. Frame akhir, frame tengah, atau gambar kedua tidak didukung.
Jangan kirim aspect_ratio / size; mengikuti frame awal. Pangkas terlebih dahulu untuk mengubah rasio.
Frame awal dan gambar referensi harus memiliki lebar serta tinggi minimal 300px, dengan rasio lebar:tinggi antara 2:5 dan 5:2. Gambar yang tidak sesuai mengembalikan HTTP 400 saat pengiriman tanpa biaya.
Pembuatan berbasis referensi
{
"model": "kling-v4-flash",
"prompt": "The girl in @Image1 runs along the beach with the camera movement from @Video1.",
"image_with_roles": [
{
"url": "https://example.com/girl.png",
"role": "reference_image"
}
],
"video_urls": [
"https://example.com/camera.mp4"
],
"aspect_ratio": "auto",
"duration": 5
}
audio_setting: "origin" untuk mempertahankan audio video referensi pertama. Dengan origin, jika video referensi pertama tidak memiliki trek audio, hasilnya juga tidak memiliki trek audio.
Frame awal dan gambar referensi harus memiliki lebar serta tinggi minimal 300px, dengan rasio lebar:tinggi antara 2:5 dan 5:2. Gambar yang tidak sesuai mengembalikan HTTP 400 saat pengiriman tanpa biaya.
Video referensi harus berformat MP4 / MOV dengan lebar dan tinggi masing-masing dalam rentang 700–4553px. Durasi dihitung dari stream video, bukan kontainer: minimal 3 detik per klip dan maksimal 20 detik total. Jika ada video referensi di bawah 3 detik, pengiriman mengembalikan HTTP 400 tanpa biaya.
Pengeditan video
{
"model": "kling-v4-flash",
"prompt": "Change the scene to a snowy winter night.",
"omni_reference_task_type": "edit",
"video_url": "https://example.com/in.mp4",
"image_urls": [
"https://example.com/style.png"
]
}
duration, durasi input dibulatkan ke atas; tanpa aspect_ratio, rasio input dipertahankan. Pengeditan menghasilkan audio baru tanpa mempertahankan audio asli. Jangan kirim audio_setting dalam permintaan.
Frame awal dan gambar referensi harus memiliki lebar serta tinggi minimal 300px, dengan rasio lebar:tinggi antara 2:5 dan 5:2. Gambar yang tidak sesuai mengembalikan HTTP 400 saat pengiriman tanpa biaya.
Pengeditan menerima video MP4 / MOV dengan lebar dan tinggi masing-masing dalam rentang 700–4553px. Batas 3–20 detik dihitung dari durasi stream video, bukan kontainer. Format, lebar, tinggi, atau durasi input pengeditan yang tidak sesuai mengembalikan HTTP 400 saat pengiriman tanpa biaya.
Perpanjangan video
{
"model": "kling-v4-flash",
"prompt": "The camera continues moving forward as the sky grows darker.",
"omni_reference_task_type": "extend",
"video_url": "https://example.com/in.mp4",
"duration": 5
}
aspect_ratio, dan audio_setting tidak didukung; rasio asli dipertahankan.
Input perpanjangan tidak dibatasi oleh rentang tinggi atau minimum 3 detik pada pengeditan. Misalnya, video 480p berdurasi 2 detik dapat diperpanjang.
Memeriksa tugas
Ganti ID tugas dalam permintaan berikut dengan ID yang dikembalikan saat pengiriman:curl --request GET \
--url 'https://api.apimart.ai/v1/tasks/<task_id>' \
--header 'Authorization: Bearer <token>'
task_id dan periksa hingga completed atau failed. Video 720p berdurasi 3 detik memerlukan sekitar 1–4 menit dalam pengujian; ini perkiraan, bukan batas waktu tetap untuk menyatakan kegagalan.
Penagihan
Ditagih per detik; lihat harga model. Generasi standar dan input video menggunakan tarif berbeda.| Mode | Detik yang ditagih |
|---|---|
| Teks ke video, gambar ke video, referensi gambar saja | Detik output; kling-v4-flash@720P |
| Perpanjangan video | Detik segmen tambahan; kling-v4-flash@720P |
| Pengeditan, generasi dengan video referensi | Detik output + max(detik output, detik video input); kling-v4-flash@720P-input |
duration: 3 dikenai biaya 3 + 4 = 7 detik. Pengeditan dan generasi referensi dengan video memeriksa format, lebar, tinggi, serta durasi stream saat pengiriman. Pemeriksaan gagal, format selain MP4 / MOV, lebar atau tinggi di luar 700–4553px, total lebih dari 20 detik, atau input pengeditan di bawah 3 detik mengembalikan HTTP 400 tanpa biaya. Setiap klip referensi dinilai berdasarkan durasi stream video; klip di bawah 3 detik mengembalikan HTTP 400 saat pengiriman tanpa biaya.
Tugas gagal mendapat pengembalian dana penuh, termasuk tugas yang dinyatakan timeout oleh platform. Menghentikan pemeriksaan di klien tidak membatalkan tugas; jika kemudian berhasil, biaya tetap dikenakan.
Parameter yang tidak didukung
Parameter atau nilai berikut menghasilkan HTTP 400:resolution: "1080p"last_frame_image,role: "last_frame",role: "keyframe"audio_urls,audio_urlmode,negative_prompt,watermark: true,audio: falsemulti_shot,multi_prompt,element_list,video_listcamera_control,voice_list
Kesalahan umum
| Kesalahan | Tindakan |
|---|---|
kling-v4-flash only supports resolution 720p (got: 1080p) | Gunakan 720p, bukan 1080p. |
kling-v4-flash duration must be between 3 and 20 seconds | Gunakan integer 3–20 untuk duration / seconds; jangan kirim 0. |
kling-v4-flash image-to-video follows the first frame's aspect ratio; remove aspect_ratio / size | Hapus aspect_ratio / size untuk generasi dari gambar. Rasio mengikuti frame awal; pangkas terlebih dahulu untuk mengubahnya. |
kling-v4-flash first frame: image width and height must be at least 300px | Frame awal dan gambar referensi harus memiliki lebar dan tinggi minimal 300px. |
kling-v4-flash first frame: image aspect ratio (width:height) must be between 2:5 and 5:2 | Gunakan rasio lebar:tinggi gambar antara 2:5 dan 5:2. |
kling-v4-flash input video #1: unsupported video format webm/mkv (supported: mp4/mov) | Gunakan MP4 / MOV untuk pengeditan atau video referensi; WebM / MKV tidak didukung. |
kling-v4-flash input video #1: video height must be between 700 and 4553px | Video pengeditan dan referensi memerlukan lebar dan tinggi masing-masing dalam rentang 700–4553px. Rentang ini tidak berlaku untuk input perpanjangan. |
kling-v4-flash input video #1: video width must be between 700 and 4553px | Lebar dan tinggi video pengeditan serta referensi masing-masing harus dalam rentang 700–4553px. Video vertikal juga harus memiliki lebar minimal 700px. |
kling-v4-flash reference video #1 must be at least 3 seconds | Setiap referensi harus memiliki durasi stream video minimal 3 detik. Klip yang lebih pendek mengembalikan HTTP 400 saat pengiriman tanpa biaya. |
kling-v4-flash only supports aspect_ratio 16:9, 9:16, 1:1 or 21:9 (got: auto) | Hanya generasi referensi yang mendukung auto; jangan kirim kolom rasio untuk generasi dari gambar. |
kling-v4-flash image-to-video only takes a first frame; last frame and keyframes are not supported | Sisakan satu frame awal; hapus frame akhir/tengah atau gambar kedua. |
kling-v4-flash reference-to-video does not take reference audios | Hapus audio_urls / audio_url. |
kling-v4-flash video extend takes no images | Hapus gambar dan target frame akhir dari permintaan perpanjangan. |
kling-v4-flash input videos must be at most 20 seconds in total | Total referensi video atau input pengeditan tidak boleh melebihi 20 detik. Tidak ada pemotongan otomatis. |
video edit requires an input video of at least 3 seconds | Gunakan input pengeditan dengan durasi stream video minimal 3 detik, bukan berdasarkan durasi kontainer. |
video_url needs omni_reference_task_type edit ... or extend | Tetapkan edit / extend; masukkan referensi video ke video_urls. |
Failed to probe the input video duration | Pastikan URL input dapat diakses dan berisi video yang valid. |
duration (3) and seconds (5) are aliases and must match | Kirim satu alias atau dua nilai sama dalam rentang 3–20. |