İlk POST'unuz on saniye içinde bir task_id ile geri döndü. Kazanç gibi görünüyordu.
Sonra altı dakika boyunca hiçbir şey olmadı. Bir eğitimden while status != "Success" satırını kopyalamıştınız ve döngü sürekli dönüyordu, çünkü bu uç nokta artık Success kelimesini döndürmüyor. Bunun üzerine webhook'a geçtiniz. Tek bir push bile gelmedi ve hiçbir yerde size nedenini söyleyen bir şey yoktu. Ertesi sabah dünkü render'ı kontrol ettiğinizde bağlantı 404 veriyordu.
Bu dört şey birbiriyle alakasız görünüyor. Hiçbiri modelin hatası değil. Dördü de neredeyse hiç kimsenin yazıya dökmediği async sözleşmesinin ta kendisi. İşte tüm sözleşme, artı karşı taraftan çıkan gerçek bir iki-çekimli kısa film.
Önemli çıkarımlar
- Üç uç nokta, bir döngü: create bir
task_iddöndürür ve bağlantıyı keser, siz yoklama yaparsınız, indirirsiniz. Tüm zorluk create çağrısından sonra başlar. - Gerçek beş durum şunlardır:
queued,running,succeeded,failed,cancelled. Bir blog yazısı ne söylerse söylesin,expireddiye bir durum yoktur. - Süresi dolan iki şey vardır ve hiçbiri bir durum değildir: indirme URL'si zamanla sınırlıdır ve görev kaydının kendisi yalnızca 7 gün boyunca sorgulanabilir.
- Geri çağırma kullanırsanız, MiniMax önce
challengealanı içeren bir doğrulama isteği gönderir ve siz bunu 3 saniye içinde değiştirmeden geri yankılamalısınız. Bunu başaramazsanız hata almazsınız, sadece sonsuza dek sessizlik olur. - Yalnızca metin üretimi için
ratiozorunludur veadaptiveolamaz. Görüntüden videoya dönüşümde ilk kare çerçeveyi belirler ve ilettiğiniz herhangi birratioyoksayılır.
Önce bitmiş şey
Bu eğitimin tüm ödülü: 2K'da iki MiniMax H3 çekimi, birleştirilmiş, 14.6 saniye. Çekim A, oluşturulan bir ilk kareden görüntüden videoya, çekim B ise metinden videoya. Sesi açın. Ses, üzerine yerleştirilmiş bir film müziği değil; H3, dişlileri, yağmuru ve fısıldanan satırı aynı üretimin parçası olarak render etti.
Bunu yapan üç API çağrısı. İlk kare için bir görüntü modeli, çekimler için iki H3 uç noktası, bunları birleştirmek için bir ffmpeg satırı. Aşağıdaki kod, bunu yapan koddur.
MiniMax H3 Eğitimlerinin Çoğu Neden İkinci İstekte Bozulur?
Bu model için hemen hemen her kılavuz create çağrısında durur. Bu kolay yarıdır. Create çağrısı yükünüzü doğrular, size bir task_id verir ve bağlantıyı keser; sonra dakikalar süren bir iş ve kimsenin basmadığı bir dizi kuralla baş başa kalırsınız.
Başarısızlıklar sıkıcı bir şekilde tekrarlanabilir. Bir öğleden sonra bu altıdan beşine rastladım.
| Belirti | Gördüğünüz şey | Gerçek neden | Çözüm |
|---|---|---|---|
| Yoklama döngüsü asla bitmez | Terminal sonsuza kadar yazdırır, iş saatler önce bitti | Çıkış koşulunuz Success / Fail gibi v1 kelimelerini karşılaştırır. v2 sorgu uç noktası küçük harfli succeeded / failed döndürür | v2 enum'u ile eşleştirin ve tanımadığınız herhangi bir durumda hata fırlatın |
| Metinden videoya anında 400 | Herhangi bir render başlamadan önce istek reddedildi | ratio eksik veya adaptive olarak ayarlanmış, metin-yalnız modu bunu reddeder | 16:9 gibi açık bir ratio iletin |
| Oranınız sessizce yoksayıldı | Çıktı karesi istediğiniz gibi değil | Görüntüden videoya, kareyi ilk kare görüntüsünden türetir, bu nedenle ratio orada işe yaramaz | İlk kareyi istediğiniz karede kırpın veya oluşturun |
| Webhook asla ateşlenmez, hata yok | Sıfır push, temiz loglar, API'den şikayet yok | Doğrulama el sıkışması başarısız oldu. MiniMax bir challenge gönderdi ve uç noktanız bunu 3 saniye içinde değiştirmeden geri yankılamadı | Challenge'ı, herhangi bir auth veya kuyruk middleware'inden önce, senkron olarak yanıtlayın |
| Dünkü URL 404 veriyor | İndirme bağlantısı ölü, render gitmiş gibi görünüyor | İndirme URL'si zaman sınırlıdır. Render gayet iyi | 7 günlük pencere içinde, yeni bir URL almak için aynı task_id'yi tekrar sorgulayın |
| Yük altında rastgele 429'lar | Bazı gönderimler reddedildi, kuyruk yok | Eşzamanlılık sınırlıdır ve bu bekleyen bir hat değil, sert bir sınırdır | Kendi devam eden sayınızı sınırlayın ve render'ı değil, gönderimi yeniden deneyin |
İlk satır, bütün akşamları yiyen satırdır ve kesin olmakta fayda var. MiniMax'ın eski video API'si, Preparing / Queueing / Processing / Success / Fail ailesinde büyük harfli kelimelerle ilerleme bildiriyordu. H3 tarafından kullanılan v2 sorgu uç noktası, queued, running, succeeded, failed, cancelled döndürür (MiniMax API Referansı, Ağustos 2026). Birçok üçüncü taraf satıcı belgesi hâlâ eski seti basıyor veya her ikisini bir sayfada karıştırıyor. Bu tür birinden bir döngü devraldıysanız, sonlanamaz çünkü beklediği dize asla gönderilmez.
MiniMax H3 Eğitim İş Akışı: Üç Uç Nokta, Beş Durum, Bir Döngü
H3, 2026-07-31'de omni-modal bir video modeli olarak piyasaya sürüldü: metin, görüntü, video ve sesin tümü aynı bağlam penceresinde yaşar, 2K'da 15 saniyeye kadar ve yerel stereo ses ile çıktı verir (MarkTechPost, Ağustos 2026). API için bu, bir content dizisi ile bir adet create uç noktası anlamına gelir ve diziye ne koyduğunuz hangi modda olduğunuzu belirler.
| Mod | content'e ne girer | görüntü öğesindeki rolü | ratio'nun ne yaptığı | Ne için kullanılır |
|---|---|---|---|---|
| Metinden videoya | bir metin öğesi | yok | Zorunludur ve adaptive reddedilir | Kaynak görüntü olmayan, karenin tam kontrolünün olduğu çekimler |
| Görüntüden videoya | metin öğesi artı görüntü öğesi | first_frame (isteğe bağlı olarak ayrıca last_frame) | Yoksayılır, ilk kare karar verir | Halihazırda sanat yönettiğiniz bir fotoğrafı canlandırma |
| Referanstan videoya | metin öğesi artı referans öğesi | reference_image (ayrıca reference_video, reference_audio) | Zorunludur, metin-yalnız ile aynı | Bir karakteri veya bir sesi çekimler arasında tutma |
Ve kodunuzun aslında ele alması gereken kısım. Beş durum, beş farklı dal.
| Durum | Anlamı | Kodunuzun ne yapması gerektiği |
|---|---|---|
| queued | Kabul edildi, sıra bekliyor | Yoklamaya devam edin, aralığı artırın |
| running | Render ediliyor | Yoklamaya devam edin, aralığı artırın |
| succeeded | Bitti, content.url dolu | Hemen indirin, bu yinelemede |
| failed | Render başarısız oldu | Hata gövdesini okuyun, loglayın, aynı yükü körü körüne yeniden denemeyin |
| cancelled | İş iptal edildi | Döngüden çıkın, terminal olarak ele alın |
| başka herhangi bir şey | Enum'da değil | Hata fırlatın. Sessizce "beklemeye devam et" olarak ele aldığınız yeni bir durum, yukarıdaki tablodaki hatadır |
expired diye bir durum yoktur. Bu kelime sıklıkla bu API'ye eklenir ve iki başka şeye aittir: zaman sınırlı ve yenilenebilir olan indirme URL'si ve yalnızca son 7 gün için sorgulanabilir olan görev kaydı. Her ikisi de Adım 4'te ele alınmıştır.
Koddan önce bir sayı daha. H3'te video oluşturma için eşzamanlılık, dakikadaki istek sayısıyla değil, bağlantı sayısıyla sınırlıdır: ücretsiz kademede 2 eşzamanlı görev, ücretli olduğunuzda 15 (Miniax Hız Sınırları, Ağustos 2026). Sınırın ötesinde hemen bir 429 alırsınız. Sizin adınıza hiçbir şey kuyruğa alınmaz. Ayrıca bir yönlendirme ağ geçidi üzerinden 20 eşzamanlı H3 işi gönderip hepsinin başarılı olduğunu gördüm ve aynı kurulumda başka bir gün 429 aldım; bu nedenle belgelenen sınırın üzerindeki herhangi bir sayıyı sabit değil, hava durumu olarak ele alın.
Doğrudan mı yoksa bir ağ geçidi aracılığıyla mı?
Üç adım her iki şekilde de aynıdır, ancak dizeler farklıdır ve bu, gece saat 1'de hata ayıklarken önemlidir.
| MiniMax doğrudan | Birleşik ağ geçidi (Atlas Cloud) | |
|---|---|---|
| Gönder | POST /v2/video_generation | POST /api/v1/model/generateVideo |
| Yoklama | GET /v2/query/video_generation/{task_id} | GET /api/v1/model/prediction/{id} |
| Durum kelimeleri | queued / running / succeeded / failed / cancelled | başarılıda completed, başarısızda failed |
| Push bildirimleri | 3 saniyelik challenge el sıkışması ile Geri Çağırma URL'si | Tahmin kimliğini yoklayın |
| Eşzamanlılık | 2 ücretsiz, 15 ücretli, sert 429 | Model başına bir sınır olarak yayınlanmamıştır, pratikte daha geniş ölçülür |
| Aynı anahtarda ilk kare görüntü modeli | Hayır, ayrı hesap | Evet, GPT Image 2 ve H3 tek bir anahtarın arkasındadır |
| H3 fiyatı | Çözünürlük kademesine göre yayınlanmıştır | Çıktı saniyesi başına, çözünürlüğe göre kademeli, göndermeden önce Çalıştır düğmesinde fiyat teklifi edilir |
Bu eğitimin zincirini bir ağ geçidinde çalıştırmamın nedeni tamamen sondan bir önceki satırdır: ilk kare bir OpenAI görüntü modelinden gelir ve iki çekim MiniMax'tan gelir; 14 saniyelik bir film için iki satıcı, iki anahtar ve iki faturalama sayfası istemedim. Zaten MiniMax platformunun içindeyseniz, orada kalın, aşağıdaki döngü yollar ve durum kelimeleri dışında değişmeden çalışır.
Hailuo AI Video Oluşturucu: Herhangi Bir Kod Yazmadan Önce Nasıl Kullanılır
Buraya Hailuo AI video oluşturucuyu nasıl kullanacağınızı arayarak geldiyseniz, doğru yerdesiniz ve henüz kodun hiçbirine ihtiyacınız yok. Hailuo, MiniMax'ın tüketiciye yönelik uygulamasıdır ve H3, API'nin kullandığı model adıdır. Aynı motor, farklı kapı.
Üç dakika, terminal yok:
- Bir model sayfası açın, örneğin MiniMax H3 görüntüden videoya. Oyun alanı sayfanın sağ panelidir.
- Bir ilk kare görüntüsü bırakın veya metinden videoya sayfasına geçin ve sadece bir istem yazın. Çözünürlük ve süreyi ayarlayın. Duymak istediğinizi yüksek sesle söyleyin, sadece görmek istediğinizi değil: H3 sesi aynı geçişte oluşturur, bu nedenle "cama vuran yağmur, küçük servo tıklamaları" gerçek bir talimattır, süsleme değil.
- Çalıştır'a basın. Düğme, taahhüt etmeden önce seçtiğiniz ayarlar için tam ücreti gösterir. Bekleyin, indirin.
Kodsuz yolun tamamı budur ve tek seferlik klipler için gerçekten daha hızlı seçenektir. On farklı varyasyon veya başka bir model tarafından oluşturulup doğrudan beslenen bir ilk kare istediğiniz an, koda geri dönün. Geri kalan bunun içindir.
MiniMax H3 Eğitimi: Oluştur, Yokla, İndir, Tekrarla
Yedi adımın tamamından geçen bir örnek: bir saatçi küçük bir pirinç mekanik kuşu tamir eder, ona bir satır fısıldar ve kuş atölyeden uçup gider. İki çekim. Çekim A, görüntüden videoya olduğu için iç mekan sanat yönetimiyle yapılmıştır. Çekim B, metinden videoyadır çünkü gökyüzü için kaynak kare yoktur.
Adım 1: GPT Image 2 ile ilk kareyi oluşturun
Görüntüden videoya ratio'yu yoksayar, bu nedenle ilk kare, çekim A'nın karesine karar verdiğiniz yerdir. 16:9'da ve en yüksek kalite kademesinde oluşturun, çünkü H3 içindeki her kusuru devralacak ve üzerine hareket bulanıklığı ekleyecektir.
Model: openai/gpt-image-2/text-to-image. Ayarlar: kalite high, 2048x1152, 16:9, PNG.
text1Alacakaranlıkta dağınık bir saatçi atölyesi, yıpranmış bir meşe tezgahın üzerinde sıcak bir tungsten lamba. Deri önlüklü yaşlı bir tamirci, avuçlarında dinlenen küçük bir pirinç mekanik kuşa doğru eğiliyor, kanat plakaları yarı açık, minik dişliler görünüyor. Arkasındaki çok bölmeli pencerede yağmur izleri var; çerçevenin solunda bir kömür sobası kehribar rengi parlıyor. Sığ alan derinliği, 35mm, lamba huzmesinde hacimsel toz, derin kehribar ve turkuaz paleti, fotogerçekçi, metin yok. 2

Atlas Cloud'da GPT Image 2 oyun alanı, bu eğitimin ilk kare istemi ve çıktı panelinde işlenmiş saatçi atölyesi ile
Atlas Cloud'da GPT Image 2, 2048x1152'de yüksek kalite. Çalıştır düğmesi, taahhüt etmeden önce seçtiğiniz ayarlar için tam ücreti, bu seferki için $0.1745'i gösterir.
Döndürülen URL'yi saklayın. Adım 2, onu doğrudan H3'e besler, indirme gidiş-dönüşüne gerek yoktur.
Adım 2: MiniMax H3 görevini oluşturun ve task_id'ye tutunun
Create çağrısı iki şey yapar ve sonra sizinle ilgilenmeyi bırakır: yükü doğrular ve bir task_id döndürür. Burada 400 almak, geçici bir hata değil, yükünüzle ilgili bir sorundur, bu nedenle bir yeniden deneme döngüsünün arkasına koymayın. Diğer her tür sorun daha sonra, yoklama sırasında ortaya çıkar.
Gerçek para tasarrufu sağlayan tek alışkanlık: başka bir şey yapmadan önce task_id'yi kalıcı hale getirin. Görevler yalnızca 7 gün boyunca sorgulanabilir ve işleminiz kimlik bellekteyken ölürse, artık erişemediğiniz bir render için ödeme yapmış olursunuz.
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 # yükünüz yanlış. tekrar denemek yine yanlış olacaktır. 14 raise ValueError(f"reddedildi: {r.text}") 15 r.raise_for_status() 16 task_id = r.json()["task_id"] 17 with open("tasks.jsonl", "a") as f: # BAŞKA HER ŞEYDEN ÖNCE kalıcı hale getir 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 "Yaşlı tamircinin elleri pirinç kuşu sabitliyor. Cam gözleri titreyerek yanıyor, " 24 "kanat plakaları tek tek tıklayarak açılıyor. Eğilip yaklaşıyor ve mikrofona yakın bir şekilde fısıldıyor, " 25 ""Bakalım hâlâ gökyüzünü hatırlıyor musun." Yavaş 50mm içeri itme, lamba ışığı pirinci tırmalıyor, " 26 "camda yağmur tıkırdaması, kömür sobası çıtırdaması, sesinin altında küçük servo tıklamaları " 27 "Sıcak kehribar anahtar, turkuaz pencere dolgusu. Ekranda metin yok." 28) 29 30shot_a = create_task({ 31 "model": "MiniMax-H3", 32 "resolution": "2K", 33 "duration": 8, 34 # burada bilerek "ratio" yok: görüntüden videoya kareyi ilk kareden alır 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("çekim A görevi:", shot_a) 42
İşte bu tam istem ve ilk kare bir iş olarak çalışıyor, böylece sağlıklı bir gönderimin diğer taraftan nasıl göründüğünü görebilirsiniz:

Atlas Cloud'da MiniMax H3 görüntüden videoya oyun alanı, atölye ilk karesi yüklenmiş ve işlenmiş klip çıktı panelinde
MiniMax H3 görüntüden videoya: solda yüklenmiş ilk kare, sağda ÇIKTI'da bitmiş 2K klip. En Boy Oranı alanının adaptive olarak sabitlendiğine ve 2K, 8 saniye için $1.12 fiyat teklifine dikkat edin.
Adım 3: Yoklayın ve tüm beş MiniMax H3 durumunu ele alın
Herkesin yanlış yaptığı döngü budur, bu nedenle tam olarak yazmaya değer. Dört kural: aralığı artırın, dövmeyin; toplam bekleme süresini sınırlayın; succeeded'ı "şimdi indir" olarak ele alın ve enum'da olmayan herhangi bir durumda hata fırlatın.
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 ŞİMDİ canlı 16 if status in TERMINAL_BAD: 17 raise RuntimeError(f"{status}: {json.dumps(r.json())[:400]}") 18 if status not in IN_FLIGHT: 19 # enum'da olmayan bir durum. "beklemeye devam et"e düşmeyin. 20 raise RuntimeError(f"bilinmeyen durum {status!r} -- changelog'u okuyun") 21 22 print(f" {status} ... sonraki kontrol {delay:.0f}s içinde") 23 time.sleep(delay) 24 delay = min(delay * 1.5, 15.0) # 3s -> 15s tavan 25 raise TimeoutError(f"{task_id} hâlâ terminal değil, {timeout_s}s sonra") 26
İçinde kasıtlı olan üç şey:
status not in IN_FLIGHT devam etmek yerine hata fırlatır. MiniMax önümüzdeki çeyrekte altıncı bir durum eklerse, asla gelmeyen bir kelimeyi bekleyen bir döngü değil, yüksek sesle çöken bir hata istersiniz. Bu tek satır, bozuk eğitim ile bu eğitim arasındaki farktır.
failed yeniden denemez. Başarısız bir render genellikle istemin bir filtreyi tetiklediği veya yükün kötü bir kombinasyona sahip olduğu anlamına gelir ve aynı yükü tekrar ateşlemek, tam fiyata aynı başarısızlığı satın alır. Gövdeyi loglayın, inceleyin, sonra karar verin.
Geri çekilme 3 saniyede başlar ve 15'te durur. 2K'da H3 dakikalar alır, saniyeler değil. Saniyede bir yoklama yapmak, sorgu uç noktasındaki hız sınırınızı tüketir.
Adım 4: URL'nin süresi dolmadan indirin
succeeded anı geldiğinde, dosyayı hemen diske akışlayın. content.url içindeki URL, açıkça zaman sınırlı bir bağlantıdır: "Hemen indirin veya saklayın; süresi dolduktan sonra yeni bir URL almak için tekrar sorgulayın" (MiniMax API Referansı, Ağustos 2026). Veritabanınıza koyup unutabileceğiniz bir CDN yolu değildir.
İkinci yarı iyi haberdir ve ertesi sabah aldığınız 404'ün cevabıdır. Render gitmemiştir. Aynı task_id'yi tekrar sorgulayın ve oluşturmadan sonra 7 güne kadar yeni bir URL alırsınız.
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 """Ölü bağlantı mı? Render gayet iyi. 7 günlük pencere içinde tekrar sorun.""" 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
Çekim A için geri dönen şey, başladığı fotoğrafın yanında:

Yan yana: solda oluşturulan ilk kare, sağda bitmiş MiniMax H3 klibinden bir kare, kuşun kanat plakalarının açıldığını ve gözlerin yandığını gösteriyor
Sol: Adım 1'deki GPT Image 2 fotoğrafı, gönderildiği gibi. Sağ: H3'ün döndürdüğü 2K klibinden alınmış bir kare. Aynı set, aynı ışık, hareket eden kanat plakaları ve gözler.
Adım 5: MiniMax H3 metinden videoya ile Çekim B, ratio'nun zorunlu olduğu yer
Gökyüzü için kaynak kare yok, bu nedenle çekim B yalnızca metin. Bu, ratio kuralını "yoksayılır"dan "zorunlu"ya çevirir: yalnızca metin içeren bir istem için ratio zorunludur ve adaptive olamaz (MiniMax API Referansı, Ağustos 2026). Bunu atlayın veya adaptive gönderin ve herhangi bir render başlamadan önce anında 400 alırsınız.
Model: minimax/h3/text-to-video. Ayarlar: 2K, süre 6, oran 16:9.
text1Pirinç kuş, yarı açık bir atölye çatı penceresinden fırlayarak yağmurla yıkanmış bir akşam gökyüzüne çıkar, kanatları bir dişli vızıltısıyla çırpınır, metal tüylerden sıçrayan damlalar, altın bir bulut kırıklığına doğru ıslak arduvaz çatıların üzerinden yükselirken. Kamera arkasından yukarı doğru vinç çeker, 24mm, alçak güneşten arkadan aydınlatmalı kenar. Ses: kanat servoları vızıldıyor, rüzgar yükseliyor, uzaktaki kilise çanı, yağmur soluyor. Metin yok. 2
python1shot_b = create_task({ 2 "model": "MiniMax-H3", 3 "resolution": "2K", 4 "duration": 6, 5 "ratio": "16:9", # burada zorunlu. atlayın veya "adaptive" iletin -> 400 6 "content": [{"type": "text", "text": SHOT_B_PROMPT}], 7}) 8download(poll(shot_b)["content"]["url"], "shot-b.mp4") 9

Atlas Cloud'da MiniMax H3 metinden videoya oyun alanı, kuşun uçuşa geçtiği istem ve bitmiş klip çıktı panelinde
MiniMax H3 metinden videoya, çekim B'nin istemi ve En Boy Oranı açıkça 16:9 olarak ayarlanmış. Bu çalıştırma, yukarıdaki yükteki 6 yerine sayfanın varsayılan 8 saniyesini kullandı.
Adım 6: Bir geri çağırma ile yoklamayı atlayın ve challenge'ı 3 saniyede yankılayın
Sorulmaktan ziyade söylenmeyi tercih ediyorsanız, create çağrısına callback_url iletin. Tam olarak bir yakalama var, API referansında tek bir parantez içinde belgelenmiştir ve kendi kendine barındırılan geri çağırmaların başarısız olmasının en yaygın yoludur.
MiniMax size herhangi bir şey göndermeden önce, bir challenge alanı içeren bir doğrulama isteği gönderir ve "doğrulamayı tamamlamak için challenge'ı 3 saniye içinde değiştirmeden döndürmelisiniz" (MiniMax API Referansı, Ağustos 2026). Bunu kaçırırsanız hiçbir yerde hata olmaz. Create çağrılarınız başarılı olmaya devam eder, render'larınız bitmeye devam eder ve siz asla bir push alamazsınız. Hiçbir log nedenini söylemez.
On iki satır FastAPI ve içlerindeki sıralama tüm mesele:
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: # doğrulama el sıkışması, ÖNCE yanıtlayın 9 return {"challenge": body["challenge"]} # değiştirilmemiş, senkron, auth kapısı yok 10 task_id = body.get("task_id") 11 status = body.get("status") 12 enqueue(task_id, status) # gerçek bildirim: devredin, hızlı dönün 13 return {"ok": True} 14
Onu öldüren hatalar, en sık gördüğüm sırayla:
- Challenge isteği, auth middleware'inizden geçer ve 401 veya yönlendirme alır. Doğrulama tanım gereği kimlik doğrulamasız değildir. Yolu beyaz listeye alın.
- İşleyici, challenge'ı bir kuyruğa iter ve eşzamansız olarak yanıtlar. Çok geç. Bu yanıt, o isteğin yanıt gövdesinde olmalıdır.
- Değer yeniden serileştirilir, kırpılır veya sarılır. Bayt bayt yankılayın.
- Bir tünel aracılığıyla sunucusuz bir geliştirme sunucusuna karşı test ediyorsunuz ve soğuk başlatma tek başına 3 saniyeden fazla sürüyor. Önce ısıtın veya halihazırda çalışan bir işleme karşı doğrulayın.
Bu arada, yoklama tamamen sorunsuzdur. Saatte bir avuç işiniz varsa, Adım 3'teki döngü daha az kod ve daha az kırılacak şeydir. Geri çağırma, çok sayıda işiniz olduğunda ve iş başına bir yoklayıcı istemediğinizde işe yarar.
Adım 7: İki çekimi tek bir filmde birleştirin
Her iki çekim de 24fps'de 2560x1440 h264 ve 32kHz'de AAC stereo ses olarak geldi. Aynı kap, aynı her şey, bu nedenle bu yeniden kodlama yerine bir akış kopyasıdır. Kalite kaybı yok, bekleme yok.
Beklemeye değer küçük bir sürpriz: 6 saniye istemek bana 6.58 saniyelik bir dosya verdi. Süreler, istediğinize yakın gelir, kareye tam değil, bu nedenle iki çekim temiz bir 14 yerine 14.62 saniyeye kadar çıkar.
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
Bu çıktı, bu makalenin başındaki videodur. -c copy şikayet ederse, iki çekiminizin farklı çözünürlükleri veya kare hızları vardır, bu da H3'te çağrılar arasında resolution'ı değiştirdiğiniz anlamına gelir. Bunları eşleştirin veya -c copy'yi bırakın ve bir yeniden kodlamayı kabul edin.
Çalmaya Değer MiniMax H3 Eğitim Varyasyonları
Yukarıdaki döngü çalıştıktan sonra denemeye değer beş şey, kabaca size ne kadar para kazandırdıkları sırasına göre.
768P'de taslak, 2K'da bitirin. Her iki kademe de aynı modeldir ve 768P saniye başına yaklaşık %29 daha ucuzdur. Adaylarınızı kısa ve ucuz olarak render edin, izleyin, ardından aynı istemle yalnızca kazananı 2K'da yeniden çalıştırın. Çekim listesindeki tasarrufların çoğu burada yaşar. Teslimat için gerçekte hangi kademeye ihtiyacınız olduğu kendi tartışmasıdır ve bunu 768P vs 2K adresinde yaptım.
Süre, 4'ten 15'e kadar her tam sayıdır. Bir dizi ön ayar değil. Eylem 7 saniyede bitiyorsa, 7 isteyin ve 8 için ödeme yapmayı bırakın.
İlk kare artı son kare. role: "last_frame" ile ikinci bir görüntü öğesi gönderin; H3 aralarındaki geçişi oluşturacaktır. Halihazırda sanat yönettiğiniz çekimler arasındaki geçişler için kullanışlıdır.
Süreklilik için referanstan videoya. role: "reference_image", bir karakteri her nesilde yüzünü yeniden şekillendirmek yerine çekimler arasında tutar. Referans klibi için 2 ila 15 saniyelik bir pencereyle eşleşen bir reference_audio rolü vardır; bu, bir sesi tutarlı tutmanın yoludur. Bkz. referanstan videoya.
Dikey konuşan kafa. ratio: "9:16" ile istemde bir diyalog satırı, bu modelin şu anda en yüksek hacimli kullanımıdır, çünkü ses aynı geçişten çıkar ve dudaklar ayrı bir dudak senkronizasyonu adımı olmadan eşleşir.
İstem işçiliği, async tesisatından ayrı bir beceridir ve çekimleriniz teknik olarak temiz ancak görsel olarak düzse, sorun bu makalenin yukarısındadır. H3 istem kılavuzu ile başlayın.
Bu MiniMax H3 Eğitimini Çalıştırmanın Maliyeti
En baştaki filmi üreten çalıştırmadan gerçek satır öğeleri, Çalıştır düğmesi tarafından fiyat teklif edilmiş ve 2026-08-12'de doğrulanmıştır. H3, çıktının saniyesi başına faturalandırılır ve ücret çözünürlüğe göre kademelendirilir: 2K işleri, 8 saniye için $1.12 fiyat teklifi verdi, bu da saniye başına $0.14'tür ve katalogdaki $0.10 başlangıç ücreti 768P kademesidir. Her üç H3 uç noktası da şu anda tam fiyattadır, herhangi bir indirim uygulanmamıştır.
| Adım | Model | Ayarlar | Ücret |
|---|---|---|---|
| İlk kare | GPT Image 2 metinden görüntüye | kalite high, 2048x1152 | $0.1745 |
| Çekim A | H3 görüntüden videoya | 2K, 8s | $1.12 |
| Çekim B | H3 metinden videoya | 2K, 16:9, 6s | $0.84 |
| Teslim edilen film | 14.6s, iki çekim, 2560x1440, stereo ses | $2.13 | |
| Bu makale için ekran görüntüsü çalıştırmaları | H3 i2v + t2v | 2K, her biri 8s | $2.24 |
Aynı iki çekimin 768P'de taslak olarak maliyetinin $0.80 ve $0.60 olacağını, $1.12 ve $0.84 yerine yaklaşık %29 daha ucuz olacağını ve bir çekimi kesinlikle değerlendirebileceğiniz görüntüler için not etmekte fayda var.
Pahalı yoldan öğrenmesi kolay iki faturalama ayrıntısı. Gönderimde reddedilen bir istek hiçbir şeye mal olmaz, bu nedenle eksik bir ratio nedeniyle 400 almak ücretsizdir. İşe yaramaz bir şey render eden bir istek ücretsiz değildir: iş succeeded durumuna ulaşırsa, çıktı istediğiniz gibi olmasa bile ücretlendirilirsiniz. 768P'de taslak oluşturmanın gerçek argümanı budur.
Saniye başına ücretler, 768P ve 2K karşılaştırması ve ücretin sürelere göre nasıl davrandığı, bu makalenin eşlikçisi olan MiniMax H3 API fiyatlandırması adresinde ayrıntılı olarak ele alınmıştır. Bu yazı kod, şu yazı fatura.
Sevk Etmeden Önce Atıf ve Bölge
Bu herhangi bir yere halka açık olarak gitmeden önce kontrol edilmesi gereken iki şey. MiniMax'ın API koşulları, API çıktısına karşı patent ve telif hakkı iddialarını kapsayan koşullu bir savunma yükümlülüğü içerir ve bu yükümlülük ticari marka veya benzerliği kapsamaz; bu nedenle isteminizde tanınabilir bir logo veya gerçek bir kişi hâlâ sizin sorununuzdur. Ayrı ayrı, H3 için açık ağırlıklar lisansı, bir Hariç Tutulan Bölgeler maddesi taşır ve bu madde, indirilen ağırlıkları ve bunların çıktılarını yönetir, barındırılan API'yi değil; API'nin koşulları, seçebileceğiniz bir ABD hizmet bölgesini adlandırır. Hangi sözleşmeyi imzaladıysanız onu okuyun. Ve H3 çıktısını kullanıcı arayüzünüzde H3 çıktısı olarak etiketleyin.
MiniMax H3 Eğitim SSS
MiniMax H3 görev durumları nelerdir ve expired diye bir durum var mı?
Beş tane: queued, running, succeeded, failed, cancelled. expired diye bir durum yoktur. Süresi dolan ve bununla karıştırılan iki başka şey: content.url içindeki indirme URL'si zaman sınırlıdır ve görev kaydının kendisi yalnızca son 7 gün için sorgulanabilir.
MiniMax H3 için bir geri çağırma kullanmak zorunda mıyım yoksa yoklama yeterli mi?
Yoklama yeterlidir ve daha az koddur. Yeterli sayıda eşzamanlı işiniz olduğunda ve iş başına bir yoklayıcı anlamsız olduğunda bir geri çağırma kullanın. Kullanırsanız, uç nokta challenge alanını 3 saniye içinde, herhangi bir auth middleware'inden önce, senkron olarak değiştirmeden geri yankılamalıdır. Başarısız bir el sıkışma hiçbir hata mesajı üretmez, sadece kalıcı sessizlik üretir.
MiniMax H3 metinden videoya isteğim neden "ratio is required and cannot be adaptive" hatasıyla 400 veriyor?
Çünkü karenin çıkarılacağı ilk karenin olmadığı yalnızca metin modundasınız. Açık bir değer iletin: 21:9, 16:9, 4:3, 1:1, 3:4 veya 9:16. Aynı kural, ratio'nun ilk karenin karar verdiği ve ilettiğiniz herhangi bir oranın yoksayıldığı görüntüden videoya hiçbir şey yapmıyormuş gibi görünmesinin nedenidir.
Paralel olarak kaç MiniMax H3 işi çalıştırabilirim?
Belgelenen sınır bağlantı tabanlıdır: ücretsizde 2 eşzamanlı görev, ücretlide 15. Sınırın üzerinde bir kuyruk yuvası yerine anında 429 alırsınız, bu nedenle kendi devam eden sayınızı sınırlayın. Yönlendirme ağ geçitleri bazen daha fazlasını emer ve 20 eşzamanlı işin hepsinin tamamlandığını gördüm, ancak başka bir gün aynı kurulumda 429 da aldım. Daha yüksek sayıyı varsayan bir zamanlayıcı oluşturmayın.
MiniMax H3 video URL'm bir gün sonra 404 veriyor. Render kayboldu mu?
Hayır. URL'nin süresi doldu, render'ın değil. Aynı task_id'yi tekrar sorgulayın ve yanıt, 7 günlük sorgulama penceresi içinde herhangi bir zamanda yeni bir URL taşır. 7 gün sonra görev kaydının kendisi artık sorgulanamaz, bu nedenle Adım 2, başka bir şey yapmadan önce task_id'yi kalıcı hale getirir.
"hailuo ai video generator how to use" aradım ve bir MiniMax H3 eğitimine geldim. Doğru yerde miyim?
Evet. Hailuo tüketici uygulamasıdır ve H3, API tarafından kullanılan model adıdır. Aynı motor. Tek bir klip istiyorsanız, yukarıdaki iş akışı bölümündeki oyun alanı yolunu kullanın, kod gerekmez. On farklı varyasyon veya başka bir modelden aktarılmış bir ilk kare istiyorsanız, yedi adım sizin için.






