文件
API

影片與音樂

Markdown

生成影片與音樂:請求會建立一項任務,再使用任務識別碼取得結果。

完整指南
POSThttps://api.ailoot.ai/v1/videos
影片與音樂
# 保留 Request ID:客服會用它查找您的請求。
# 工作只建立一次;下方迴圈僅讀取其狀態。
curl --fail-with-body --max-time 120 -D video-create-headers-v1.txt \
  https://api.ailoot.ai/v1/videos \
  -H "Authorization: Bearer $AILOOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"grok-imagine-video-1.5","prompt":"平靜的湖泊","seconds":"8","size":"1280x720"}' \
  -o video-create-v1.json || exit 1
VIDEO_ID=$(jq -er '.id // .request_id' video-create-v1.json) || exit 1
VIDEO_STATUS=""
# 此迴圈只讀取原始工作,絕不重新傳送建立請求。
for ATTEMPT in $(seq 1 60); do
  curl --fail-with-body --max-time 30 \
    "https://api.ailoot.ai/v1/videos/$VIDEO_ID" \
    -H "Authorization: Bearer $AILOOT_API_KEY" \
    -o video-status-v1.json || exit 1
  VIDEO_STATUS=$(jq -r '.status // empty' video-status-v1.json)
  # result_pending_check: true (status 維持 in_progress):結果正在檢查中。請停止;不可再次建立工作。
  if jq -e '.result_pending_check == true' video-status-v1.json >/dev/null; then
    cat video-status-v1.json
    echo "The result is being checked. Do not create the job again: check GET /v1/videos/$VIDEO_ID later or contact support with the Request ID." >&2
    exit 1
  fi
  case "$VIDEO_STATUS" in
    done|completed) break ;;
    queued|in_progress|pending|processing) sleep 5 ;;
    # failed 或其他任何狀態:顯示狀態並停止。不可再次建立工作。
    *) cat video-status-v1.json; exit 1 ;;
  esac
done
case "$VIDEO_STATUS" in
  done|completed) ;;
  *) echo "The job is not finished yet (status: ${VIDEO_STATUS:-none}). Check it later: GET /v1/videos/$VIDEO_ID" >&2; exit 1 ;;
esac
curl --fail-with-body --max-time 120 -L --max-redirs 3 \
  "https://api.ailoot.ai/v1/videos/$VIDEO_ID/content" \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o video-v1.mp4
# 建立請求逾時後,請先在用量紀錄中查詢 Request ID,再執行此指令碼。
回應 · 節錄
// 工作識別碼位於 id 或 request_id 欄位
{ "id": "…", … }

// 格式依模型而異:請直接使用
// 建立回應中原樣返回的識別碼。

身分驗證

  • Authorizationheader必填

    金鑰格式為Bearer sk-…。也可使用標頭x-api-key或x-goog-api-key。

影片:請求主體

  • modelstring必填

    影片模型:google/omni-1.1-flash,grok-imagine-video,happyhorse-1.1-t2v,MiniMax-Hailuo-2.3,grok-imagine-video-1.5,happyhorse-1.1-r2v,grok-imagine-video-1.5-preview,happyhorse-1.1-i2v。

  • promptstring必填

    影片描述。

  • duration / secondsinteger / string選填

    依模型系列而異:Grok 為 1–15 秒;MiniMax 在 768P 時為 6/10 秒,在 1080P 時為 6 秒;HappyHorse 為 3–15 秒;Google Omni 為 4/6/8/10 秒。請勿將某個系列的欄位套用到其他系列。

  • resolution / sizestring選填

    Grok: 480p/720p/1080p (video-1.5 支援 1080p),或使用 size 1280x720/720x1280/1920x1080/1080x1920。MiniMax: 768P/1080P。HappyHorse: 480P/720P/1080P。Google Omni: 360p/720p。

  • image / first_frame_image / image_urlsstring / array選填

    來源影像的欄位依模型系列與模式而異。MiniMax Fast 必須提供 first_frame_image。HappyHorse t2v 不使用 images;i2v 必須恰好提供一張影像,且不使用 ratio;r2v 使用 1–9 張影像。

回應包含任務識別碼 (欄位id或request_id). 請直接使用,不要解析其內容,因為格式依模型而異。取得狀態與完成的檔案:

GEThttps://api.ailoot.ai/v1/videos/{id}
GEThttps://api.ailoot.ai/v1/videos/{id}/content

相同位址也可搭配此前綴使用:/v1/videos/generations/{id}。已完成任務的狀態及回應欄位依模型而異,請依狀態欄位判斷,並透過此路徑取得檔案:/content。

建立 → 狀態 → 下載

請保存建立任務的回應及其 Request ID。MiniMax/HappyHorse 的完成狀態為status: completed,回應包含content_url,data[]與usage。Grok 則為status: done包含video.url。Google Omni 會傳回 202 queued,接著是附帶 Retry-After 的 in_progress、completed,或 partial/content_revoked。請勿將任何 200 回應都視為影片已完成。若狀態回應中包含result_pending_check: true (status同時in_progress),表示結果仍在確認中。請勿重新建立任務,請稍後透過 GET /v1/videos/{id} 檢查,或提供 Request ID 聯絡客服。

/content可直接傳回 MP4,或重新導向至帶有簽章的檔案連結。若回應中有多個結果,列於data[],請保存每個結果,因為所有已交付的結果都會計費。無法透過 API 取消或刪除影片任務。刪除已完成的檔案會關閉存取權限,但不會取消生成。

依目錄所示,按所選解析度之完成影片的秒數,或按每部影片計費。建立任務時會保留完整費用。

音樂

POSThttps://api.ailoot.ai/v1/music/generations
  • modelstring必填

    google/lyria,google/lyria-3-clip-preview。

  • promptstring必填

    曲目描述:曲風、樂器與氛圍。

回應中的data[] —完成片段的連結。模型可能在同一次請求中傳回多個片段,每個已交付的片段都會計費。

還有疑問嗎?請提供 Request ID與問題描述,我們會協助釐清。聯絡支援