MiniMax H3, znany też jako Hailuo 03, oddaje gotowe ujęcie w 2K razem z dźwiękiem stereo, który sam opisujesz w prompcie. Najmocniej wypada tam, gdzie postać ma się powtarzać: dajesz jej zdjęcia, nagranie ruchu i próbkę głosu, a model trzyma się tego wzoru. Sprawdzi się u twórców YouTube, przy krótkich serialach i w teledyskach.
Co z nim zrobisz
- Odcinek mini-serii, w którym ten sam bohater wraca z tą samą twarzą i głosem.
- Ujęcie 2K na kanał YouTube z gotowym tłem dźwiękowym: deszcz, gwar ulicy, rozmowa.
- Przejście z kadru startowego do końcowego w reklamie, np. od pustego pokoju do urządzonego wnętrza.
- Scenę do teledysku, w której tancerz powtarza ruch z Twojego klipu referencyjnego.
Ustawienia w praktyce
- Rozdzielczość: 2K (2560x1440) jest domyślna. 768P (1344x768) wybierz do testów albo rolek.
- Długość: 4-15 sekund, domyślnie 6.
- Proporcje: przy samym tekście musisz podać konkretny format,
adaptivezostanie odrzucone. Przy starcie ze zdjęcia kadr wynika z obrazu, więc przygotuj je od razu w docelowym kształcie. - Referencje: do 9 zdjęć w
image_urls, do 3 klipów wvideo_urls(każdy 2-15 s, razem do 15 s) i do 3 ścieżek waudio_urls. Audio zadziała tylko razem z obrazem albo klipem. - Dźwięk powstaje zawsze, więc w prompcie napisz, co ma być słychać: kto mówi, jaką kwestię, co gra w tle.
- Prompt mieści do 7000 znaków. Niższe progi rozdzielczości ma MiniMax H3 Max.
Prompt na start
A young street musician tunes his guitar on a rainy Warsaw tram stop at night, neon reflections on wet asphalt. He looks up and says softly: "One more song before the last tram." Stereo sound: rain on the roof, distant tram bell, quiet guitar strum.Zmień kwestię w cudzysłowie i listę dźwięków na końcu, a resztę sceny zostaw jako punkt wyjścia.
Pytania
Ile kosztuje klip z MiniMax H3 i co podnosi cenę?
Stawka bazowa to od 0,929 zł za sekundę, z VAT. Dopłata pojawia się za zdjęcia referencyjne od szóstego do dziewiątego i za klipy referencyjne, a próbki audio nic nie dodają. Jeśli zadanie się nie powiedzie, płacisz 0 zł.
Jak utrzymać tę samą postać w kilku klipach?
Wysyłaj w każdym zadaniu ten sam zestaw zdjęć postaci w image_urls, a jeśli zależy Ci na głosie, dodaj tę samą próbkę w audio_urls. Opis pól znajdziesz w dokumentacji. O łączeniu ujęć z jedną postacią piszę też w poradniku o spójnej postaci AI.
Czy H3 przyjmie zdjęcie pionowe do klipu 16:9?
Przy starcie ze zdjęcia model trzyma format obrazu, a pole proporcji jest pomijane. Pionowe zdjęcie da więc pionowy klip - jeśli chcesz 16:9, przytnij plik przed wysłaniem.
MiniMax H3 w twoim kodzie
curl https://kadraris.com/v1/generate?wait=60 \
-H "Authorization: Bearer $KADRARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "minimax-h3",
"input": {
"prompt": "Tracking shot of a cyclist riding through an empty city street at dawn, long shadows, light fog, film look",
"aspect_ratio": "16:9",
"resolution": "2K",
"duration": 6
}
}'import os, time, requests
API = "https://kadraris.com/v1"
H = {"Authorization": f"Bearer {os.environ['KADRARIS_API_KEY']}"}
task = requests.post(f"{API}/generate", headers=H, json={
"model": "minimax-h3",
"input": {
"prompt": "Tracking shot of a cyclist riding through an empty city street at dawn, long shadows, light fog, film look",
"aspect_ratio": "16:9",
"resolution": "2K",
"duration": 6
}
}).json()
while task["status"] in ("queued", "running"):
time.sleep(3)
task = requests.get(f"{API}/tasks/{task['id']}", headers=H).json()
print(task["status"], task["cost"], [o["url"] for o in task["output"]])const API = "https://kadraris.com/v1";
const headers = { Authorization: `Bearer ${process.env.KADRARIS_API_KEY}`, "Content-Type": "application/json" };
let task = await (await fetch(`${API}/generate`, {
method: "POST",
headers,
body: JSON.stringify({
"model": "minimax-h3",
"input": {
"prompt": "Tracking shot of a cyclist riding through an empty city street at dawn, long shadows, light fog, film look",
"aspect_ratio": "16:9",
"resolution": "2K",
"duration": 6
}
}),
})).json();
while (task.status === "queued" || task.status === "running") {
await new Promise((r) => setTimeout(r, 3000));
task = await (await fetch(`${API}/tasks/${task.id}`, { headers })).json();
}
console.log(task.status, task.cost, task.output.map((o) => o.url));
Pola wejściowe
| Parametr | Typ | Dozwolone | Domyślnie |
|---|---|---|---|
prompt * | string | ≤ 7000 znaków | |
aspect_ratio | string | 21:9 16:9 4:3 1:1 3:4 9:16 adaptive | 16:9 |
resolution | string | 768P 2K | 2K |
duration | integer | 4-15 | 6 |
image_url | string | ||
end_image_url | string | ||
image_urls | array | maks. 9 | |
video_urls | array | maks. 3 | |
audio_urls | array | maks. 3 |
Tę listę w JSON-ie dostaniesz z GET /v1/models/minimax-h3.























