happyhorse-1.1-t2v
Mô hình tạo video ngắn có âm thanh từ mô tả bằng văn bản. Phù hợp với những cảnh mà chuyển động, bố cục và phong cách hình ảnh được xác định bằng lời.
- Ailoot · Tạo video
POST /v1/videos/generationshappyhorse-1.1-t2v - Ailoot · Tạo video
POST /v1/videos/generationshappyhorse-t2v - Ailoot · Tạo video
POST /v1/videos/generationshappyhorse-t2v-latest
Về mô hình
Mô tả này trình bày khả năng của mô hình. Đầu vào, đầu ra và tùy chọn có trên Ailoot được liệt kê bên dưới cho phương thức đã chọn.
HappyHorse-1.1-T2V là mô hình của Alibaba tạo các cảnh video ngắn từ văn bản. Mô tả xác định nhân vật, hành động, bối cảnh và cách thể hiện hình ảnh; chế độ này không cần ảnh nguồn. Mô hình tạo hình ảnh video và có thể tạo âm thanh đi kèm.
Nhà sản xuất nhấn mạnh khả năng hiểu ý nghĩa của cảnh, dàn dựng đậm chất điện ảnh và chuyển động giàu biểu cảm. Văn bản có thể xác định không khí, hành động của nhân vật, cách các đối tượng hoạt động và diễn biến vật lý. Nhờ đó, có thể xây dựng cảnh quanh diễn biến mong muốn, rồi định hướng thêm bằng ánh sáng, góc nhìn và chuyển động máy quay.
Dàn dựng bằng lời
Yêu cầu là bắt buộc và có thể dùng bất kỳ ngôn ngữ nào. Nội dung có thể dài tối đa 5000 ký tự không phải tiếng Trung hoặc 2500 ký tự tiếng Trung; phần vượt giới hạn bị cắt bỏ. Hành động, môi trường và các chi tiết hình ảnh quan trọng cần được mô tả trong phạm vi này. Cách dàn dựng đó để mô hình có không gian tạo cảnh mới, thay vì cung cấp sẵn khung hình đầu tiên.
Trong chế độ này, văn bản là tư liệu điều khiển chính. Có thể mô tả bằng lời hình dáng cụ thể của nhân vật hoặc đồ vật; việc truyền diện mạo của chúng bằng ảnh riêng thuộc một chế độ khác trong cùng dòng mô hình. Kết quả phụ thuộc vào toàn bộ yêu cầu, vì vậy cùng một hạt giống ngẫu nhiên giúp tạo các biến thể tương tự nhưng không bảo đảm lặp lại chính xác.
Video và âm thanh đi kèm
Với HappyHorse-1.1, thời lượng video được chọn bằng số nguyên từ 3 đến 15 giây. Các mức độ phân giải được hỗ trợ là 480P, 720P và 1080P. Tệp thành phẩm có định dạng MP4 với tốc độ 24 khung hình mỗi giây. Mô hình có thể tạo âm thanh cùng hình ảnh, liên kết phần âm thanh với diễn biến trong cảnh.
Có thể xác định trước hình dạng khung hình. Các tỷ lệ gồm 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21 và 21:9, từ khung hình điện ảnh rộng đến video dọc kéo dài. Độ phân giải, định dạng và thời lượng xác định quy cách của kết quả; văn bản xác định nội dung và chuyển động.
Biến thể này dành cho việc tạo cảnh mới từ ý tưởng diễn đạt bằng lời. Nó phù hợp với một phân cảnh ngắn, ý tưởng hình ảnh hoặc video gợi không khí, khi cách dàn dựng cần được mô tả bằng văn bản.
Ailoot · Tạo video POST /v1/videos/generations happyhorse-1.1-t2v
happyhorse-1.1-t2vhappyhorse-1.1-t2vhappyhorse-t2vhappyhorse-t2v-latest
Bắt đầu
Mô hình tạo video ngắn có âm thanh từ mô tả bằng văn bản. Phù hợp với những cảnh mà chuyển động, bố cục và phong cách hình ảnh được xác định bằng lời.
- Đầu vào được chấp nhận
- Văn bản
- Kết quả
- Video
Có trên Ailoot · đầu vào & phương thức
Ailoot · Tạo video POST /v1/videos/generations
- Đầu vào
text- Đầu ra
video- Định dạng đầu ra
- mp4
| Trường | Loại | Yêu cầu | Giá trị & giới hạn | Mặc định |
|---|---|---|---|---|
Trườngmodel | Loạistring | Yêu cầuBắt buộc | Giá trị & giới hạn happyhorse-1.1-t2v | Mặc định— |
Trườngprompt | Loạistring | Yêu cầuBắt buộc | Giá trị & giới hạn Độ dài tối thiểu: 1 | Mặc định— |
Trườngduration | Loạiinteger | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tối thiểu: 3 Tối đa: 15 Đơn vị: giây | Mặc định5 |
Trườngresolution | Loạistring | Yêu cầuKhông bắt buộc | Giá trị & giới hạn 480P, 720P, 1080P | Mặc định720P |
Trườngratio | Loạistring | Yêu cầuKhông bắt buộc | Giá trị & giới hạn 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | Mặc định16:9 |
Trườngimage_urls | Loạihttps_url|data_image_url[] | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Số mục tối thiểu: 0 Số mục tối đa: 0 Số byte tối đa sau giải mã: 20.971.520 Loại MIME: image/jpeg, image/png, image/webp | Mặc định— |
Tổ hợp tư liệu đầu vào
Văn bản thành video · Bắt buộc: prompt
Tham số phương thức và vòng đời
| Tham số | Hợp đồng |
|---|---|
Tham sốcontent_type | Hợp đồngapplication/json |
Tham sốrequired | Hợp đồngmodel, prompt |
Tham sốmaterial_types | Hợp đồngtext |
Tham sốoptional | Hợp đồngduration, resolution, ratio |
Tham sốduration_integer_range | Hợp đồng3, 15 |
Tham sốdefault_duration | Hợp đồng5 |
Tham sốresolution | Hợp đồng480P, 720P, 1080P |
Tham sốdefault_resolution | Hợp đồng720P |
Tham sốratio | Hợp đồng16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 |
Tham sốratio_must_omit | Hợp đồngfalse |
Tham sốimage_urls | Hợp đồng{"max_count":0} |
Vòng đời: 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
Cấu trúc phương thức và ID là chính xác; khả năng của nhà cung cấp tách biệt với việc cho phép tiếp nhận yêu cầu.
Bảng giá
Mức phí phương thức Ailoot
POST /v1/videos/generations- Đầu ra
- 0,18 US$ mỗi giây ở 1080p
- Đầu ra
- 0,07 US$ mỗi giây ở 480p
- Đầu ra
- 0,14 US$ mỗi giây ở 720p
Ailoot tạm giữ một khoản ước tính trước yêu cầu. Sau khi có kết quả, phí cuối cùng được quyết toán theo mức sử dụng đo được. Việc quyết toán khi truyền luồng dùng bản ghi mức sử dụng cuối cùng. Cách hoạt động của cơ chế tạm giữ và quyết toán →
Ví dụ yêu cầu
Ailoot · Tạo video
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_PROMPT_FILE:?Set your actual UTF-8 scene brief}"
export AILOOT_PROMPT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "happyhorse-1.1-t2v", "prompt": "", "duration": 5, "resolution": "720P", "ratio": "16:9"}')
f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 brief")
p['prompt']=f.read_text(encoding="utf-8")
if not p['prompt'].strip():raise SystemExit("Brief must contain text")
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/generations \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
Nhận và lưu kết quả
Ailoot · Tạo video
mp4
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
Kiểm tra trạng thái tác vụ
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/generations/$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
Lưu tất cả tài nguyên đã hoàn tất
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
Lượt đọc nội dung khác
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/generations/$operation_id/content" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o video.mp4
Lưu tất cả kết quả đã hoàn tất
Lưu mọi video đã hoàn tất hoặc tệp trả về; truy xuất từng URL tài nguyên thực tế được trả về.
Giữ lại mọi mục dữ liệu/chỉ số đầu ra được trả về. content_url chỉ là mục đầu tiên; truy xuất mọi đường dẫn nội dung/tài sản thực tế. GET nội dung không có index không trả về tất cả đầu ra.
Nếu cần kiểm tra phản hồi gốc
Đọc tác vụ gốc hiện có; tuyệt đối không gửi lại lần gửi chưa rõ kết quả.
Trường phản hồi
| Trường | Loại |
|---|---|
Trườngid | Loạistring |
Trườngobject | Loạistring |
Trườngmodel | Loạistring |
Trườngstatus | Loạistring |
Trườngcontent_url | Loạisigned URL |
Trườngdata[] | Loạisigned URL |
Trườngusage | Loạiobject |
Trườngresult_pending_check | Loạiboolean |
Lỗi và bước tiếp theo
| Phản hồi | Điều kiện | Bước tiếp theo |
|---|---|---|
Phản hồi400 · invalid_request_error | Điều kiệnTrường bắt buộc, cách biểu diễn tài liệu hoặc giá trị tham số không hợp lệ | Bước tiếp theoSửa các trường được chỉ ra trước khi gửi yêu cầu tạo mới. |
Phản hồi409 · video_not_ready | Điều kiệnNội dung kết quả ban đầu chưa có sẵn | Bước tiếp theoThăm dò ID ban đầu được trả về và tuân thủ Retry-After. |
Phản hồiserver_error | Điều kiệnPhản hồi trả về cho biết thao tác hoặc kết quả cần được kiểm tra | Bước tiếp theoGiữ lại ID thao tác/tác vụ gốc đã trả về, các header của yêu cầu và toàn bộ phản hồi; tiếp tục truy xuất thao tác gốc đó bằng các phương thức được hỗ trợ. Không gửi lại yêu cầu tạo. |
Bí danh
Bí danh mô hình
Ailoot happyhorse-1.1-t2v, happyhorse-t2v, happyhorse-t2v-latest
Bí danh đường dẫn phương thức
Dùng các đường dẫn phương thức hiển thị ở trên.
ID gọi liên quan
Ailoot · Tạo video POST /v1/videos/generations happyhorse-t2v
happyhorse-t2vhappyhorse-1.1-t2vhappyhorse-t2vhappyhorse-t2v-latest
Bắt đầu
Mô hình tạo video ngắn có âm thanh từ mô tả bằng văn bản. Phù hợp với những cảnh mà chuyển động, bố cục và phong cách hình ảnh được xác định bằng lời.
- Đầu vào được chấp nhận
- Văn bản
- Kết quả
- Video
Có trên Ailoot · đầu vào & phương thức
Ailoot · Tạo video POST /v1/videos/generations
- Đầu vào
text- Đầu ra
video- Định dạng đầu ra
- mp4
| Trường | Loại | Yêu cầu | Giá trị & giới hạn | Mặc định |
|---|---|---|---|---|
Trườngmodel | Loạistring | Yêu cầuBắt buộc | Giá trị & giới hạn happyhorse-t2v | Mặc định— |
Trườngprompt | Loạistring | Yêu cầuBắt buộc | Giá trị & giới hạn Độ dài tối thiểu: 1 | Mặc định— |
Trườngduration | Loạiinteger | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tối thiểu: 3 Tối đa: 15 Đơn vị: giây | Mặc định5 |
Trườngresolution | Loạistring | Yêu cầuKhông bắt buộc | Giá trị & giới hạn 480P, 720P, 1080P | Mặc định720P |
Trườngratio | Loạistring | Yêu cầuKhông bắt buộc | Giá trị & giới hạn 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | Mặc định16:9 |
Trườngimage_urls | Loạihttps_url|data_image_url[] | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Số mục tối thiểu: 0 Số mục tối đa: 0 Số byte tối đa sau giải mã: 20.971.520 Loại MIME: image/jpeg, image/png, image/webp | Mặc định— |
Tổ hợp tư liệu đầu vào
Văn bản thành video · Bắt buộc: prompt
Tham số phương thức và vòng đời
| Tham số | Hợp đồng |
|---|---|
Tham sốmaterial_types | Hợp đồngtext |
Tham sốrequired | Hợp đồngnull |
Tham sốoptional_controls | Hợp đồngnull |
Vòng đời: 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
Cấu trúc phương thức và ID là chính xác; khả năng của nhà cung cấp tách biệt với việc cho phép tiếp nhận yêu cầu.
Bảng giá
Mức phí phương thức Ailoot
POST /v1/videos/generations- Đầu ra
- 0,18 US$ mỗi giây ở 1080p
- Đầu ra
- 0,07 US$ mỗi giây ở 480p
- Đầu ra
- 0,14 US$ mỗi giây ở 720p
Ailoot tạm giữ một khoản ước tính trước yêu cầu. Sau khi có kết quả, phí cuối cùng được quyết toán theo mức sử dụng đo được. Việc quyết toán khi truyền luồng dùng bản ghi mức sử dụng cuối cùng. Cách hoạt động của cơ chế tạm giữ và quyết toán →
Ví dụ yêu cầu
Ailoot · Tạo video
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_PROMPT_FILE:?Set your actual UTF-8 scene brief}"
export AILOOT_PROMPT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "happyhorse-t2v", "prompt": "", "duration": 5, "resolution": "720P", "ratio": "16:9"}')
f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 brief")
p['prompt']=f.read_text(encoding="utf-8")
if not p['prompt'].strip():raise SystemExit("Brief must contain text")
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/generations \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
Nhận và lưu kết quả
Ailoot · Tạo video
mp4
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
Kiểm tra trạng thái tác vụ
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/generations/$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
Lưu tất cả tài nguyên đã hoàn tất
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
Lượt đọc nội dung khác
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/generations/$operation_id/content" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o video.mp4
Lưu tất cả kết quả đã hoàn tất
Lưu mọi video đã hoàn tất hoặc tệp trả về; truy xuất từng URL tài nguyên thực tế được trả về.
Giữ lại mọi mục dữ liệu/chỉ số đầu ra được trả về. content_url chỉ là mục đầu tiên; truy xuất mọi đường dẫn nội dung/tài sản thực tế. GET nội dung không có index không trả về tất cả đầu ra.
Nếu cần kiểm tra phản hồi gốc
Đọc tác vụ gốc hiện có; tuyệt đối không gửi lại lần gửi chưa rõ kết quả.
Trường phản hồi
| Trường | Loại |
|---|---|
Trườngid | Loạistring |
Trườngobject | Loạistring |
Trườngmodel | Loạistring |
Trườngstatus | Loạistring |
Trườngcontent_url | Loạisigned URL |
Trườngdata[] | Loạisigned URL |
Trườngusage | Loạiobject |
Trườngresult_pending_check | Loạiboolean |
Lỗi và bước tiếp theo
| Phản hồi | Điều kiện | Bước tiếp theo |
|---|---|---|
Phản hồi400 · invalid_request_error | Điều kiệnTrường bắt buộc, cách biểu diễn tài liệu hoặc giá trị tham số không hợp lệ | Bước tiếp theoSửa các trường được chỉ ra trước khi gửi yêu cầu tạo mới. |
Phản hồi409 · video_not_ready | Điều kiệnNội dung kết quả ban đầu chưa có sẵn | Bước tiếp theoThăm dò ID ban đầu được trả về và tuân thủ Retry-After. |
Phản hồiserver_error | Điều kiệnPhản hồi trả về cho biết thao tác hoặc kết quả cần được kiểm tra | Bước tiếp theoGiữ lại ID thao tác/tác vụ gốc đã trả về, các header của yêu cầu và toàn bộ phản hồi; tiếp tục truy xuất thao tác gốc đó bằng các phương thức được hỗ trợ. Không gửi lại yêu cầu tạo. |
Bí danh
Bí danh mô hình
Ailoot happyhorse-1.1-t2v, happyhorse-t2v, happyhorse-t2v-latest
Bí danh đường dẫn phương thức
Dùng các đường dẫn phương thức hiển thị ở trên.
ID gọi liên quan
Ailoot · Tạo video POST /v1/videos/generations happyhorse-t2v-latest
happyhorse-t2v-latesthappyhorse-1.1-t2vhappyhorse-t2vhappyhorse-t2v-latest
Bắt đầu
Mô hình tạo video ngắn có âm thanh từ mô tả bằng văn bản. Phù hợp với những cảnh mà chuyển động, bố cục và phong cách hình ảnh được xác định bằng lời.
- Đầu vào được chấp nhận
- Văn bản
- Kết quả
- Video
Có trên Ailoot · đầu vào & phương thức
Ailoot · Tạo video POST /v1/videos/generations
- Đầu vào
text- Đầu ra
video- Định dạng đầu ra
- mp4
| Trường | Loại | Yêu cầu | Giá trị & giới hạn | Mặc định |
|---|---|---|---|---|
Trườngmodel | Loạistring | Yêu cầuBắt buộc | Giá trị & giới hạn happyhorse-t2v-latest | Mặc định— |
Trườngprompt | Loạistring | Yêu cầuBắt buộc | Giá trị & giới hạn Độ dài tối thiểu: 1 | Mặc định— |
Trườngduration | Loạiinteger | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Tối thiểu: 3 Tối đa: 15 Đơn vị: giây | Mặc định5 |
Trườngresolution | Loạistring | Yêu cầuKhông bắt buộc | Giá trị & giới hạn 480P, 720P, 1080P | Mặc định720P |
Trườngratio | Loạistring | Yêu cầuKhông bắt buộc | Giá trị & giới hạn 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | Mặc định16:9 |
Trườngimage_urls | Loạihttps_url|data_image_url[] | Yêu cầuKhông bắt buộc | Giá trị & giới hạn Số mục tối thiểu: 0 Số mục tối đa: 0 Số byte tối đa sau giải mã: 20.971.520 Loại MIME: image/jpeg, image/png, image/webp | Mặc định— |
Tổ hợp tư liệu đầu vào
Văn bản thành video · Bắt buộc: prompt
Tham số phương thức và vòng đời
| Tham số | Hợp đồng |
|---|---|
Tham sốmaterial_types | Hợp đồngtext |
Tham sốrequired | Hợp đồngnull |
Tham sốoptional_controls | Hợp đồngnull |
Vòng đời: 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
Cấu trúc phương thức và ID là chính xác; khả năng của nhà cung cấp tách biệt với việc cho phép tiếp nhận yêu cầu.
Bảng giá
Mức phí phương thức Ailoot
POST /v1/videos/generations- Đầu ra
- 0,18 US$ mỗi giây ở 1080p
- Đầu ra
- 0,07 US$ mỗi giây ở 480p
- Đầu ra
- 0,14 US$ mỗi giây ở 720p
Ailoot tạm giữ một khoản ước tính trước yêu cầu. Sau khi có kết quả, phí cuối cùng được quyết toán theo mức sử dụng đo được. Việc quyết toán khi truyền luồng dùng bản ghi mức sử dụng cuối cùng. Cách hoạt động của cơ chế tạm giữ và quyết toán →
Ví dụ yêu cầu
Ailoot · Tạo video
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_PROMPT_FILE:?Set your actual UTF-8 scene brief}"
export AILOOT_PROMPT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "happyhorse-t2v-latest", "prompt": "", "duration": 5, "resolution": "720P", "ratio": "16:9"}')
f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 brief")
p['prompt']=f.read_text(encoding="utf-8")
if not p['prompt'].strip():raise SystemExit("Brief must contain text")
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/generations \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
Nhận và lưu kết quả
Ailoot · Tạo video
mp4
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
Kiểm tra trạng thái tác vụ
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/generations/$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
Lưu tất cả tài nguyên đã hoàn tất
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
Lượt đọc nội dung khác
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/generations/$operation_id/content" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o video.mp4
Lưu tất cả kết quả đã hoàn tất
Lưu mọi video đã hoàn tất hoặc tệp trả về; truy xuất từng URL tài nguyên thực tế được trả về.
Giữ lại mọi mục dữ liệu/chỉ số đầu ra được trả về. content_url chỉ là mục đầu tiên; truy xuất mọi đường dẫn nội dung/tài sản thực tế. GET nội dung không có index không trả về tất cả đầu ra.
Nếu cần kiểm tra phản hồi gốc
Đọc tác vụ gốc hiện có; tuyệt đối không gửi lại lần gửi chưa rõ kết quả.
Trường phản hồi
| Trường | Loại |
|---|---|
Trườngid | Loạistring |
Trườngobject | Loạistring |
Trườngmodel | Loạistring |
Trườngstatus | Loạistring |
Trườngcontent_url | Loạisigned URL |
Trườngdata[] | Loạisigned URL |
Trườngusage | Loạiobject |
Trườngresult_pending_check | Loạiboolean |
Lỗi và bước tiếp theo
| Phản hồi | Điều kiện | Bước tiếp theo |
|---|---|---|
Phản hồi400 · invalid_request_error | Điều kiệnTrường bắt buộc, cách biểu diễn tài liệu hoặc giá trị tham số không hợp lệ | Bước tiếp theoSửa các trường được chỉ ra trước khi gửi yêu cầu tạo mới. |
Phản hồi409 · video_not_ready | Điều kiệnNội dung kết quả ban đầu chưa có sẵn | Bước tiếp theoThăm dò ID ban đầu được trả về và tuân thủ Retry-After. |
Phản hồiserver_error | Điều kiệnPhản hồi trả về cho biết thao tác hoặc kết quả cần được kiểm tra | Bước tiếp theoGiữ lại ID thao tác/tác vụ gốc đã trả về, các header của yêu cầu và toàn bộ phản hồi; tiếp tục truy xuất thao tác gốc đó bằng các phương thức được hỗ trợ. Không gửi lại yêu cầu tạo. |
Bí danh
Bí danh mô hình
Ailoot happyhorse-1.1-t2v, happyhorse-t2v, happyhorse-t2v-latest
Bí danh đường dẫn phương thức
Dùng các đường dẫn phương thức hiển thị ở trên.
ID gọi liên quan
FAQ · happyhorse-1.1-t2v
- Có những đầu vào và kết quả nào?
POST /v1/videos/generations·happyhorse-1.1-t2v:text→videoPOST /v1/videos/generations·happyhorse-t2v:text→videoPOST /v1/videos/generations·happyhorse-t2v-latest:text→video- Yêu cầu sử dụng những trường nào?
POST /v1/videos/generations·happyhorse-1.1-t2v:model,prompt,duration,resolution,ratio,image_urlsPOST /v1/videos/generations·happyhorse-t2v:model,prompt,duration,resolution,ratio,image_urlsPOST /v1/videos/generations·happyhorse-t2v-latest:model,prompt,duration,resolution,ratio,image_urls- Áp dụng những giới hạn nào?
POST /v1/videos/generations·happyhorse-1.1-t2v:duration.minimum:3;duration.maximum:15POST /v1/videos/generations·happyhorse-t2v:duration.minimum:3;duration.maximum:15POST /v1/videos/generations·happyhorse-t2v-latest:duration.minimum:3;duration.maximum:15