> ## 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 MiniMax-H3-Max

>  - Versi cepat MiniMax Video Generation V2 dengan pengiriman tugas asinkron
- Mendukung teks-ke-video dan gambar-ke-video dengan frame awal, akhir, atau keduanya
- Mendukung 768P / 480P, durasi 5–15 detik, dan trek audio
- Tidak mendukung 2K, frame tengah, atau referensi multimodal 

<Info>
  **Pemilihan model:** gunakan `MiniMax-H3-Max` jika kecepatan menjadi prioritas dan teks-ke-video atau kontrol frame awal/akhir sudah cukup. Untuk 2K, frame tengah, gambar, video, atau audio referensi, gunakan [MiniMax-H3](/id/api-reference/videos/minimax-h3/generation).
</Info>

<RequestExample>
  ```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": "MiniMax-H3-Max",
      "prompt": "Seorang detektif berjas panjang menoleh di jalan neon saat hujan. Kamera bergerak mendekat perlahan.",
      "duration": 5,
      "resolution": "768P",
      "aspect_ratio": "16:9"
    }'
  ```

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

  response = requests.post(
      "https://api.apimart.ai/v1/videos/generations",
      headers={"Authorization": "Bearer <token>", "Content-Type": "application/json"},
      json={
          "model": "MiniMax-H3-Max",
          "prompt": "Seorang detektif menoleh di jalan neon saat hujan.",
          "duration": 5,
          "resolution": "768P",
          "aspect_ratio": "16:9",
      },
  )
  print(response.json())
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "code": 200,
    "data": [
      {
        "status": "submitted",
        "task_id": "task_01J9HA7JPQ9A0Z6JZ3V8M9W6PZ"
      }
    ]
  }
  ```

  ```json 400 theme={null}
  {
    "error": {
      "code": 400,
      "message": "Parameter permintaan tidak valid",
      "type": "invalid_request_error"
    }
  }
  ```

  ```json 401 theme={null}
  {
    "error": {
      "code": 401,
      "message": "Autentikasi gagal. Periksa kunci API Anda.",
      "type": "authentication_error"
    }
  }
  ```

  ```json 402 theme={null}
  {
    "error": {
      "code": 402,
      "message": "Saldo akun tidak mencukupi",
      "type": "payment_required"
    }
  }
  ```
</ResponseExample>

## Autentikasi

<ParamField header="Authorization" type="string" required>
  Semua endpoint memerlukan Bearer Token. Dapatkan kunci Anda di [halaman Kunci API](https://apimart.ai/keys).

  ```
  Authorization: Bearer YOUR_API_KEY
  ```
</ParamField>

## Memilih model

| Kemampuan            | `MiniMax-H3`                | `MiniMax-H3-Max`                |
| -------------------- | --------------------------- | ------------------------------- |
| Resolusi             | `2K` / `768P`, default `2K` | `768P` / `480P`, default `768P` |
| Durasi               | 4–15 detik                  | 5–15 detik                      |
| Teks-ke-video        | Didukung                    | Didukung                        |
| Frame awal / akhir   | Didukung                    | Didukung                        |
| Frame tengah         | Didukung                    | Tidak didukung                  |
| Referensi multimodal | Gambar, video, audio        | Tidak didukung                  |
| Biaya gambar input   | 5 gambar pertama gratis     | Gratis                          |

<Warning>
  `MiniMax-H3-Max` tidak mendukung 2K dan hasilnya tidak dapat digunakan sebagai sumber [Regeneration](/id/api-reference/videos/minimax-h3/regeneration).
</Warning>

## Mode pembuatan

Field permintaan menentukan mode secara otomatis; jangan kirim field `mode`.

| Mode                  | Pemicu                                                                           | Perilaku                                    |
| --------------------- | -------------------------------------------------------------------------------- | ------------------------------------------- |
| Teks-ke-video (T2V)   | Hanya `prompt` dan field umum                                                    | Membuat video dari teks                     |
| Gambar-ke-video (I2V) | `first_frame_image` / `last_frame_image` atau peran setara di `image_with_roles` | Mengontrol frame awal, akhir, atau keduanya |

<Warning>
  Model ini tidak mendukung `image_urls`, `video_urls`, `audio_urls`, atau `image_with_roles[].role = "reference_image"`. Media referensi akan mengembalikan HTTP 400 sebelum tugas dibuat dan ditagih.
</Warning>

## Parameter permintaan

<ParamField body="model" type="string" required>
  Nilai tetap: `MiniMax-H3-Max`. Tidak peka huruf besar/kecil; `minimax-h3-max` juga diterima.
</ParamField>

<ParamField body="prompt" type="string" required>
  Deskripsi video yang tidak kosong, wajib dalam setiap mode. Maksimum `7000` karakter.
</ParamField>

<ParamField body="duration" type="integer" default="5">
  Durasi video dalam detik: bilangan bulat `5` sampai `15`, default `5`. Empat detik tidak didukung.
</ParamField>

<ParamField body="resolution" type="string" default="768P">
  Resolusi output: `768P` (default) atau `480P`.

  <Warning>
    `2K`, `1440P`, dan `2048P` tidak didukung. Nilai tidak valid mengembalikan HTTP 400 tanpa downgrade otomatis.
  </Warning>
</ParamField>

<ParamField body="aspect_ratio" type="string">
  Rasio aspek output. Alias `size` dan `ratio` juga diterima.

  Nilai T2V: `21:9`, `16:9`, `4:3`, `1:1`, `3:4`, `9:16`.

  * T2V tanpa field atau dengan `adaptive`: kembali ke `16:9`
  * I2V: ditentukan gambar input; field ini diabaikan
</ParamField>

<ParamField body="first_frame_image" type="string">
  URL gambar publik untuk frame awal video.
</ParamField>

<ParamField body="last_frame_image" type="string">
  URL gambar publik untuk frame akhir. Dapat digunakan sendiri atau bersama `first_frame_image`.
</ParamField>

<ParamField body="image_with_roles" type="object[]">
  Array gambar berbasis peran sebagai pengganti `first_frame_image` dan `last_frame_image`.

  <Expandable title="Item image_with_roles">
    <ResponseField name="url" type="string" required>
      URL gambar publik
    </ResponseField>

    <ResponseField name="role" type="string" required>
      Peran yang didukung:

      * `first_frame`; alias `first` dan `start`
      * `last_frame`; alias `last`, `end_frame`, dan `tail`
    </ResponseField>
  </Expandable>

  Maksimum satu gambar per peran; `role` tidak boleh kosong.
</ParamField>

<ParamField body="watermark" type="boolean" default="false">
  Menambahkan watermark AIGC. Alias: `aigc_watermark`.
</ParamField>

<ParamField body="webhook" type="string">
  Menerima notifikasi ketika tugas berakhir sukses atau gagal.

  <Note>
    Gunakan `webhook`, bukan `callback_url` MiniMax. Gateway mencadangkan `callback_url` untuk penggunaan internal.
  </Note>
</ParamField>

## Parameter yang tidak didukung

Nilai berikut mengembalikan HTTP 400 sebelum pembuatan dan penagihan:

| Parameter / nilai                             | Alasan                                                     |
| --------------------------------------------- | ---------------------------------------------------------- |
| `image_urls`                                  | Diperlakukan sebagai gambar referensi, yang tidak didukung |
| `image_with_roles[].role = "reference_image"` | Hanya frame awal dan akhir yang didukung                   |
| `video_urls` / `video_url`                    | Video referensi tidak didukung                             |
| `audio_urls` / `audio_url`                    | Audio referensi tidak didukung                             |
| `resolution: "2K"`                            | Hanya `768P` dan `480P`                                    |
| `duration: 4` atau di atas `15`               | Hanya 5–15 detik                                           |

<Tip>
  Untuk referensi, 2K, frame tengah, atau video 4 detik, gunakan [MiniMax-H3](/id/api-reference/videos/minimax-h3/generation).
</Tip>

## Batas gambar

Total body permintaan maksimal 64 MB. Gunakan URL publik; Base64 tidak didukung.

| Item             | Batas                                                   |
| ---------------- | ------------------------------------------------------- |
| Format           | JPG / JPEG / PNG / WEBP / HEIC / HEIF                   |
| Per file         | ≤ 30 MB                                                 |
| Lebar dan tinggi | 256–5760 px                                             |
| Rasio aspek      | 0,4–2,5                                                 |
| Jumlah           | Maksimum 1 frame awal dan 1 frame akhir; total 2 gambar |

## Contoh

### Gambar-ke-video dengan frame awal

```json theme={null}
{
  "model": "MiniMax-H3-Max",
  "prompt": "Kamera bergerak mendekat perlahan saat uap naik.",
  "first_frame_image": "https://cdn.example.com/ramen.png",
  "duration": 5,
  "resolution": "480P"
}
```

### Gambar-ke-video dengan frame awal dan akhir

```json theme={null}
{
  "model": "MiniMax-H3-Max",
  "prompt": "Adegan perlahan berubah dari pagi ke matahari terbenam.",
  "first_frame_image": "https://cdn.example.com/morning.png",
  "last_frame_image": "https://cdn.example.com/sunset.png",
  "duration": 8,
  "resolution": "768P"
}
```

## Memeriksa tugas

Pengiriman mengembalikan `task_id`. Polling [status tugas](/id/api-reference/tasks/status) setiap 5–10 detik dan gunakan timeout klien 15 menit.

| `status`     | Arti                                                |
| ------------ | --------------------------------------------------- |
| `pending`    | Dikirim atau dalam antrean                          |
| `processing` | Sedang dibuat                                       |
| `completed`  | URL video ada di `result.videos[0].url`             |
| `failed`     | Periksa `error.message`; pengembalian dana otomatis |

<Note>
  URL video yang dibuat biasanya kedaluwarsa setelah sekitar 24 jam. Segera unduh dan simpan hasilnya.
</Note>

## Harga

Total biaya = tarif per detik × durasi. Gambar frame awal dan akhir gratis.

| Item         | Tarif                |
| ------------ | -------------------- |
| Video 768P   | **\$0.075 / detik**  |
| Video 480P   | **\$0.0495 / detik** |
| Gambar input | **Gratis**           |

Jumlah perkiraan dicadangkan saat pengiriman. Tugas gagal mendapat pengembalian dana penuh; field `cost` pada respons tugas menjadi acuan.

## Kesalahan

| Skenario                                      | Hasil                         |
| --------------------------------------------- | ----------------------------- |
| `prompt` kosong atau lebih dari 7000 karakter | 400; tidak ada tugas          |
| `duration` di luar 5–15                       | 400; tidak ada tugas          |
| `resolution` tidak didukung                   | 400; tidak ada tugas          |
| Media referensi                               | 400; tidak ada tugas          |
| Peran gambar tidak valid atau duplikat        | 400; tidak ada tugas          |
| Saldo tidak cukup                             | 402                           |
| Ditolak keamanan konten                       | 422                           |
| Batas permintaan                              | 429; coba lagi dengan backoff |

Kegagalan saat pembuatan mengembalikan `status = failed` dan `error.message`, lalu dana dikembalikan otomatis.

## Response

<ResponseField name="code" type="integer">
  Kode respons; 200 jika berhasil
</ResponseField>

<ResponseField name="data" type="array">
  Hasil pengiriman berisi status awal dan ID tugas

  <Expandable title="Item array">
    <ResponseField name="status" type="string">
      Awalnya `submitted`
    </ResponseField>

    <ResponseField name="task_id" type="string">
      ID unik untuk memeriksa progres dan hasil
    </ResponseField>
  </Expandable>
</ResponseField>
