> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apimart.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 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.

> [!NOTE]
>
> 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.

```bash cURL theme={null}
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"
  }'
```

```python Python theme={null}
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())
```

```javascript JavaScript theme={null}
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 |

Nilai default `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.

> [!WARNING]
>
> Mengirim hanya `video_url` tanpa menentukan `edit` atau `extend` menghasilkan HTTP 400. Untuk memakai video sebagai referensi, gunakan `video_urls`.

## Header permintaan

**Authorization** `string` *required*

Autentikasi Bearer: `Bearer <token>`, dengan `<token>` sebagai API Key APIMart Anda.

## Parameter permintaan

**model** `string` *required*

Harus `kling-v4-flash`.

**prompt** `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.

**duration** `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.

**seconds** `integer`

Alias `duration` dengan aturan yang sama. Jika keduanya dikirim, masing-masing harus dalam `3`–`20` dan nilainya sama; jika tidak, HTTP 400.

**resolution** `string` (default: 720p)

Hanya `720p`, sekaligus nilai default. `1080p` menghasilkan HTTP 400. Pemilihan tingkat melalui `mode` tidak didukung.

**aspect\_ratio** `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 |

**image\_urls** `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.

**image\_with\_roles** `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.

**first\_frame\_image** `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.

**video\_urls** `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.

**video\_url** `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.

**omni\_reference\_task\_type** `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 dalam `image_urls` diperlakukan sebagai referensi.
* `edit`: pengeditan video; memerlukan video input.
* `extend`: perpanjangan video; memerlukan video input.

**audio\_setting** `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 tingkat `720p` 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

```json theme={null}
{
  "model": "kling-v4-flash",
  "image_urls": [
    "https://example.com/start.png"
  ]
}
```

Berikan satu gambar awal; `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

```json theme={null}
{
  "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
}
```

Maksimal 10 gambar dan 5 video referensi, total paling banyak 15 materi. Video referensi harus berjumlah paling lama 20 detik. Audio referensi tidak didukung. Tambahkan `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

```json theme={null}
{
  "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"
  ]
}
```

Input pengeditan harus memiliki durasi stream video 3–20 detik. Tanpa `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

```json theme={null}
{
  "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
}
```

Menghasilkan segmen baru sepanjang 3–20 detik dari frame terakhir input dan hanya mengembalikan segmen baru tersebut, tanpa video asli. Biaya dihitung dari segmen baru. Gambar, target frame akhir, `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:

```bash theme={null}
curl --request GET \
  --url 'https://api.apimart.ai/v1/tasks/<task_id>' \
  --header 'Authorization: Bearer <token>'
```

Gunakan [pemeriksaan tugas](https://docs.apimart.ai/id/api-reference/tasks/status.md). Simpan `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](https://apimart.ai/pricing). 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` |

Detik video input dihitung dengan menjumlahkan durasi semua stream video lalu membulatkannya ke atas, bukan menggunakan durasi kontainer. Mengedit video 3.04 detik dengan `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_url`
* `mode`, `negative_prompt`, `watermark: true`, `audio: false`
* `multi_shot`, `multi_prompt`, `element_list`, `video_list`
* `camera_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. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.