Source: https://ailoot.ai/docs/vi/api/video-music/
Canonical: https://ailoot.ai/docs/vi/api/video-music/
Language: vi

[API](https://ailoot.ai/docs/vi/) 

# Video và âm nhạc

[Markdown](https://ailoot.ai/docs/vi/api/video-music/index.md)

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ụ đó.

POST`https://api.ailoot.ai/v1/videos`

Video và âm nhạc

```bash
# 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.
```

```bash
curl https://api.ailoot.ai/v1/music/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "google/lyria", "prompt": "Nhạc piano và cello nhẹ nhàng, không có giọng hát"}' 
```

Phản hồi · rút gọn

```json
// 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

| Tham số | Kiểu | Bắt buộc | Mô tả |
| --- | --- | --- | --- |
| `Authorization` | header | bắ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

| Tham số | Kiểu | Bắt buộc | Mô tả |
| --- | --- | --- | --- |
| `model` | string | bắ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`. |
| `prompt` | string | bắt buộc | Mô tả video. |
| `duration / seconds` | integer / string | khô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 / size` | string | khô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_urls` | string / array | khô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:

GET`https://api.ailoot.ai/v1/videos/{id}`

GET`https://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

POST`https://api.ailoot.ai/v1/music/generations`

| Tham số | Kiểu | Bắt buộc | Mô tả |
| --- | --- | --- | --- |
| `model` | string | bắt buộc | `google/lyria`, `google/lyria-3-clip-preview`. |
| `prompt` | string | bắ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í.

Không gửi lại yêu cầu video hoặc âm nhạc nếu kết nối bị ngắt: tác vụ có thể đã bắt đầu. Trước tiên hãy kiểm tra trạng thái bằng mã định danh hoặc liên hệ hỗ trợ kèm Request ID.

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ợ](mailto:support@ailoot.ai)

## Ailoot · Công ty và danh mục dự án của công ty





Ailoot dựa trên kinh nghiệm vận hành tích lũy, cơ sở khách hàng lớn, dịch vụ ổn định và việc kiểm soát KPI liên tục.





Công ty và danh mục dự án của công ty: hàng triệu khách hàng; doanh số hàng tỷ mỗi tháng.





Ailoot áp dụng kinh nghiệm vận hành này để cung cấp quyền truy cập API vào các tính năng AI trong sản phẩm của khách hàng, tác tử, ứng dụng và quy trình tự động hóa.
