MiniMax-Hailuo-2.3
MiniMax Hailuo 2.3 可根據文字或起始圖片建立影片,並控制動作及運鏡。可選六秒 768P 或 1080P,或十秒 768P,適合可檢查及剪輯的角色演出、風格化場景與產品鏡頭。
- Ailoot · 影片
POST /v1/videos/generationsMiniMax-Hailuo-2.3 - Ailoot Ultra · 影片
POST /v1/videosMiniMax-Hailuo-2.3
關於模型
此說明介紹模型的能力。Ailoot 可用的輸入、輸出與選項,依所選方法列於下方。
MiniMax Hailuo 2.3 是提供文字轉影片及圖片轉影片模式的影片生成模型。它以 Hailuo 02 為基礎,著重身體動作、視覺風格、角色細微表情,以及對動作指示的回應。提供文字場景即可從頭建立鏡頭,也可用起始圖片確立開場畫面,再描述接續動態。
肢體演出是此版本的主要改善領域之一。Hailuo 2.3 旨在讓身體動作更流暢、可控,包括攝影機移動中的場景。加入裝飾細節前,請先規劃重要動作。角色拿起物件、轉向另一個人或穿越房間,都是可供鏡頭評估的可見事件。先決定哪個動作承載故事,再讓周邊指示與之保持一致。
風格化是另一重點。模型支援動漫與插畫,以及水墨畫、遊戲 CG 等風格。請描述所需視覺處理,並讓外觀與場景一致。若起始圖片已確立繪畫風格,文字應引導動畫,而非再引入互相競爭的角色設計描述。請檢查整段短片,確認這種處理在動作中仍清楚可辨。
模型也著重臉部演出及細微表情變化。角色鏡頭應圍繞重要反應準備,例如注意到物件、產生好奇,或以淡淡微笑回應。近景較容易評估變化,大量手勢序列則可能分散注意。請檢查反應前、中、後的臉部,不要只判斷一張代表性的靜態影格。
物件動態適合以產品為中心的場景。一份原創簡述可以讓小陶瓷花瓶在暖色側光中旋轉,攝影機逐漸靠近。請指出必須維持可辨識的特性,例如輪廓、瓶口及表面質感。檢查它們在動作中的狀態,因為氣氛可信不代表產品畫面忠實。
文字轉影片的必要描述最多 2,000 個字元。請以連貫順序交代主體、動作、場景與視覺風格。圖片轉影片需要起始影格圖片,可選填最多 2,000 個字元的描述。圖片固定開場構圖,因此要求動作前,請先準備主體與畫框。手臂、物件或角色需要移動之處,應保留可見空間。
起始圖片接受 JPG、JPEG、PNG 或 WebP,必須小於 20 MB、短邊大於 300 像素,長寬比介於 2:5 與 5:2。可透過公開圖片 URL 或 Base64 資料 URL 提供。請選擇清楚開場圖片,不要依賴動畫修復被遮擋的臉部或已遭裁切的動作。
Hailuo 2.3 以每秒 24 格生成。六秒鏡頭可用 768P 或 1080P,十秒鏡頭使用 768P。預設為六秒及 768P。請依想看見的動作選擇長度:簡短反應適合短鏡頭,較慢動作則需更多時間。將短片放入剪輯時,請讀取完成結果的實際寬高,因為解析度名稱不足以完整決定構圖。
攝影機指示可使用方括號指令。可用控制涵蓋橫向移動、水平搖攝、推近、垂直升降、俯仰、變焦、晃動、追蹤與靜態鏡頭。像 [Push in] 的指令可引導推近;同一括號內的一組指令同時作用,依序放置的指令則描述動作序列。MiniMax 建議同時最多三個指令。運鏡應與主體動作相容,讓主要事件容易理解。
自動提示詞最佳化預設啟用,也可停用,以更直接控制提供的文字。最佳化啟用時,選用的快速前處理可縮短最佳化時間;此設定與選擇 Hailuo 2.3 Fast 模型不同。標準 Hailuo 2.3 支援兩種創作模式,Fast 則是獨立的圖片轉影片版本。請依專案從純文字或現有影格開始,選擇版本。
生成流程回傳非同步工作識別碼,接著回報準備、排隊、處理、成功或失敗。成功時,結果提供檔案識別碼及實際影片尺寸,再擷取完成影片下載。請在下載位址有效期間保存短片。原廠目前影片下載參考文件列出的下載 URL 有效期為一小時。製作剪輯段落時,請將每個鏡頭與提示詞、起始圖片一併保存,讓所選創意方向在修訂中可追溯。
請在保存的短片中檢查動作、物理連續性、臉部或產品細節、視覺風格及攝影機行為。先觀看整段鏡頭,再檢查與其他素材銜接的開頭及結尾。若請求包含太多互相競爭的動態,請簡化主要動作;若開場設計不清楚,則改善起始圖片。選出能傳達預期事件的鏡頭,再於剪輯流程加入旁白、標題與轉場。
Ailoot · 影片 POST /v1/videos/generations MiniMax-Hailuo-2.3
MiniMax-Hailuo-2.3入門
MiniMax Hailuo 2.3 可根據文字或起始圖片建立影片,並控制動作及運鏡。可選六秒 768P 或 1080P,或十秒 768P,適合可檢查及剪輯的角色演出、風格化場景與產品鏡頭。
- 接受的輸入
- 文字 · 圖片
- 結果
- 影片
Ailoot 可用 · 輸入與方法
Ailoot · 影片 POST /v1/videos/generations
- 輸入
text,image- 輸出
video- 輸出格式
- mp4
| 欄位 | 類型 | 要求 | 值與限制 | 預設值 |
|---|---|---|---|---|
欄位model | 類型string | 要求必填 | 值與限制 MiniMax-Hailuo-2.3 | 預設值— |
欄位prompt | 類型string | 要求必填 | 值與限制 長度下限: 1 長度上限: 2,000 單位: Unicode 字元 | 預設值— |
欄位duration | 類型integer | 要求選填 | 值與限制 6, 10 條件: 10 秒需使用 768P 單位: 秒 | 預設值6 |
欄位resolution | 類型string | 要求選填 | 值與限制 768P, 1080P 條件: 1080P 要求 6 秒 | 預設值768P |
欄位first_frame_image | 類型https_url|data_image_url | 要求選填 | 值與限制 解碼後位元組數上限: 20,971,520 MIME 類型: image/jpeg, image/png, image/webp 尺寸下限(不含下限值): 300 長寬比範圍: 2:5, 5:2 | 預設值— |
欄位prompt_optimizer | 類型boolean | 要求選填 | 值與限制 | 預設值— |
欄位fast_pretreatment | 類型boolean | 要求選填 | 值與限制 | 預設值— |
輸入素材組合
圖片生成影片 · 必填: prompt, first_frame_image
文字生成影片 · 必填: prompt
方法參數與生命週期
| 參數 | 規格 |
|---|---|
參數material_types | 規格text, image |
參數required | 規格null |
參數optional_controls | 規格null |
生命週期: submit_once_poll_original
GET /v1/videos/{request_id}
GET /v1/videos/generations/{request_id}
GET /v1/videos/{request_id}/content
GET /v1/videos/generations/{request_id}/content
方法結構與 ID 均為精確值;供應商能力與准入狀態分開。
方案
Ailoot 方法費率
POST /v1/videos/generations- 輸出
- US$0.28 每部 768p、6 秒影片
Ailoot 會在請求前預留估算金額。取得結果後,依實測用量結算最終費用。串流結算採用最終用量紀錄。預留金額與結算的運作方式 →
參考費率詳情
模型層級的參考費率表不會變更方法選擇、報價或費用。實際計費採用所選 Ailoot 方法的費率。
MiniMax-Hailuo-2.3
各設定的價格
| 設定 | 計費條件 | 費用 |
|---|---|---|
| 設定MiniMax-Hailuo-2.3 · 預設設定 | 計費條件預設設定 | 費用 輸入 · 輸入 US$0.00 每次呼叫 輸出 · 輸出 US$0.60 每次呼叫 |
MiniMax-Hailuo-2.3
各設定的價格
| 設定 | 計費條件 | 費用 |
|---|---|---|
| 設定MiniMax-Hailuo-2.3 · 預設設定 | 計費條件預設設定 | 費用 輸入 · 輸入 US$0.00 每次呼叫 輸出 · 輸出 US$1.20 每次呼叫 |
MiniMax-Hailuo-2.3
各設定的價格
| 設定 | 計費條件 | 費用 |
|---|---|---|
| 設定MiniMax-Hailuo-2.3 · 預設設定 | 計費條件預設設定 | 費用 輸入 · 輸入 US$0.00 每次呼叫 輸出 · 輸出 US$1.20 每次呼叫 |
請求範例
Ailoot · 影片
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
curl https://api.ailoot.ai/v1/videos/generations \
-H "Authorization: Bearer $AILOOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "MiniMax-Hailuo-2.3", "prompt": "A person walks slowly through a quiet garden as the camera tracks from the side.", "duration": 6, "resolution": "768P"}'接收並儲存結果
Ailoot · 影片
mp4
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
查看工作狀態
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_VIDEO_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_VIDEO_ID
video_id=$(python3 -c 'import os, urllib.parse; print(urllib.parse.quote(os.environ["AILOOT_VIDEO_ID"], safe=""))') || exit 1
curl "https://api.ailoot.ai/v1/videos/generations/$video_id" \
-H "Authorization: Bearer $AILOOT_API_KEY"其他內容讀取方式
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_VIDEO_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_VIDEO_ID
video_id=$(python3 -c 'import os, urllib.parse; print(urllib.parse.quote(os.environ["AILOOT_VIDEO_ID"], safe=""))') || exit 1
curl "https://api.ailoot.ai/v1/videos/generations/$video_id/content" \
-H "Authorization: Bearer $AILOOT_API_KEY" \
--output video.mp4保留所有已完成的結果
請儲存每部已完成的影片或傳回的檔案,並從實際傳回的每個素材 URL 取得素材。
請保留每個回傳的資料項目/輸出索引。content_url 僅代表第一個輸出;請取得每個實際內容路徑/資產。不帶 index 的 GET 內容請求並不代表所有輸出。
需要檢查原始回應時
請讀取現有的原始作業;切勿重新提交傳送結果不明的請求。
回應欄位
| 欄位 | 類型 |
|---|---|
欄位id | 類型string |
欄位object | 類型string |
欄位model | 類型string |
欄位status | 類型string |
欄位content_url | 類型signed URL |
欄位data[] | 類型signed URL |
欄位usage | 類型object |
欄位result_pending_check | 類型boolean |
錯誤與後續步驟
| 回應 | 條件 | 下一步 |
|---|---|---|
回應400 · invalid_request_error | 條件必要欄位、素材表示方式或參數值無效 | 下一步提出新的建立請求前,先修正指定欄位。 |
回應409 · video_not_ready | 條件原始結果內容尚無法取得 | 下一步請輪詢原始回傳的 ID,並遵守 Retry-After。 |
回應server_error | 條件回傳的回應表示該作業或結果需要檢查 | 下一步保留原始回傳的作業/任務 ID、請求標頭與回應;繼續以支援的方式讀取該原始作業。請勿重新提交建立請求。 |
別名
模型別名
Ailoot MiniMax-Hailuo-2.3
Ailoot Ultra MiniMax-Hailuo-2.3
方法路徑別名
/v1/videos/generations, /videos, /videos/generations
相關呼叫用 ID
Ailoot Ultra · 影片 POST /v1/videos MiniMax-Hailuo-2.3
MiniMax-Hailuo-2.3入門
MiniMax Hailuo 2.3 可根據文字或起始圖片建立影片,並控制動作及運鏡。可選六秒 768P 或 1080P,或十秒 768P,適合可檢查及剪輯的角色演出、風格化場景與產品鏡頭。
- 接受的輸入
- 文字
- 結果
- 影片
Ailoot 可用 · 輸入與方法
Ailoot Ultra · 影片 POST /v1/videos
- 輸入
text- 輸出
video- 輸出格式
- mp4
- 輸出數量
- 最多 1 輸出
| 欄位 | 類型 | 要求 | 值與限制 | 預設值 |
|---|---|---|---|---|
欄位model | 類型string | 要求必填 | 值與限制 MiniMax-Hailuo-2.3 | 預設值— |
欄位prompt | 類型string | 要求必填 | 值與限制 長度下限: 1 長度上限: 2,000 條件: 768P:最多 2000 個 Unicode 碼位。1080P:少於 200 個 Unicode 碼位(最多 199 個)。提示詞必須包含非空白文字。 單位: Unicode 字元 | 預設值— |
欄位duration | 類型integer | 要求必填 | 值與限制 6 單位: 秒 | 預設值— |
欄位resolution | 類型string | 要求必填 | 值與限制 768P, 1080P | 預設值— |
輸入素材組合
文字生成影片 · 必填: prompt
方法參數與生命週期
| 參數 | 規格 |
|---|---|
參數content_type | 規格application/json |
參數required | 規格model, prompt, duration, resolution |
參數other_options | 規格false |
參數duration | 規格6 |
參數resolution | 規格768P, 1080P |
參數prompt_max_characters | 規格2000 |
參數material_types | 規格text |
參數prompt_max_characters_by_resolution | 規格{"768P":2000,"1080P":199} |
方法別名: /v1/videos/generations, /videos, /videos/generations
生命週期: submit_once_poll_original
GET /v1/videos/{request_id}
GET /v1/videos/generations/{request_id}
GET /v1/videos/{request_id}/content
GET /v1/videos/generations/{request_id}/content
僅建立一次,並儲存回傳的 ID。
請輪詢原始狀態,並保留每個已完成的資產及其長度。
方案
費率資訊不會增加請求選項。支援的參數列於所選方法中。
- 快速模式
- 未指定 選取快速模式時
- flex 模式
- 未指定 選取 flex 模式時
- 最高推理強度
- 未指定 最高推理強度採用 default 調整值時
Ailoot 費率
各設定的價格
請逐一核對各項費用與所列條件。每組互為替代選項的設定只套用一種費率。
| 設定 | 費率表 | 片段名目時長(秒) | 解析度 | 計費單位 | 費用 |
|---|---|---|---|---|---|
| 設定基礎 token 費率 | 費率表基本費率 | 片段名目時長(秒)— | 解析度— | 計費單位— | 費用 輸入 · 輸入 Token — / 1K Token 輸出 · 輸出 Token — / 1K Token 輸入 · 讀取快取 — / 1K Token 輸入 · 寫入快取 — / 1K Token 輸入 · 寫入快取,1 小時 — / 1K Token |
| 設定Ultra | 費率表— | 片段名目時長(秒)6 | 解析度1080P | 計費單位每個標稱 6s 輸出片段 | 費用 輸出 · 標稱 6s 輸出片段 $1.2 每個標稱 6s 輸出片段 |
| 設定Ultra | 費率表— | 片段名目時長(秒)6 | 解析度768P | 計費單位每個標稱 6s 輸出片段 | 費用 輸出 · 標稱 6s 輸出片段 $0.6 每個標稱 6s 輸出片段 |
Ailoot 會在請求前預留估算金額。取得結果後,依實測用量結算最終費用。串流結算採用最終用量紀錄。預留金額與結算的運作方式 →
參考費率詳情
模型層級的參考費率表不會變更方法選擇、報價或費用。實際計費採用所選 Ailoot 方法的費率。
MiniMax-Hailuo-2.3
各設定的價格
| 設定 | 計費條件 | 費用 |
|---|---|---|
| 設定MiniMax-Hailuo-2.3 · 預設設定 | 計費條件預設設定 | 費用 輸入 · 輸入 US$0.00 每次呼叫 輸出 · 輸出 US$0.60 每次呼叫 |
MiniMax-Hailuo-2.3
各設定的價格
| 設定 | 計費條件 | 費用 |
|---|---|---|
| 設定MiniMax-Hailuo-2.3 · 預設設定 | 計費條件預設設定 | 費用 輸入 · 輸入 US$0.00 每次呼叫 輸出 · 輸出 US$1.20 每次呼叫 |
MiniMax-Hailuo-2.3
各設定的價格
| 設定 | 計費條件 | 費用 |
|---|---|---|
| 設定MiniMax-Hailuo-2.3 · 預設設定 | 計費條件預設設定 | 費用 輸入 · 輸入 US$0.00 每次呼叫 輸出 · 輸出 US$1.20 每次呼叫 |
請求範例
Ailoot Ultra · 影片
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "MiniMax-Hailuo-2.3", "prompt": "A cat in a spacesuit walking on the Moon", "duration": 6, "resolution": "768P"}')
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "MiniMax-Hailuo-2.3", "prompt": "A cat in a spacesuit walking on the Moon", "duration": 6, "resolution": "1080P"}')
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
接收並儲存結果
Ailoot Ultra · 影片
mp4
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
查看工作狀態
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_OPERATION_ID
operation_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_OPERATION_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/videos/$operation_id" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o status.json
python3 - <<'PY_STATUS'
import json
from pathlib import Path
r=json.loads(Path("status.json").read_text())
print(json.dumps(r))
if r.get("status")=="completed":
for x in r.get("data",[]):print(x)
PY_STATUS
儲存所有已完成的素材
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}"
export AILOOT_STATUS_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
from urllib.parse import urlsplit,urljoin
f=Path(os.environ["AILOOT_STATUS_FILE"])
if not f.is_file():raise SystemExit("Choose the actual completed status file")
r=json.loads(f.read_text())
if r.get("status")!="completed" or not isinstance(r.get("data"),list) or not r["data"]:raise SystemExit("Wait for a completed status with asset paths")
urls=[]
for x in r["data"]:
if not isinstance(x,str) or "\n" in x or "\r" in x:raise SystemExit("Invalid asset path")
u=urljoin("https://api.ailoot.ai",x)
z=urlsplit(u)
if z.scheme!="https" or z.netloc!="api.ailoot.ai" or z.username or z.password:raise SystemExit("Use the actual Ailoot asset paths from status")
urls.append(u)
Path("asset-urls.txt").write_text("\n".join(urls)+"\n")
PY_REQUEST
index=0
while IFS= read -r asset_url; do
curl --fail-with-body --silent --show-error "$asset_url" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o "video-${index}.mp4"
index=$((index + 1))
done < asset-urls.txt
其他內容讀取方式
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_OPERATION_ID
operation_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_OPERATION_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/videos/$operation_id/content" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o video.mp4
保留所有已完成的結果
請儲存每部已完成的影片或傳回的檔案,並從實際傳回的每個素材 URL 取得素材。
已完成的 data[] 內含所有自有的簽署內容 URL。請取得每個回傳的 URL,或使用內容端點,將 index 設為實際的輸出索引。原始作業失敗時可能回傳 charge_pending_check;請查核該原始作業,切勿再次建立。
需要檢查原始回應時
請讀取現有的原始作業;切勿重新提交傳送結果不明的請求。
輸出數量上限: 1.
回應欄位
| 欄位 | 類型 |
|---|---|
欄位id | 類型string |
欄位object | 類型string |
欄位model | 類型string |
欄位status | 類型string |
欄位data[] | 類型signed content URL |
欄位charge_pending_check | 類型boolean |
欄位error.code | 類型string |
欄位error.message | 類型string |
欄位requested_nominal_duration_seconds | 類型integer |
欄位measured_duration_seconds | 類型number |
欄位width | 類型integer |
欄位height | 類型integer |
錯誤與後續步驟
| 回應 | 條件 | 下一步 |
|---|---|---|
回應400 · invalid_request_error | 條件必要欄位、素材表示方式或參數值無效 | 下一步提出新的建立請求前,先修正指定欄位。 |
回應409 · video_not_ready | 條件原始結果內容尚無法取得 | 下一步請輪詢原始回傳的 ID,並遵守 Retry-After。 |
回應server_error | 條件回傳的回應表示該作業或結果需要檢查 | 下一步保留原始回傳的作業/任務 ID、請求標頭與回應;繼續以支援的方式讀取該原始作業。請勿重新提交建立請求。 |
別名
模型別名
Ailoot MiniMax-Hailuo-2.3
Ailoot Ultra MiniMax-Hailuo-2.3
方法路徑別名
/v1/videos/generations, /videos, /videos/generations
相關呼叫用 ID
FAQ · MiniMax-Hailuo-2.3
- 可以使用哪些輸入與結果?
POST /v1/videos/generations·MiniMax-Hailuo-2.3:text,image→videoPOST /v1/videos·MiniMax-Hailuo-2.3:text→video- 請求使用哪些欄位?
POST /v1/videos/generations·MiniMax-Hailuo-2.3:model,prompt,duration,resolution,first_frame_image,prompt_optimizer,fast_pretreatmentPOST /v1/videos·MiniMax-Hailuo-2.3:model,prompt,duration,resolution- 適用哪些限制?
POST /v1/videos/generations·MiniMax-Hailuo-2.3:prompt.maximum_length:2000POST /v1/videos·MiniMax-Hailuo-2.3:prompt.maximum_length:2000