POST pertama Anda kembali dalam sepuluh detik dengan task_id. Sepertinya sukses.
Kemudian tidak terjadi apa-apa selama enam menit. Anda telah menyalin while status != "Success" dari sebuah tutorial, dan loop terus berputar, karena endpoint ini tidak lagi mengembalikan kata Success. Jadi Anda beralih ke webhook. Tidak ada satu pun push yang tiba, dan tidak ada di mana pun yang memberi tahu Anda alasannya. Pagi berikutnya Anda kembali ke render kemarin dan tautannya 404.
Keempat hal itu tampak tidak terkait. Tidak ada satupun yang merupakan kesalahan model. Keempatnya adalah kontrak async, yang hampir tidak pernah ditulis oleh siapa pun. Berikut ini seluruh kontraknya, ditambah satu film pendek dua-shot nyata yang keluar dari ujung lainnya.
Poin-poin penting
- Tiga endpoint, satu loop: create mengembalikan
task_iddan menutup sambungan, Anda polling, Anda unduh. Semua yang sulit terjadi setelah panggilan create. - Lima status sebenarnya adalah
queued,running,succeeded,failed,cancelled. Tidak ada statusexpired, tidak peduli apa yang dikatakan sebuah posting blog. - Dua hal yang kedaluwarsa, dan keduanya bukan status: URL unduhan terbatas waktu, dan catatan tugas itu sendiri hanya dapat ditanyai selama 7 hari.
- Jika Anda menggunakan callback, MiniMax pertama-tama mengirimkan permintaan verifikasi dengan bidang
challengedan Anda harus menggema kembali apa adanya dalam 3 detik. Gagal melakukannya dan Anda tidak mendapatkan error, hanya diam selamanya. - Untuk pembuatan teks saja,
ratiowajib diisi dan tidak bolehadaptive. Untuk image-to-video, frame pertama yang menentukan frame, danratioapa pun yang Anda berikan akan diabaikan.
Hasil akhirnya terlebih dahulu
Seluruh hasil dari tutorial ini: dua shot MiniMax H3 di 2K, digabung, 14,6 detik. Shot A adalah image-to-video dari frame pertama yang dihasilkan, shot B adalah text-to-video. Nyalakan suaranya. Audio bukan soundtrack yang ditimpakan di atasnya, H3 merender roda gigi, hujan, dan bisikan sebagai bagian dari generasi yang sama.
Tiga panggilan API yang membuatnya. Satu model gambar untuk frame pertama, dua endpoint H3 untuk shot, satu baris ffmpeg untuk menggabungkannya. Kode di bawah adalah kode yang membuatnya.
Mengapa Sebagian Besar Tutorial MiniMax H3 Rusak pada Permintaan Kedua
Hampir setiap panduan untuk model ini berhenti pada panggilan create. Itu adalah bagian yang mudah. Panggilan create memvalidasi payload Anda, memberikan task_id dan memutuskan sambungan, dan kemudian Anda sendirian dengan pekerjaan yang membutuhkan waktu menit dan seperangkat aturan yang tidak dicetak siapa pun.
Kegagalannya berulang dengan membosankan. Saya mengalami lima dari enam ini dalam satu sore.
| Gejala | Apa yang Anda lihat | Penyebab sebenarnya | Perbaikan |
|---|---|---|---|
| Loop polling tidak pernah berhenti | Terminal mencetak selamanya, pekerjaan sudah selesai sejak lama | Kondisi keluar Anda membandingkan dengan kata-kata v1 seperti Success / Fail. Endpoint query v2 mengembalikan lowercase succeeded / failed | Cocokkan dengan enum v2, dan raise pada status apa pun yang tidak Anda kenali |
| 400 instan pada text-to-video | Permintaan ditolak sebelum render apa pun dimulai | ratio hilang, atau diatur ke adaptive, yang ditolak mode teks saja | Berikan rasio eksplisit seperti 16:9 |
| Rasio Anda diabaikan secara diam-diam | Frame output bukan yang Anda minta | Image-to-video mendapatkan frame dari gambar frame pertama, jadi ratio adalah no-op di sana | Potong atau hasilkan frame pertama pada rasio yang Anda inginkan |
| Webhook tidak pernah menyala, tidak ada error | Nol push, log bersih, tidak ada keluhan dari API | Jabat tangan verifikasi gagal. MiniMax mengirim challenge dan endpoint Anda tidak menggema kembali apa adanya dalam 3 detik | Jawab challenge secara sinkron, sebelum middleware auth atau antrian |
| URL kemarin 404s | Tautan unduhan mati, render sepertinya hilang | URL unduhan terbatas waktu. Rendernya baik-baik saja | Query task_id yang sama lagi untuk URL baru, dalam jendela 7 hari |
| 429 acak di bawah beban | Beberapa submit ditolak, tidak ada antrian | Konkurensi dibatasi, dan itu adalah batas keras, bukan garis tunggu | Batasi jumlah in-flight Anda sendiri dan coba lagi submit, bukan render |
Baris pertama adalah yang menghabiskan malam sepenuhnya, dan perlu tepat. API video lama MiniMax melaporkan kemajuan dengan kata-kata kapital dalam keluarga Preparing / Queueing / Processing / Success / Fail. Endpoint query v2 yang digunakan H3 mengembalikan queued, running, succeeded, failed, cancelled (MiniMax API Reference, Agustus 2026). Banyak dokumen penjual kembali pihak ketiga masih mencetak set lama, atau mencampur keduanya dalam satu halaman. Jika Anda mewarisi loop dari salah satu dari itu, itu tidak dapat berakhir, karena string yang ditunggunya tidak pernah dikirim.
Alur Kerja Tutorial MiniMax H3: Tiga Endpoint, Lima Status, Satu Loop
H3 dirilis pada 2026-07-31 sebagai model video omni-modal: teks, gambar, video, dan audio semuanya hidup di jendela konteks yang sama, output hingga 15 detik di 2K dengan audio stereo asli (MarkTechPost, Agustus 2026). Untuk API, itu berarti satu endpoint create dengan array content, dan apa yang Anda masukkan ke dalam array menentukan mode yang Anda gunakan.
| Mode | Apa yang masuk ke content | role pada item gambar | Apa yang dilakukan ratio | Gunakan untuk |
|---|---|---|---|---|
| Text-to-video | satu item teks | tidak ada | Wajib, dan adaptive ditolak | Shot tanpa gambar sumber, kontrol penuh atas frame |
| Image-to-video | item teks plus item gambar | first_frame (opsional juga last_frame) | Diabaikan, frame pertama yang menentukan | Menganimasikan gambar diam yang sudah Anda tata |
| Reference-to-video | item teks plus item referensi | reference_image (juga reference_video, reference_audio) | Wajib, sama seperti teks saja | Menjaga satu karakter atau satu suara di seluruh shot |
Dan bagian yang benar-benar harus ditangani kode Anda. Lima status, lima cabang berbeda.
| Status | Artinya | Apa yang dilakukan kode Anda |
|---|---|---|
| queued | Diterima, menunggu slot | Terus polling, back off |
| running | Merender | Terus polling, back off |
| succeeded | Selesai, content.url terisi | Unduh segera, dalam iterasi ini |
| failed | Render gagal | Baca body error, log, jangan coba lagi payload yang sama secara buta |
| cancelled | Pekerjaan dibatalkan | Keluar dari loop, anggap terminal |
| apa pun lainnya | Bukan dalam enum | Raise. Status baru yang Anda diam-diam anggap "terus menunggu" adalah bug dari tabel di atas |
Tidak ada status expired. Kata itu sering melekat pada API ini dan milik dua hal lain: URL unduhan, yang terbatas waktu dan dapat disegarkan, dan catatan tugas, yang hanya dapat ditanyai untuk 7 hari terakhir. Keduanya dibahas di Langkah 4.
Satu angka lagi sebelum kode. Konkurensi untuk generasi video di H3 dibatasi oleh jumlah koneksi, bukan permintaan per menit: 2 tugas bersamaan di tingkat gratis, 15 setelah Anda berbayar (MiniMax Rate Limits, Agustus 2026). Melewati batas Anda langsung mendapatkan 429. Tidak ada yang mengantri atas nama Anda. Saya juga telah mendorong 20 pekerjaan H3 bersamaan melalui gateway routing dan semuanya berhasil, dan saya juga pernah mendapatkan 429 pada pengaturan yang sama di hari yang berbeda, jadi perlakukan angka di atas batas yang didokumentasikan sebagai cuaca, bukan konstanta.
Langsung atau melalui gateway
Tiga langkahnya sama, tetapi stringnya berbeda, dan itu penting saat Anda debug pada jam 1 pagi.
| MiniMax langsung | Gateway terpadu (Atlas Cloud) | |
|---|---|---|
| Submit | POST /v2/video_generation | POST /api/v1/model/generateVideo |
| Poll | GET /v2/query/video_generation/{task_id} | GET /api/v1/model/prediction/{id} |
| Kata status | queued / running / succeeded / failed / cancelled | completed saat sukses, failed saat gagal |
| Notifikasi push | Callback URL dengan jabat tangan challenge 3 detik | Poll id prediksi |
| Konkurensi | 2 gratis, 15 berbayar, 429 keras | Tidak dipublikasikan sebagai batas per model, diukur lebih luas dalam praktik |
| Model gambar frame pertama pada kunci yang sama | Tidak, akun terpisah | Ya, GPT Image 2 dan H3 di belakang satu kunci |
| Harga H3 | Dipublikasikan per tingkat resolusi | Per detik output, bertingkat berdasarkan resolusi, dikutip di tombol Run sebelum Anda submit |
Alasan saya menjalankan rantai tutorial ini di gateway murni karena baris kedua dari terakhir: frame pertama berasal dari model gambar OpenAI dan dua shot berasal dari MiniMax, dan saya tidak ingin dua vendor, dua kunci, dan dua halaman penagihan untuk satu film 14 detik. Jika Anda sudah di dalam platform MiniMax, tetap di sana, loop di bawah berfungsi tidak berubah selain jalur dan kata status.
Generator Video Hailuo AI: Cara Menggunakannya Sebelum Anda Menulis Kode
Jika Anda sampai di sini mencari cara menggunakan generator video Hailuo AI, Anda berada di tempat yang tepat dan Anda belum memerlukan kode apa pun. Hailuo adalah aplikasi berorientasi konsumen MiniMax dan H3 adalah nama model yang digunakan API. Mesin yang sama, pintu berbeda.
Tiga menit, tanpa terminal:
- Buka halaman model, misalnya MiniMax H3 image-to-video. Playground adalah panel kanan halaman.
- Letakkan gambar frame pertama, atau beralih ke halaman text-to-video dan tulis prompt. Atur resolusi dan durasi. Ucapkan dengan lantang apa yang ingin Anda dengar, bukan hanya apa yang ingin Anda lihat: H3 menghasilkan audio dalam satu pass yang sama, jadi "hujan mengetuk kaca, klik servo kecil" adalah instruksi nyata, bukan hiasan.
- Tekan Run. Tombol menunjukkan biaya yang tepat untuk pengaturan yang Anda pilih sebelum Anda berkomitmen. Tunggu, unduh.
Itulah seluruh jalur tanpa kode, dan untuk klip satu kali, itu benar-benar opsi yang lebih cepat. Saat Anda menginginkan sepuluh varian, atau frame pertama yang dihasilkan oleh model lain dan langsung dimasukkan, kembali ke kode. Itulah yang dilakukan sisanya.
Tutorial MiniMax H3: Buat, Polling, Unduh, Ulangi
Satu contoh berjalan melalui semua tujuh langkah: seorang pembuat jam memperbaiki burung mekanik kuningan kecil, berbisik satu baris padanya, dan burung itu terbang keluar dari bengkel. Dua shot. Shot A adalah image-to-video sehingga interiornya ditata. Shot B adalah text-to-video karena tidak ada frame sumber untuk langit.
Langkah 1: Hasilkan frame pertama dengan GPT Image 2
Image-to-video mengabaikan ratio, jadi frame pertama adalah tempat Anda memutuskan frame shot A. Hasilkan pada 16:9 dan pada tingkat kualitas tertinggi, karena H3 akan mewarisi setiap cacat di dalamnya dan kemudian menambahkan motion blur di atasnya.
Model: openai/gpt-image-2/text-to-image. Pengaturan: kualitas high, 2048x1152, 16:9, PNG.
text1A cluttered clockmaker's workshop at dusk, warm tungsten lamp over a scarred oak 2bench. An old repairman in a leather apron leans close to a small brass mechanical 3bird resting in his cupped hands, its wing plates half-open, tiny gears visible. 4Rain streaks the mullioned window behind him; a coal stove glows amber at frame 5left. Shallow depth of field, 35mm, volumetric dust in the lamp beam, deep amber 6and teal palette, photoreal, no text. 7

Playground GPT Image 2 di Atlas Cloud dengan prompt frame pertama tutorial ini dan bengkel pembuat jam yang dirender di panel output
GPT Image 2 di Atlas Cloud, kualitas tinggi pada 2048x1152. Tombol Run mengutip biaya yang tepat untuk pengaturan yang Anda pilih, $0,1745 untuk yang ini, sebelum Anda berkomitmen.
Simpan URL yang dikembalikan. Langkah 2 memberikannya langsung ke H3, tanpa perjalanan pulang pergi unduhan.
Langkah 2: Buat tugas MiniMax H3 dan pegang task_id
Panggilan create melakukan dua hal dan kemudian berhenti peduli pada Anda: ia memvalidasi payload dan mengembalikan task_id. 400 di sini adalah payload Anda, bukan kegagalan sementara, jadi jangan letakkan di belakang loop percobaan ulang. Setiap kelas masalah lainnya muncul kemudian, selama polling.
Satu kebiasaan yang menghemat uang nyata: simpan task_id sebelum Anda melakukan apa pun. Tugas hanya dapat ditanyai selama 7 hari, dan jika proses Anda mati dengan id di memori, Anda telah membayar untuk render yang tidak dapat Anda jangkau lagi.
python1import os, json, time, requests 2 3BASE = "https://api.minimax.io" 4HEADERS = { 5 "Authorization": f"Bearer {os.environ['MINIMAX_API_KEY']}", 6 "Content-Type": "application/json", 7} 8 9def create_task(payload: dict) -> str: 10 r = requests.post(f"{BASE}/v2/video_generation", 11 headers=HEADERS, json=payload, timeout=60) 12 if r.status_code == 400: 13 # payload Anda salah. mencoba lagi hanya akan salah lagi. 14 raise ValueError(f"ditolak: {r.text}") 15 r.raise_for_status() 16 task_id = r.json()["task_id"] 17 with open("tasks.jsonl", "a") as f: # simpan SEBELUM apa pun 18 f.write(json.dumps({"task_id": task_id, "at": int(time.time()), 19 "payload": payload}) + "\n") 20 return task_id 21 22SHOT_A_PROMPT = ( 23 "The old repairman's hands steady the brass bird. Its glass eyes flicker alight, " 24 "wing plates click open one by one. He leans in and whispers, close to the mic, " 25 ""Let's see if you still remember the sky." Slow 50mm push-in, lamp light raking " 26 "across the brass, rain ticking on the window, coal stove crackling, tiny servo " 27 "clicks under his voice. Warm amber key, teal window fill. No on-screen text." 28) 29 30shot_a = create_task({ 31 "model": "MiniMax-H3", 32 "resolution": "2K", 33 "duration": 8, 34 # tidak ada "ratio" di sini dengan sengaja: image-to-video mengambil frame dari frame pertama 35 "content": [ 36 {"type": "text", "text": SHOT_A_PROMPT}, 37 {"type": "image_url", "role": "first_frame", 38 "image_url": {"url": FIRST_FRAME_URL}}, 39 ], 40}) 41print("shot A task:", shot_a) 42
Berikut adalah prompt yang sama dan frame pertama yang berjalan sebagai pekerjaan, sehingga Anda dapat melihat seperti apa submit yang sehat dari sisi lain:

Playground MiniMax H3 image-to-video di Atlas Cloud dengan frame pertama bengkel dimuat dan klip yang dirender di panel output
MiniMax H3 image-to-video: frame pertama dimuat di kiri, klip 2K selesai di OUTPUT di kanan. Perhatikan bidang Aspect Ratio yang disematkan ke adaptive, dan kutipan $1,12 untuk 2K pada 8 detik.
Langkah 3: Polling, dan tangani kelima status MiniMax H3
Ini adalah loop yang semua orang salah, jadi ada baiknya ditulis secara lengkap. Empat aturan: back off alih-alih memukul, batasi total waktu tunggu, perlakukan succeeded sebagai "unduh sekarang", dan raise pada status apa pun yang tidak ada dalam enum.
python1TERMINAL_OK = {"succeeded"} 2TERMINAL_BAD = {"failed", "cancelled"} 3IN_FLIGHT = {"queued", "running"} 4 5def poll(task_id: str, timeout_s: int = 900) -> dict: 6 delay, deadline = 3.0, time.time() + timeout_s 7 while time.time() < deadline: 8 r = requests.get(f"{BASE}/v2/query/video_generation/{task_id}", 9 headers=HEADERS, timeout=30) 10 r.raise_for_status() 11 task = r.json()["task"] 12 status = task["status"] 13 14 if status in TERMINAL_OK: 15 return task # content.url hidup SEKARANG 16 if status in TERMINAL_BAD: 17 raise RuntimeError(f"{status}: {json.dumps(r.json())[:400]}") 18 if status not in IN_FLIGHT: 19 # status yang tidak ada dalam enum. JANGAN lanjutkan ke "terus menunggu". 20 raise RuntimeError(f"status tidak dikenal {status!r} -- baca changelog") 21 22 print(f" {status} ... pemeriksaan berikutnya dalam {delay:.0f}s") 23 time.sleep(delay) 24 delay = min(delay * 1.5, 15.0) # 3s -> batas 15s 25 raise TimeoutError(f"{task_id} masih belum terminal setelah {timeout_s}s") 26
Tiga hal di dalamnya disengaja:
status not in IN_FLIGHT memunculkan error alih-alih melanjutkan. Jika MiniMax menambahkan status keenam kuartal depan, Anda ingin crash yang keras, bukan loop yang menunggu kata yang tidak pernah datang. Satu baris ini adalah perbedaan antara tutorial yang rusak dan yang ini.
failed tidak mencoba lagi. Render yang gagal biasanya berarti prompt memicu filter atau payload memiliki kombinasi yang buruk, dan mengirim payload yang sama lagi akan memberi Anda kegagalan yang sama dengan harga penuh. Log body, lihat, lalu putuskan.
Backoff dimulai dari 3 detik dan berakhir di 15. H3 di 2K membutuhkan waktu menit, bukan detik. Polling sekali per detik hanya menghabiskan batas rate Anda pada endpoint query.
Langkah 4: Unduh sebelum URL kedaluwarsa
Saat succeeded tiba, streaming file ke disk. URL di content.url secara eksplisit adalah tautan terbatas waktu: "Unduh atau simpan segera; query lagi untuk mendapatkan URL baru setelah kedaluwarsa" (MiniMax API Reference, Agustus 2026). Ini bukan jalur CDN yang dapat Anda masukkan ke database dan lupakan.
Bagian kedua adalah kabar baik, dan itu adalah jawaban untuk 404 yang Anda dapatkan keesokan paginya. Rendernya tidak hilang. Query task_id yang sama lagi dan Anda mendapatkan URL baru, hingga 7 hari setelah pembuatan.
python1def download(url: str, path: str) -> str: 2 with requests.get(url, stream=True, timeout=300) as r: 3 r.raise_for_status() 4 with open(path, "wb") as f: 5 for chunk in r.iter_content(1 << 20): 6 f.write(chunk) 7 return path 8 9def refresh_url(task_id: str) -> str: 10 """Tautan mati? Rendernya baik-baik saja. Tanya lagi, dalam jendela 7 hari.""" 11 r = requests.get(f"{BASE}/v2/query/video_generation/{task_id}", 12 headers=HEADERS, timeout=30) 13 r.raise_for_status() 14 return r.json()["task"]["content"]["url"] 15 16task = poll(shot_a) 17download(task["content"]["url"], "shot-a.mp4") 18
Apa yang kembali untuk shot A, di samping gambar diam yang dimulainya:

Berdampingan: frame pertama yang dihasilkan di kiri, bingkai dari klip MiniMax H3 yang sudah jadi di kanan, menunjukkan pelat sayap burung terbuka dan mata menyala
Kiri: gambar diam GPT Image 2 dari Langkah 1, persis seperti yang dikirim. Kanan: bingkai yang ditarik dari klip 2K yang dikembalikan H3. Set yang sama, cahaya yang sama, pelat sayap dan mata yang bergerak.
Langkah 5: Shot B dengan MiniMax H3 text-to-video, di mana ratio wajib
Tidak ada frame sumber untuk langit, jadi shot B hanya teks. Itu membalikkan aturan ratio dari "diabaikan" menjadi "wajib": untuk prompt teks saja, ratio wajib dan tidak boleh adaptive (MiniMax API Reference, Agustus 2026). Tinggalkan atau kirim adaptive dan Anda langsung mendapatkan 400, sebelum render apa pun dimulai.
Model: minimax/h3/text-to-video. Pengaturan: 2K, durasi 6, rasio 16:9.
text1The brass bird bursts through a half-open workshop skylight into a rain-washed 2evening sky, wings beating in a whir of gears, droplets spraying off the metal 3feathers as it climbs past wet slate rooftops toward a break of gold cloud. 4Camera cranes up behind it, 24mm, backlit rim from the low sun. Sound: wing 5servos whirring, wind rising, distant church bell, rain fading out. No text. 6
python1shot_b = create_task({ 2 "model": "MiniMax-H3", 3 "resolution": "2K", 4 "duration": 6, 5 "ratio": "16:9", # wajib di sini. hilangkan atau berikan "adaptive" -> 400 6 "content": [{"type": "text", "text": SHOT_B_PROMPT}], 7}) 8download(poll(shot_b)["content"]["url"], "shot-b.mp4") 9

Playground MiniMax H3 text-to-video di Atlas Cloud dengan prompt burung terbang dan klip selesai di panel output
MiniMax H3 text-to-video dengan prompt shot B dan Aspect Ratio diatur secara eksplisit ke 16:9. Run ini menggunakan 8 detik default halaman daripada 6 dalam payload di atas.
Langkah 6: Lewati polling dengan callback, dan gema challenge dalam 3 detik
Jika Anda lebih suka diberi tahu daripada bertanya, berikan callback_url pada panggilan create. Hanya ada satu tangkapan, didokumentasikan dalam satu tanda kurung di referensi API, dan itu adalah cara paling umum di mana callback yang di-host sendiri gagal.
Sebelum MiniMax mendorong apa pun kepada Anda, ia mengirimkan permintaan verifikasi yang berisi bidang challenge, dan "Anda harus mengembalikan challenge tidak berubah dalam 3 detik untuk menyelesaikan verifikasi" (MiniMax API Reference, Agustus 2026). Lewatkan dan tidak ada kesalahan di mana pun. Panggilan create Anda terus berhasil, render Anda terus selesai, dan Anda tidak pernah mendapatkan push. Tidak ada di log yang mengatakan mengapa.
Dua belas baris FastAPI, dan urutan di dalamnya adalah intinya:
python1from fastapi import FastAPI, Request 2 3app = FastAPI() 4 5@app.post("/minimax/callback") 6async def callback(req: Request): 7 body = await req.json() 8 if "challenge" in body: # jabat tangan verifikasi, jawab PERTAMA 9 return {"challenge": body["challenge"]} # tidak berubah, sinkron, tanpa gerbang auth 10 task_id = body.get("task_id") 11 status = body.get("status") 12 enqueue(task_id, status) # notifikasi nyata: serahkan, kembali cepat 13 return {"ok": True} 14
Kesalahan yang membunuhnya, dalam urutan seberapa sering saya melihatnya:
- Permintaan challenge melewati middleware auth Anda dan mendapatkan 401 atau pengalihan. Verifikasi tidak diautentikasi menurut definisi. Whitelist jalur.
- Handler mendorong challenge ke antrian dan menjawab secara asinkron. Terlambat. Balasan itu harus ada di body respons dari permintaan itu.
- Nilai di-serialisasi ulang, dipotong, atau dibungkus. Gema byte demi byte.
- Anda menguji melalui tunnel terhadap server dev serverless, dan cold start saja lebih dari 3 detik. Hangatkan dulu, atau verifikasi terhadap proses yang sudah berjalan.
Polling sama sekali tidak masalah, omong-omong. Jika Anda memiliki segelintir pekerjaan per jam, loop di Langkah 3 lebih sedikit kode dan lebih sedikit yang rusak. Callback berbuah saat Anda memiliki banyak pekerjaan dan tidak ingin poller per pekerjaan.
Langkah 7: Gabungkan dua shot menjadi satu film
Kedua shot kembali sebagai 2560x1440 h264 pada 24fps dengan audio stereo AAC pada 32kHz. Kontainer yang sama, semuanya sama, jadi ini adalah salinan stream daripada re-encode. Tidak ada kehilangan kualitas, tidak ada menunggu.
Satu kejutan kecil yang perlu diantisipasi: meminta 6 detik memberi saya file 6,58 detik. Durasi kembali mendekati apa yang Anda minta, tidak tepat ke bingkai, jadi dua shot bertambah menjadi 14,62 detik, bukan 14 yang bersih.
bash1printf "file 'shot-a.mp4'\nfile 'shot-b.mp4'\n" > list.txt 2ffmpeg -f concat -safe 0 -i list.txt -c copy brass-bird-two-shot.mp4 3
Output itu adalah video di bagian atas artikel ini. Jika -c copy mengeluh, dua shot Anda memiliki resolusi atau frame rate yang berbeda, yang pada H3 berarti Anda mengubah resolution di antara panggilan. Cocokkan, atau hapus -c copy dan terima satu re-encode.
Variasi Tutorial MiniMax H3 yang Layak Dicuri
Lima hal yang patut dicoba setelah loop di atas berfungsi, dalam urutan kasar seberapa banyak uang yang mereka hemat.
Draf di 768P, selesaikan di 2K. Kedua tingkat adalah model yang sama, dan 768P berharga sekitar 29% lebih murah per detik. Render kandidat Anda pendek dan murah, tonton, lalu jalankan ulang hanya pemenang di 2K dengan prompt yang sama. Di sinilah sebagian besar penghematan dalam daftar shot berada. Tingkat mana yang benar-benar Anda butuhkan untuk pengiriman adalah argumennya sendiri, dan saya membuatnya di 768P vs 2K.
Durasi adalah setiap bilangan bulat dari 4 hingga 15. Bukan satu set preset. Jika aksi mendarat pada 7 detik, minta 7 dan berhenti membayar untuk 8.
Frame pertama ditambah frame terakhir. Kirim item gambar kedua dengan role: "last_frame" dan H3 akan membangun transisi di antara keduanya. Berguna untuk serah terima antar shot yang sudah Anda tata.
Reference-to-video untuk kontinuitas. role: "reference_image" menjaga karakter di seluruh shot alih-alih mengocok ulang wajah mereka setiap generasi. Ada peran reference_audio yang cocok dengan jendela 2 hingga 15 detik untuk klip referensi, yang merupakan cara Anda menjaga suara tetap konsisten. Lihat reference-to-video.
Kepala bicara vertikal. ratio: "9:16" dengan baris dialog dalam prompt adalah penggunaan volume tertinggi model ini saat ini, karena audio keluar dari pass yang sama dan bibir cocok tanpa langkah lip-sync terpisah.
Pembuatan prompt adalah keterampilan terpisah dari pipa async, dan jika shot Anda bersih secara teknis tetapi datar secara visual, masalahnya ada di hulu artikel ini. Mulailah dengan panduan prompt H3.
Berapa Biaya Menjalankan Tutorial MiniMax H3 Ini
Item baris nyata dari run yang menghasilkan film di atas, dikutip oleh tombol Run dan diverifikasi pada 2026-08-12. H3 menagih per detik output dan tarifnya bertingkat berdasarkan resolusi: pekerjaan 2K mengutip $1,12 untuk 8 detik, yaitu $0,14 per detik, dan tarif awal katalog $0,10 adalah tingkat 768P. Ketiga endpoint H3 berada pada harga penuh saat ini, tanpa diskon yang diterapkan.
| Langkah | Model | Pengaturan | Biaya |
|---|---|---|---|
| Frame pertama | GPT Image 2 text-to-image | kualitas high, 2048x1152 | $0,1745 |
| Shot A | H3 image-to-video | 2K, 8s | $1,12 |
| Shot B | H3 text-to-video | 2K, 16:9, 6s | $0,84 |
| Film yang dikirimkan | 14,6s, dua shot, 2560x1440, audio stereo | $2,13 | |
| Run tangkapan layar untuk artikel ini | H3 i2v + t2v | 2K, 8s masing-masing | $2,24 |
Perlu dicatat bahwa dua shot yang sama dibuat di 768P akan menjadi $0,80 dan $0,60, bukan $1,12 dan $0,84, sekitar 29% lebih murah, untuk rekaman yang benar-benar dapat Anda nilai.
Dua detail penagihan yang mudah dipelajari dengan cara mahal. Permintaan yang ditolak saat submit tidak dikenakan biaya, jadi 400 pada ratio yang hilang gratis. Permintaan yang merender sesuatu yang tidak berguna tidak gratis: jika pekerjaan mencapai succeeded, Anda dikenakan biaya, bahkan jika outputnya bukan yang Anda inginkan. Itulah argumen nyata untuk membuat draf di 768P.
Tarif per detik, perbandingan 768P dan 2K, dan bagaimana biaya berperilaku di seluruh durasi diuraikan dengan benar di harga API MiniMax H3 pendamping artikel ini. Yang ini adalah kodenya, yang itu adalah tagihannya.
Atribusi dan Wilayah Sebelum Anda Mengirim
Dua hal yang perlu diperiksa sebelum ini dipublikasikan. Ketentuan API MiniMax mencakup kewajiban pembelaan bersyarat yang mencakup klaim paten dan hak cipta terhadap output API, dan kewajiban itu tidak meluas ke merek dagang atau kemiripan, jadi logo yang dapat dikenali atau orang nyata dalam prompt Anda tetap menjadi masalah Anda. Secara terpisah, lisensi bobot terbuka untuk H3 membawa klausul Wilayah yang Dikecualikan, dan klausul itu mengatur bobot yang diunduh dan outputnya, bukan API yang dihosting, yang persyaratannya menyebutkan wilayah layanan AS yang dapat Anda pilih. Baca kontrak mana pun yang benar-benar Anda tandatangani. Dan beri label output H3 sebagai output H3 di UI Anda.
FAQ Tutorial MiniMax H3
Apa saja status tugas MiniMax H3, dan apakah ada yang expired?
Lima: queued, running, succeeded, failed, cancelled. Tidak ada status expired. Dua hal lain yang kedaluwarsa dan sering disalahartikan: URL unduhan di content.url terbatas waktu, dan catatan tugas itu sendiri hanya dapat ditanyai selama 7 hari terakhir.
Apakah saya harus menggunakan callback, atau apakah polling baik-baik saja untuk MiniMax H3?
Polling baik-baik saja dan lebih sedikit kode. Gunakan callback saat Anda memiliki cukup banyak pekerjaan bersamaan sehingga poller per pekerjaan menjadi konyol. Jika Anda melakukannya, endpoint harus menggema bidang challenge kembali tidak berubah dalam 3 detik, secara sinkron, sebelum middleware auth apa pun. Jabat tangan yang gagal tidak menghasilkan pesan error sama sekali, hanya diam permanen.
Mengapa permintaan text-to-video MiniMax H3 saya 400 dengan "ratio is required and cannot be adaptive"?
Karena Anda dalam mode teks saja, di mana tidak ada frame pertama untuk menyimpulkan frame. Berikan nilai eksplisit: 21:9, 16:9, 4:3, 1:1, 3:4 atau 9:16. Aturan yang sama adalah mengapa ratio tampak tidak melakukan apa pun dalam image-to-video, di mana frame pertama yang menentukan dan rasio apa pun yang Anda kirim diabaikan.
Berapa banyak pekerjaan MiniMax H3 yang dapat saya jalankan secara paralel?
Batas yang didokumentasikan berbasis koneksi: 2 tugas bersamaan gratis, 15 berbayar. Di atas batas Anda langsung mendapatkan 429, bukan slot antrian, jadi batasi jumlah in-flight Anda sendiri. Gateway routing terkadang menyerap lebih banyak, dan saya pernah memiliki 20 pekerjaan bersamaan yang semuanya selesai, tetapi saya juga pernah mendapatkan 429 pada pengaturan yang sama di hari lain. Jangan buat penjadwal yang mengasumsikan angka yang lebih tinggi.
URL video MiniMax H3 saya 404 sehari kemudian. Apakah rendernya hilang?
Tidak. URL kedaluwarsa, rendernya tidak. Query task_id yang sama lagi dan respons membawa URL baru, kapan saja dalam jendela query 7 hari. Setelah 7 hari, catatan tugas itu sendiri tidak dapat ditanyai lagi, itulah sebabnya Langkah 2 menyimpan task_id sebelum melakukan hal lain.
Saya mencari "hailuo ai video generator how to use" dan mendarat di tutorial MiniMax H3. Apakah saya di tempat yang tepat?
Ya. Hailuo adalah aplikasi konsumen dan H3 adalah nama model yang digunakan API. Mesin yang sama. Jika Anda menginginkan satu klip, gunakan jalur playground di bagian alur kerja di atas, tanpa kode. Jika Anda menginginkan sepuluh varian atau frame pertama yang dimasukkan dari model lain, tujuh langkah tersebut untuk Anda.






