MiniMax H3
Generuj w MiniMax H3 4–15-sekundowe klipy z dźwiękiem w 768P lub 2K: tekst na wideo, pierwsza i ostatnia klatka oraz referencje na wideo, w oficjalnym formacie żądania MiniMax, z dostarczeniem przez zadanie.
MiniMax H3 (Hailuo 03) to multimodalny model wideo od MiniMax. Jedno żądanie tworzy obraz i dźwięk razem: 4–15-sekundowy klip w 768P lub 2K z własnymi dialogami, tłem dźwiękowym i efektami. Treść żądania ma oficjalny format MiniMax z ID modelu minimax-h3. Wyślij żądanie, zachowaj zwrócony identyfikator zadania i odczytaj gotowe wideo z tego zadania. Klatki i referencje przekazujesz jako adresy URL.
ID modeli
| ID modelu | Dane wejściowe | Rozdzielczości | Długość |
|---|---|---|---|
minimax-h3 | tekst, pierwsza i ostatnia klatka, obrazy, wideo i audio referencyjne | 768P, 2K | 4–15 sekund |
Aktualne ceny znajdziesz na stronie modelu.
Krótki przykład
curl https://api.seedrouter.ai/v1/videos/generations \
-H "Authorization: Bearer $SEEDROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "minimax-h3",
"content": [
{"type": "text", "text": "A small sailboat glides across a calm turquoise bay at sunrise, seagulls in the distance, the sound of water and wind. No text, no logos."}
],
"resolution": "768P",
"duration": 5,
"ratio": "16:9"
}'Punkt końcowy
POST https://api.seedrouter.ai/v1/videos/generations| Nagłówek | Wartość |
|---|---|
| Authorization | Bearer YOUR_API_KEY |
| Content-Type | application/json |
Odpowiedź to zadanie ({"id": "task_...", "status": "processing"}), a nie gotowe wideo. Wynik odczytasz, odpytując GET /v1/tasks/{task_id}. Klucze API trzymaj w kodzie po stronie serwera.
Parametry
| Pole | Typ | Domyślnie | Uwagi |
|---|---|---|---|
model | string | wymagane | minimax-h3 |
content | array | wymagane | Prompt i ewentualne media jako elementy opisane poniżej. Dokładnie jeden niepusty element text. |
resolution | enum | wymagane | 768P lub 2K. |
duration | integer | wymagane | Dowolna liczba całkowita od 4 do 15 sekund. |
ratio | enum | zależnie od danych wejściowych | adaptive, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. Wymagane przy samym tekście, gdzie adaptive nie jest akceptowane. |
content_filter | boolean | true | Filtr treści SeedRouter, opisany poniżej. Nie jest przesyłany do modelu. |
Schemat jest ścisły: nieznane pola są odrzucane, a nie ignorowane. callback_url nie jest dostępne; zamiast tego odpytuj zadanie. extra należy do MiniMax-H3-Max i nie jest akceptowane w tym modelu.
Elementy content
type | Element | role |
|---|---|---|
text | {"type": "text", "text": "..."}, do 7000 znaków | brak |
image_url | {"type": "image_url", "image_url": {"url": "https://..."}, "role": "..."} | first_frame, last_frame lub reference_image |
video_url | {"type": "video_url", "video_url": {"url": "https://..."}, "role": "reference_video"} | reference_video |
audio_url | {"type": "audio_url", "audio_url": {"url": "https://..."}, "role": "reference_audio"} | reference_audio |
Pojedynczy obraz bez role jest pierwszą klatką. Przy więcej niż jednym obrazie każdy obraz wymaga role.
Tryby
O trybie decydują elementy w content; nie ma pola trybu.
| Tryb | content zawiera | ratio |
|---|---|---|
| Tekst na wideo | jeden element text | wymagane, nie adaptive |
| Obraz na wideo | text oraz obraz first_frame i/lub last_frame | każda wartość jest traktowana jako adaptive: proporcje wyznacza obraz |
| Referencje na wideo | text oraz dowolne połączenie maksymalnie 9 elementów reference_image, 3 reference_video i 3 reference_audio | opcjonalne, domyślnie adaptive |
Klatek i referencji nie można łączyć w jednym żądaniu.
{
"model": "minimax-h3",
"content": [
{"type": "text", "text": "The person in the photo speaks to camera: Follow the wind. Voice follows the reference audio."},
{"type": "image_url", "image_url": {"url": "https://example.com/person.jpg"}, "role": "reference_image"},
{"type": "audio_url", "audio_url": {"url": "https://example.com/voice.mp3"}, "role": "reference_audio"}
],
"resolution": "2K",
"duration": 6
}Dane wejściowe multimediów
Każdy element obrazu, wideo i audio to publiczny adres URL HTTP(S). Dane base64 (data URI) ani identyfikatory mm_file:// nie są przyjmowane: prześlij plik do własnego magazynu i przekaż jego adres URL.
| Dane wejściowe | Format | Limity |
|---|---|---|
| Obraz | JPG, JPEG, PNG, WebP, HEIC, HEIF | Do 30 MB; każdy bok 256–5760 px; szerokość / wysokość 0,4–2,5 |
| Wideo | MP4, MOV (H.264 lub H.265) | Do 50 MB; każde 2–15 sekund, łącznie 15 sekund; każdy bok 256–5760 px; szerokość / wysokość 0,4–2,5; 23,976–60 fps |
| Audio | WAV, MP3 | Do 15 MB; każde 2–15 sekund, łącznie 15 sekund |
Wideo referencyjne są mierzone w chwili przyjęcia żądania; wideo, którego długości nie da się odczytać, jest odrzucane i nic nie jest naliczane. Pozostałe limity są sprawdzane przed generowaniem, a żądanie, które narusza któryś z nich, kończy się niepowodzeniem bez opłat.
Filtr treści
content_filter ma wartość true, dopóki jej nie zmienisz. Przy włączonym filtrze tekst, każdy obraz i trzy klatki każdego wideo referencyjnego (pierwsza, środkowa i ostatnia) są sprawdzane, zanim model zacznie działać. Zablokowane żądanie kończy się niepowodzeniem z kodem 60001 i nie jest naliczane; tak samo żądanie, którego nie da się sprawdzić. Audio referencyjne nie jest sprawdzane. Ustaw content_filter na false, aby pominąć sprawdzanie; Playground na stronie zawsze pozostawia je włączone.
Czynniki wpływające na koszt
Aktualne stawki znajdziesz w sekcji cen modelu. MiniMax H3 jest rozliczany za sekundę wideo według stawki zależnej od rozdzielczości wyjściowej, plus obrazy wejściowe powyżej pierwszych pięciu:
billed seconds = duration + ceil(Σ each reference video's seconds)
extra images = max(0, number of images − 5)
cost = billed seconds × rate per second + extra images × rate per imagePierwsze klatki, ostatnie klatki i obrazy referencyjne liczą się jako obrazy. Audio referencyjne nie jest naliczane. Obie wielkości są znane w chwili przyjęcia żądania, więc zarezerwowana kwota jest kwotą naliczoną. Ostateczne opłaty zobaczysz w historii zużycia swojego konta. Nieudane zadania nie są naliczane.
Schemat odpowiedzi
Wysłanie zwraca zadanie:
{"id": "task_...", "model": "minimax-h3", "status": "processing", "created_at": 1789689600}Pobieranie zadania
GET https://api.seedrouter.ai/v1/tasks/{task_id}Odpytuj co 10–20 sekund, aż status przyjmie wartość completed lub failed. Przekroczenie limitu czasu sieci podczas odpytywania nie oznacza, że generowanie się nie powiodło: zachowaj identyfikator zadania i wznów sprawdzanie. Nie twórz kolejnego zadania, aby sprawdzić postęp.
Zadanie zakończone
{
"id": "task_...",
"model": "minimax-h3",
"status": "completed",
"created_at": 1789689600,
"finished_at": 1789689740,
"output": {
"video_url": "https://static.seedrouter.ai/media/tasks/task_example/0.mp4",
"resolution": "768P",
"ratio": "16:9",
"duration": 5
}
}ratio to proporcje obrazu, w jakich powstał klip, w tym proporcje wybrane dla adaptive. W naszym teście 4-sekundowy klip 768P przy 16:9 wrócił jako MP4 (H.264) w rozdzielczości 1344 × 768 i 24 fps, ze stereofoniczną ścieżką AAC 32 kHz.
Błędy
Żądania odrzucone przed utworzeniem zadania zwracają błąd HTTP wraz z obiektem error i nie są naliczane. Zadanie, które zawiodło po przyjęciu, przy odpytaniu zwraca HTTP 200 z status: "failed" i obiektem error.
Kody, statusy HTTP i wskazówki dotyczące ponawiania znajdziesz we wspólnym katalogu błędów.
{
"id": "task_...",
"model": "minimax-h3",
"status": "failed",
"error": {
"code": 60001,
"message": "the request was blocked by content moderation"
}
}Jeśli limit czasu został przekroczony przy samym wysyłaniu, przed ponownym wysłaniem sprawdź swoje zadania: pierwsze żądanie mogło już zostać przyjęte.
Wskazówki
- Opisuj ujęcie i jego dźwięk razem: obiekt, miejsce, kamerę, światło, dialogi i efekty.
- Wpisz dialog do promptu i dołącz referencyjny klip audio, gdy głos ma za nim podążać.
- Przygotuj wersję roboczą w
768P, a potem wyrenderuj finalne ujęcie w2Ktym samym żądaniem. - Użyj pierwszej i ostatniej klatki, aby kontrolować, gdzie ujęcie się zaczyna i kończy; użyj referencji, aby zachować produkt, osobę lub ruch.
- Dodaj
no text, no logos, aby w kadrze nie pojawiały się wymyślone oznaczenia.
