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

# Pembuatan Video apimart-zoe

> Buat dan edit video dari teks, bingkai, serta referensi gambar/video/audio: 480p–4k, gambar bingkai terakhir, MOV, dan pembuatan draf ke video final.

> [!NOTE]
>
> API ini bersifat asinkron. Setelah mengirim, baca `data[0].task_id`, lalu gunakan [status tugas](https://docs.apimart.ai/id/api-reference/tasks/status.md) untuk mengambil hasil. Pembuatan biasanya memerlukan 1–3 menit; periksa setiap 5–10 detik. Waktu sebenarnya bergantung pada 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": "apimart-zoe",
    "prompt": "Anak kucing oranye di ambang jendela menatap kamera, dengan sinar matahari dari samping dan gerakan kamera perlahan mendekat",
    "resolution": "1080p",
    "aspect_ratio": "16:9",
    "duration": 8,
    "audio": true,
    "nsfw_check": true,
    "return_last_frame": true
  }'
```

```python Python theme={null}
import requests

response = requests.post(
    "https://api.apimart.ai/v1/videos/generations",
    headers={"Authorization": "Bearer <token>"},
    json={
        "model": "apimart-zoe",
        "prompt": "Anak kucing oranye di ambang jendela menatap kamera, dengan sinar matahari dari samping dan gerakan kamera perlahan mendekat",
        "resolution": "1080p",
        "aspect_ratio": "16:9",
        "duration": 8,
        "audio": True,
        "nsfw_check": True,
        "return_last_frame": True
    }
)
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": "apimart-zoe",
    "prompt": "Anak kucing oranye di ambang jendela menatap kamera, dengan sinar matahari dari samping dan gerakan kamera perlahan mendekat",
    "resolution": "1080p",
    "aspect_ratio": "16:9",
    "duration": 8,
    "audio": true,
    "nsfw_check": true,
    "return_last_frame": true
  })
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
```

```json 200 theme={null}
{
  "code": 200,
  "data": [
    {
      "status": "submitted",
      "task_id": "task_01KZOEEXAMPLE"
    }
  ]
}
```

## Pilih mode

| Mode | Parameter |
| - | - |
| Teks ke video | Kirim `prompt` tanpa media. |
| Bingkai ke video | Gunakan peran `first_frame` dan `last_frame` opsional di `image_with_roles`, atau `first_frame_image` / `last_frame_image`. |
| Referensi ke video | Gambar atau video referensi, opsional dengan audio. Audio saja tidak didukung. |
| Draf | `draft: true` menghasilkan keluaran `480p`. |
| Video final | Gunakan `draft_task_id` dari draf yang berhasil untuk keluaran `1080p`. |
| Pengeditan video | Gunakan `omni_reference_task_type: "edit"` dengan minimal satu video sumber. Durasi dan rasio mengikuti sumber. |

## Header

**Authorization** `string` *required*

Autentikasi Bearer: `Bearer <token>`, dengan `<token>` sebagai kunci API APIMart Anda. Kirim isi permintaan dengan `Content-Type: application/json`.

## Parameter permintaan

**model** `string` *required*

Harus `apimart-zoe`.

**prompt** `string`

Maksimal 204.800 karakter. Wajib untuk teks ke video; opsional jika hanya mengirim media. Dilarang saat memakai `draft_task_id`: prompt diwarisi dari draf.

**resolution** `string`

`480p`, `720p`, `1080p`, `2k`, `4k`, tanpa membedakan huruf besar/kecil. Default pembuatan biasa: `720p`. Dengan `draft: true`, hanya `480p`, termasuk jika dihilangkan. Dengan `draft_task_id`, hanya `1080p`, termasuk jika dihilangkan.

**aspect\_ratio** `string`

`21:9`, `16:9`, `4:3`, `1:1`, `3:4`, `9:16`, `adaptive`. Default `adaptive`, ditentukan model atau media. Hilangkan untuk video final karena rasio diwarisi dari draf.

Untuk pengeditan (`edit`), hilangkan kolom atau gunakan `adaptive` agar mengikuti rasio sumber.

**size** `string`

Nama alternatif untuk `aspect_ratio`, dengan nilai yang sama. Sebaiknya kirim salah satu saja. Hilangkan untuk video final.

**duration** `integer`

Pembuatan biasa: Detik bulat `4`–`30`, default `5`. Durasi yang diminta atau default ditagih tanpa penyesuaian terhadap panjang hasil video. Dengan `-1`, model menentukan: cadangan 30 detik, lalu disesuaikan dengan durasi aktual yang dibulatkan ke detik terdekat (0.5 ke atas). Hilangkan untuk video final yang mewarisi durasi draf.

Untuk pengeditan (`edit`), hilangkan kolom atau gunakan `-1`. Jika dihilangkan, dianggap `-1`; durasi mengikuti video sumber.

**seconds** `integer`

Alias `duration` dengan aturan yang sama. Gunakan salah satu saja. Hilangkan untuk video final.

**audio** `boolean`

Boolean untuk menghasilkan audio bersama video. Alias: `generate_audio`. Jika dihilangkan, model yang menentukan. Dilarang untuk video final. Mengontrol audio keluaran, bukan referensi masukan `audio_urls`.

Jika `audio` dan `generate_audio` dikirim bersamaan, nilainya harus sama; jika tidak, HTTP 400. Jika dihilangkan, model menentukan dan biasanya menyertakan suara.

**generate\_audio** `boolean`

Alias `audio` dengan aturan yang sama. Gunakan salah satu saja dan hilangkan untuk video final.

Jika `audio` dan `generate_audio` dikirim bersamaan, nilainya harus sama; jika tidak, HTTP 400. Jika dihilangkan, model menentukan dan biasanya menyertakan suara.

**seed** `integer`

Seed acak berupa bilangan bulat. Dilarang untuk video final.

**nsfw\_check** `boolean`

Moderasi nonaktif secara default; gunakan `true` untuk mengaktifkan.

Boolean opsional. `true` mengaktifkan moderasi untuk `prompt`, `image_urls`, `image_with_roles`, gambar bingkai awal/akhir, dan gambar `asset://`. Video dan audio referensi tidak dimoderasi.

Permintaan video final tidak memuat prompt atau media. Pada alur draf → video final, moderasi dilakukan saat membuat draf.

Jika terdeteksi, API mengembalikan HTTP 400 (`nsfw_content_detected`) dengan kategori di `error.message`. Tampilkan sebagai penolakan moderasi, bukan kesalahan parameter umum. Jika layanan moderasi gagal atau tidak tersedia, pembuatan tetap dilanjutkan; parameter ini tidak menjamin semua permintaan menyelesaikan moderasi.

**omni\_reference\_task\_type** `string`

Mendukung `auto` (default, sama dengan dihilangkan; model menentukan), `reference`, dan `edit`. `reference` / `edit` memerlukan media referensi; teks saja atau bingkai awal/akhir dengan nilai ini menghasilkan HTTP 400. `edit` memerlukan minimal satu entri `video_urls` dan tidak dapat digabung dengan `draft: true`. `extend` belum didukung dan menghasilkan HTTP 400. Jangan kirim saat pembuatan final.

**return\_last\_frame** `boolean`

Dengan `true`, bingkai terakhir juga dikembalikan sebagai PNG di `data.result.last_frame_url`. Nonaktif secara default. Jangan kirim saat pembuatan final.

**output\_format** `string`

`mp4` (default) atau `mov` (kontainer QuickTime); nilai lain menghasilkan HTTP 400. Alias: `response_format`. Jika keduanya dikirim, `output_format` diprioritaskan. Jangan kirim saat pembuatan final.

**response\_format** `string`

Alias `output_format`, menerima `mp4` / `mov`. Jika keduanya dikirim, `output_format` diprioritaskan. Jangan kirim saat pembuatan final.

**enhance\_prompt** `boolean`

Dengan `true`, prompt dioptimalkan otomatis sebelum pembuatan. Secara default, prompt asli digunakan tanpa optimasi. Jangan kirim saat pembuatan final.

**image\_with\_roles** `object[]`

Setiap item berisi `url` dan `role`. Peran: `first_frame` (awal), `last_frame` (akhir), `reference_image` (referensi). Maksimal satu bingkai awal dan satu akhir; bingkai akhir memerlukan bingkai awal. Keduanya tidak dapat digabung dengan media referensi.

Jangan kirim `image_urls` bersama `image_with_roles`. Kombinasi ini menghasilkan HTTP 400 (`invalid_request_error`) saat pengiriman, tanpa biaya. Alias `image`, `images`, dan `image_url` juga dihitung sebagai `image_urls` dan tidak dapat melewati batasan ini.

**image\_urls** `string[]`

Maksimal 30 gambar referensi. Lihat persyaratan format, dimensi, dan ukuran file di bawah.

Jangan kirim `image_urls` bersama `image_with_roles`. Kombinasi ini menghasilkan HTTP 400 (`invalid_request_error`) saat pengiriman, tanpa biaya. Alias `image`, `images`, dan `image_url` juga dihitung sebagai `image_urls` dan tidak dapat melewati batasan ini.

**first\_frame\_image** `string`

Alamat gambar bingkai awal, setara dengan peran `first_frame` di `image_with_roles`.

**last\_frame\_image** `string`

Alamat gambar bingkai akhir, setara dengan peran `last_frame`. Bingkai awal juga wajib diberikan.

**video\_urls** `string[]`

Maksimal 10 video referensi. URL `http(s)` publik atau `asset://<ID media>`, tanpa `data:` Base64. Dimensi, durasi presisi, dan laju bingkai diperiksa saat pengiriman sesuai aturan di bawah.

Untuk penagihan, durasi dijumlahkan lalu total dibulatkan ke bawah ke detik bulat, tanpa penyesuaian berikutnya. Pembulatan ini tidak digunakan untuk memvalidasi durasi tiap video. Gagal mengakses atau mengukur durasi menghasilkan HTTP 400 (`input_video_probe_failed`), tanpa biaya.

`auto` / `reference`: 2–15 detik, rentang diterima `1.8 ≤ t ≤ 15.2`. Sumber untuk `edit`: 4–30 detik, rentang diterima `3.8 ≤ t < 30.2`. Periksa durasi presisi tanpa pembulatan sebelumnya.

**audio\_urls** `string[]`

Maksimal 10; WAV / MP3; masing-masing 2–15 detik dan `≤ 15 MB`, total maksimal 30 detik. Toleransi ±0.2 detik: tiap klip `1.8 ≤ t ≤ 15.2`, total `≤ 30.2`. Memerlukan gambar atau video referensi.

URL publik `http(s)` atau `asset://<ID media>`, tanpa `data:` Base64. Durasi audio diperiksa saat pengiriman; pelanggaran menghasilkan HTTP 400 sinkron tanpa biaya.

**draft** `boolean`

`true` membuat draf `480p`. Parameter lain mengikuti aturan pembuatan biasa. Jangan kirim bidang ini untuk video final.

Pengeditan video (`edit`) tidak mendukung draf.

**draft\_task\_id** `string`

`task_id` draf yang berhasil untuk membuat video final `1080p`. Gunakan dalam 24 jam setelah draf dibuat. Prompt, media, durasi, dan rasio diwarisi; jangan kirim ulang bidang tersebut. Video final juga melarang `seed`, `audio`, dan aliasnya `generate_audio`.

## Alamat dan batas kombinasi media

Gambar, video, dan audio menerima URL publik `http(s)` atau media APIMart `asset://<ID media>`. Semuanya menolak `data:` Base64; unggah media terlebih dahulu. Pendaftaran otomatis tanpa panggilan API tambahan. Kegagalan pendaftaran menggagalkan tugas dan mengembalikan biaya.

| Media | Persyaratan |
| - | - |
| Gambar referensi | Maksimal 30; JPEG / PNG / WebP / BMP / TIFF / GIF / HEIC / HEIF; rasio 0.4–2.5; lebar dan tinggi masing-masing 300–6000 piksel; tiap file `< 30 MB`. |
| Video referensi | Maksimal 10; MP4 / MOV (H.264 / H.265; trek audio: AAC / MP3); tiap file `≤ 200 MB`. Aturan dimensi, durasi, dan laju bingkai ada di bawah. |
| Audio referensi | Maksimal 10; WAV / MP3; masing-masing 2–15 detik dan `≤ 15 MB`, total maksimal 30 detik. Toleransi ±0.2 detik: tiap klip `1.8 ≤ t ≤ 15.2`, total `≤ 30.2`. Memerlukan gambar atau video referensi. |

### Validasi video referensi

| Properti | Persyaratan |
| - | - |
| Lebar dan tinggi | Lebar dan tinggi masing-masing 300–6000 piksel. |
| Luas piksel (lebar × tinggi) | 409.600–8.295.044 piksel. |
| Rasio (lebar / tinggi) | 0.4–2.5. |
| Durasi tiap video | `auto` / `reference`: 2–15 detik, rentang diterima `1.8 ≤ t ≤ 15.2`. Sumber untuk `edit`: 4–30 detik, rentang diterima `3.8 ≤ t < 30.2`. Periksa durasi presisi tanpa pembulatan sebelumnya. |
| Laju bingkai | Bulatkan ke bilangan bulat terdekat (0.5 ke atas), lalu periksa rentang 24–60fps. 23.976 dan 59.94 diterima. |

Dimensi video, luas piksel, rasio, durasi presisi dan laju bingkai, serta durasi audio referensi diperiksa saat pengiriman. Pelanggaran menghasilkan HTTP 400 sinkron tanpa biaya. Kesalahan video memakai `invalid_request_error` dan menyertakan pengukuran. Gunakan luas piksel, bukan sisi pendek minimal 480 dan sisi panjang maksimal 4096.

Dilihat dari dimensi saja, 420×1000 (420.000 piksel) memenuhi syarat. 720×480 (345.600 piksel), 848×480 (407.040 piksel), dan 4096×2160 (8.847.360 piksel) tidak memenuhi batas luas. Durasi, laju bingkai, dan persyaratan lain juga harus dipenuhi.

Dimensi gambar, ukuran file, dan pengodean diperiksa saat pembuatan. Ketidaksesuaian menggagalkan tugas dengan pengembalian biaya otomatis. Periksa properti ini sebelum memanggil API jika memungkinkan.

### Aturan kombinasi media

* Jangan kirim `image_urls` bersama `image_with_roles`. Kombinasi ini menghasilkan HTTP 400 (`invalid_request_error`) saat pengiriman, tanpa biaya. Alias `image`, `images`, dan `image_url` juga dihitung sebagai `image_urls` dan tidak dapat melewati batasan ini.
* Bingkai awal/akhir tidak boleh berada dalam permintaan yang sama dengan referensi gambar, video, atau audio.
* Maksimal satu bingkai awal dan satu akhir. Bingkai akhir memerlukan bingkai awal.
* Maksimal 30 gambar, 10 video, dan 10 audio referensi, dengan total maksimal 50 media.
* Pelanggaran kombinasi atau jumlah ini menghasilkan HTTP 400 secara sinkron tanpa biaya.
* `omni_reference_task_type: "edit"` memerlukan minimal satu video sumber (`3.8 ≤ t < 30.2` detik). `duration` / `seconds`: hilangkan atau `-1`; `aspect_ratio` / `size`: hilangkan atau `adaptive`. Jangan gabungkan dengan `draft: true`. Auto/reference tetap menggunakan batas 2–15 detik beserta toleransinya.

> [!WARNING]
>
> Kolom berikut menghasilkan HTTP 400 jika ada, meskipun bernilai `""`, `[]`, `false`, atau `null`; hapus kolom sepenuhnya: `negative_prompt`, `camera_fixed`, `camerafixed`, `extend_from_task_id`, `mask_url`, `video_list`, `element_list`, `multi_shot`, `tools`. Hilangkan `n` atau gunakan `1`.

## Contoh permintaan

URL media berikut hanya contoh. Ganti dengan alamat media yang dapat diakses.

### Bingkai awal dan akhir

```json theme={null}
{
  "model": "apimart-zoe",
  "prompt": "Transisi alami dari bingkai awal ke bingkai akhir dengan pencahayaan yang konsisten",
  "image_with_roles": [
    {
      "url": "https://example.com/start.jpg",
      "role": "first_frame"
    },
    {
      "url": "https://example.com/end.jpg",
      "role": "last_frame"
    }
  ],
  "duration": 6
}
```

Anda juga dapat memakai `first_frame_image` dan `last_frame_image`. Jangan tambahkan referensi gambar, video, atau audio pada permintaan yang sama.

### Referensi gambar, video, dan audio

```json theme={null}
{
  "model": "apimart-zoe",
  "prompt": "Karakter pada gambar referensi bergerak alami di adegan video referensi, dengan musik mengikuti ritme visual",
  "image_urls": [
    "https://example.com/character.jpg"
  ],
  "video_urls": [
    "https://example.com/scene.mp4"
  ],
  "audio_urls": [
    "https://example.com/bgm.mp3"
  ],
  "duration": -1
}
```

Gambar dalam `image_urls` dianggap sebagai referensi. Dengan `duration: -1`, model menentukan durasi keluaran.

### Pengeditan video

`omni_reference_task_type: "edit"` memerlukan minimal satu video sumber (`3.8 ≤ t < 30.2` detik). `duration` / `seconds`: hilangkan atau `-1`; `aspect_ratio` / `size`: hilangkan atau `adaptive`. Jangan gabungkan dengan `draft: true`. Auto/reference tetap menggunakan batas 2–15 detik beserta toleransinya.

```json theme={null}
{
  "model": "apimart-zoe",
  "prompt": "Ubah seluruh adegan menjadi film klasik hitam putih sambil mempertahankan gerakan kamera dan komposisi",
  "video_urls": [
    "https://example.com/source_20s.mp4"
  ],
  "omni_reference_task_type": "edit"
}
```

Pengeditan memakai tarif dengan video referensi. Cadangkan 30 detik keluaran, lalu sesuaikan berdasarkan durasi aktual yang dibulatkan ke detik utuh. Durasi video referensi turut dihitung dengan rumus di bawah.

### Bingkai terakhir, keluaran MOV, dan optimasi prompt

```json theme={null}
{
  "model": "apimart-zoe",
  "prompt": "Anak kucing oranye di ambang jendela menatap kamera, dengan sinar matahari dari samping dan gerakan kamera perlahan mendekat",
  "duration": 5,
  "return_last_frame": true,
  "output_format": "mov",
  "enhance_prompt": true
}
```

## Draf → video final

1. Kirim draf dengan `draft: true`. Jika `resolution` dihilangkan, digunakan `480p`; jika diberikan, hanya `480p` yang didukung.

```json theme={null}
{
  "model": "apimart-zoe",
  "prompt": "Anak kucing oranye di ambang jendela menatap kamera, dengan sinar matahari dari samping dan gerakan kamera perlahan mendekat",
  "draft": true
}
```

2. Tunggu draf berhasil, lalu kirim `task_id`-nya untuk membuat video final. Cukup kirim `model` dan `draft_task_id`. Jika menyertakan `resolution`, gunakan `1080p`.

```json theme={null}
{
  "model": "apimart-zoe",
  "draft_task_id": "task_01KZOEEXAMPLE"
}
```

> [!WARNING]
>
> Video final mewarisi prompt, media, durasi, rasio, seed, dan pengaturan audio draf. Kirim `model`, `draft_task_id`, `resolution: "1080p"` opsional, serta kolom umum seperti `nsfw_check` / `webhook`. Kolom pembuatan berikut harus tidak ada; string/array kosong, `false`, dan `null` juga menghasilkan HTTP 400: `prompt`, `image_urls`, `image_with_roles`, `image`, `images`, `image_url`, `first_frame_image`, `last_frame_image`, `video_urls`, `audio_urls`, `duration`, `seconds`, `aspect_ratio`, `size`, `seed`, `audio`, `generate_audio`, `draft`, `omni_reference_task_type`, `return_last_frame`, `output_format`, `response_format`, `enhance_prompt`. Gunakan draf dalam 24 jam sejak dibuat; kedua pembuatan dikenai biaya terpisah.

## Status dan hasil tugas

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

Respons pengiriman berisi `data` sebagai array; respons status berisi `data` sebagai objek tugas. `data.status`: `pending` = antre, `processing` = dibuat, `completed` = berhasil, `failed` = gagal. Saat berhasil, baca alamat dari array `data.result.videos[].url`, misalnya `data.result.videos[0].url[0]`. Video disalin ke penyimpanan APIMart. Contoh berikut hanya menampilkan bidang utama respons yang berhasil.

```json theme={null}
{
  "code": 200,
  "data": {
    "id": "task_01KZOEEXAMPLE",
    "status": "completed",
    "result": {
      "videos": [
        {
          "url": [
            "https://example.com/generated-video.mp4"
          ],
          "expires_at": 1794475442
        }
      ],
      "last_frame_url": "https://example.com/generated-last-frame.png"
    },
    "progress": 100,
    "completed": 1794389042
  }
}
```

Jika tugas gagal, baca alasannya di `data.error.message`. Biaya dikembalikan secara otomatis.

| Bidang | Keterangan |
| - | - |
| `data.progress` | Progres tugas, 0–100. |
| `data.result.videos[].url` | Array alamat video yang disalin ke penyimpanan APIMart. |
| `data.result.videos[].expires_at` | Alamat kedaluwarsa 24 jam setelah tugas selesai. Segera unduh videonya. |
| `data.result.last_frame_url` | URL PNG bingkai terakhir yang tersimpan di APIMart. Hanya ada saat tugas berhasil dan permintaan menyertakan `return_last_frame: true`. |
| `data.error.message` | Alasan kegagalan, hanya untuk `failed`. |
| `data.error.code` | String `task_failed` jika gagal. |
| `data.cost` | Biaya tugas; 0 untuk tugas gagal setelah biaya cadangan dikembalikan. |

## Aturan penagihan

Penagihan per detik menurut resolusi keluaran dan penggunaan video referensi. Tarif dan diskon di [halaman harga](https://apimart.ai/pricing). `D` adalah durasi keluaran yang digunakan untuk penagihan, dalam detik.

| Kasus | Durasi keluaran tertagih D |
| - | - |
| Pembuatan biasa: `duration: 4–30` atau dihilangkan (default 5) | Tagih detik yang diminta, tanpa penyesuaian terhadap panjang hasil video. |
| `duration: -1` / pengeditan video `edit` | Cadangkan 30 detik, lalu sesuaikan dengan durasi aktual yang dibulatkan ke detik terdekat (0.5 ke atas). |
| Video final | Mewarisi durasi draf. Jika draf memakai `duration: -1`, durasi aktual hasil draf menjadi dasar, tanpa penyesuaian ulang terhadap video final. |

* Total durasi video referensi `R`: periksa tiap durasi saat pengiriman, jumlahkan, lalu bulatkan total ke bawah ke detik bulat. Tidak disesuaikan lagi.
* Tanpa video referensi: detik tertagih = `D`. Dengan referensi: `D + max(R, ceil(D × 2/3))`. `ceil` membulatkan ke atas ke bilangan bulat. Gunakan tarif dengan video referensi.
* Contoh: meminta 8 detik tetap memberi `D = 8` meskipun hasilnya 8.2 detik. Durasi otomatis 8.5 memberi `D = 9`. Referensi 2.8 dan 3.8 detik dijumlahkan menjadi 6.6 sebelum dibulatkan ke bawah: `R = 6`.
* Draf (`480p`) dan video final (`1080p`) ditagih terpisah. Referensi draf tetap dihitung dengan durasi aslinya pada video final, tanpa unggah ulang.
* Pengiriman gagal tidak ditagih. Biaya tugas gagal dikembalikan otomatis.

## Kesalahan umum

Pengiriman gagal mengembalikan objek `error`: rincian di `error.message`, kode string di `error.code`, berbeda dari status HTTP. Tidak ada biaya.

| HTTP | `error.code` | Penyebab dan solusi |
| - | - | - |
| 400 | `invalid_request_error` | Periksa durasi, resolusi, rasio, jumlah/kombinasi media, parameter yang tidak didukung, dan aturan draf/final. Juga berlaku jika `draft_task_id` tidak ditemukan, bukan draf, belum selesai, atau lebih dari 24 jam sejak dibuat. Juga berlaku untuk dimensi, durasi presisi, atau laju bingkai video yang tidak valid, serta gabungan `image_urls` (termasuk alias) dan `image_with_roles`. Kesalahan video memuat nilai terukur. Periksa juga durasi audio, jenis tugas/aturan pengeditan, `output_format`, kesamaan alias audio, dan keberadaan kolom terlarang. |
| 400 | `nsfw_content_detected` | Penolakan moderasi konten. Kategori ada di `error.message`. Tampilkan penolakan dan ubah konten sebelum mengirim ulang. Tanpa biaya. |
| 400 | `input_video_probe_failed` | Video referensi tidak dapat diakses atau durasinya tidak terdeteksi. Periksa alamat dan isinya. |
| 402 | `payment_required` | Saldo tidak cukup; durasi otomatis mencadangkan 30 detik. |
| 503 | `draft_channel_unavailable` / `draft_task_unavailable` | Saluran draf tidak tersedia atau pencarian draf gagal sementara. Coba nanti atau buat draf baru. |


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