tài liệu
API

Video và âm nhạc

Markdown

Tạo video và âm nhạc: yêu cầu tạo một tác vụ, kết quả được lấy bằng mã định danh của tác vụ đó.

Hướng dẫn đầy đủ
POSThttps://api.ailoot.ai/v1/videos
Video và âm nhạc
# Lưu lại Request ID: bộ phận hỗ trợ dùng mã này để tìm yêu cầu của bạn.
# Chỉ tạo tác vụ một lần; vòng lặp bên dưới chỉ đọc trạng thái của tác vụ.
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":"một hồ nước yên ả","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=""
# Vòng lặp này chỉ đọc tác vụ ban đầu. Nó không bao giờ gửi lại yêu cầu tạo tác vụ.
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 (trạng thái vẫn là in_progress): kết quả đang được kiểm tra. Dừng lại; tuyệt đối không tạo lại tác vụ.
  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 hoặc bất kỳ trạng thái nào khác: hiển thị trạng thái rồi dừng lại. Tuyệt đối không tạo lại tác vụ.
    *) 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
# Nếu hết thời gian chờ khi tạo tác vụ, hãy kiểm tra Request ID trong lịch sử sử dụng trước khi chạy lại tập lệnh này.
Phản hồi · rút gọn
// Mã tác vụ nằm trong trường id hoặc request_id
{ "id": "…", … }

// Định dạng phụ thuộc vào mô hình: hãy lấy nguyên mã
// từ phản hồi tạo tác vụ.

Xác thực

  • Authorizationheaderbắt buộc

    Khóa có dạng Bearer sk-…. Cũng có thể dùng các header x-api-key hoặc x-goog-api-key.

Video: nội dung yêu cầu

  • modelstringbắt buộc

    Mô hình video: 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.

  • promptstringbắt buộc

    Mô tả video.

  • duration / secondsinteger / stringkhông bắt buộc

    Tùy theo họ mô hình: Grok 1–15 giây, MiniMax 6/10 ở 768P hoặc 6 ở 1080P, HappyHorse 3–15; Google Omni 4/6/8/10. Không chuyển trường của họ mô hình này sang họ khác.

  • resolution / sizestringkhông bắt buộc

    Grok: 480p/720p/1080p (1080p ở video-1.5), hoặc size 1280x720/720x1280/1920x1080/1080x1920. MiniMax: 768P/1080P. HappyHorse: 480P/720P/1080P. Google Omni: 360p/720p.

  • image / first_frame_image / image_urlsstring / arraykhông bắt buộc

    Các trường ảnh đầu vào phụ thuộc vào họ mô hình và chế độ. MiniMax Fast yêu cầu first_frame_image. HappyHorse t2v — không có images, i2v — đúng một ảnh, không có ratio, r2v — 1–9 ảnh.

Phản hồi chứa mã định danh của tác vụ (trường id hoặc request_id). Hãy dùng nguyên giá trị đó, không phân tích: định dạng phụ thuộc vào mô hình. Trạng thái và tệp đã hoàn thành:

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

Các địa chỉ này cũng hoạt động với tiền tố /v1/videos/generations/{id}. Trạng thái của tác vụ đã hoàn thành và tập hợp trường trong phản hồi phụ thuộc vào mô hình — hãy căn cứ vào trường trạng thái và lấy tệp qua /content.

Tạo → trạng thái → tải xuống

Lưu phản hồi khi tạo và Request ID của phản hồi đó. Với MiniMax/HappyHorse, trạng thái hoàn thành là status: completed, phản hồi chứa content_url, data[] và usage. Với Grok là status: done với video.url. Google Omni trả về 202 queued, sau đó là in_progress với Retry-After, completed hoặc partial/content_revoked. Không coi mọi phản hồi 200 là video đã hoàn thành. Nếu phản hồi trạng thái có result_pending_check: true (status đồng thời in_progress), kết quả đang được kiểm tra thêm. Không tạo lại tác vụ — hãy kiểm tra sau qua GET /v1/videos/{id} hoặc liên hệ hỗ trợ kèm Request ID.

/content có thể trả trực tiếp MP4 hoặc redirect đến tệp có URL đã ký. Nếu phản hồi chứa nhiều kết quả trong data[], hãy lưu từng kết quả: mọi kết quả đã bàn giao đều được tính phí. Không thể hủy hoặc xóa tác vụ video qua API. Xóa tệp đã hoàn thành sẽ đóng quyền truy cập tệp, nhưng không hủy quá trình tạo.

Phí tính theo số giây của video đã hoàn thành ở độ phân giải đã chọn hoặc theo video, như ghi trong danh mục. Toàn bộ chi phí được giữ trước khi tạo tác vụ.

Âm nhạc

POSThttps://api.ailoot.ai/v1/music/generations
  • modelstringbắt buộc

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

  • promptstringbắt buộc

    Mô tả bản nhạc: thể loại, nhạc cụ, tâm trạng.

Trong phản hồi data[] — các liên kết đến clip đã hoàn thành. Một yêu cầu có thể trả về nhiều clip; mỗi clip đã bàn giao đều được tính phí.

Còn câu hỏi? Hãy gửi Request ID và mô tả — chúng tôi sẽ giúp tìm hiểu.Liên hệ hỗ trợ