Hướng dẫn
Truy vấn tác vụ video
Truy vấn tiến độ và kết quả tác vụ, xử lý trạng thái, đọc tư liệu tham chiếu thất bại và giải thích tính phí
Truy vấn tác vụ video
Sau khi tạo tác vụ, dùng id trong phản hồi tạo để truy vấn tiến độ và kết quả; cách tạo xem Tạo tác vụ video.
Truy vấn trạng thái: GET /v1/video/generations/{task_id}
Tải thành phẩm: GET /v1/videos/{task_id}/content
API truy vấn sẽ trả về địa chỉ video trong metadata.url sau khi tác vụ hoàn thành. Nền tảng ưu tiên trả về địa chỉ video gốc của thượng nguồn; chỉ khi thượng nguồn không có địa chỉ khả dụng mới lùi về địa chỉ sản phẩm nền tảng có khả năng access. Địa chỉ gốc thượng nguồn có thể kèm chữ ký và thời hạn, có thể mở trực tiếp trong trình duyệt hoặc trình phát; địa chỉ sản phẩm nền tảng cũng dùng được. Cũng có thể mang khóa API gọi /v1/videos/{task_id}/content để tải tệp video.
Phương thức xác thực
Authorization: Bearer <API_KEY>.
Tham số yêu cầu · path
| Tham số | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
task_id | string | Có | id trong phản hồi tạo |
Ví dụ yêu cầu
curl "$LOCOPAL_API_ORIGIN/v1/video/generations/$LOCOPAL_TASK_ID" \
-H "Authorization: Bearer $LOCOPAL_API_KEY"Tải video
Sau khi trạng thái tác vụ chuyển thành completed, dùng trực tiếp metadata.url trong phản hồi truy vấn:
curl -L "$LOCOPAL_API_ORIGIN/v1/videos/$LOCOPAL_TASK_ID/content" \
-H "Authorization: Bearer $LOCOPAL_API_KEY" \
-o "$LOCOPAL_TASK_ID.mp4"Tham số phản hồi
| Tham số | Kiểu | Mô tả |
|---|---|---|
id | string | ID tác vụ công khai |
task_id | string | Trường tương thích giống với id |
object | string | Cố định là video |
model | string | ID mô hình video |
status | string | queued, in_progress, completed, failed hoặc unknown |
progress | integer | Tiến độ hiện tại, phạm vi 0 đến 100 |
created_at | integer | Thời gian tạo (giây Unix) |
completed_at | integer | Thời gian hoàn thành, không trả về khi chưa hoàn thành |
metadata.url | string | Địa chỉ video, trả về khi thành công; ưu tiên là địa chỉ gốc của thượng nguồn, khi cần thiết là địa chỉ sản phẩm nền tảng |
metadata.upstream_created | boolean | Đã tạo tác vụ ở thượng nguồn hay chưa |
duration_secs | integer | Thời lượng video (giây), cung cấp khi thượng nguồn trả về |
expires_at | integer | Thời gian hết hạn URL thượng nguồn (giây Unix), chỉ cung cấp khi thượng nguồn trả về rõ ràng |
framespersecond | integer | Tốc độ khung hình video, cung cấp khi thượng nguồn trả về |
generate_audio | boolean | Có tạo âm thanh đồng bộ hay không, cung cấp khi thượng nguồn trả về |
ratio | string | Tỷ lệ đầu ra, cung cấp khi thượng nguồn trả về |
resolution | string | Độ phân giải đầu ra, cung cấp khi thượng nguồn trả về |
seed | integer | Hạt giống ngẫu nhiên, cung cấp khi thượng nguồn trả về |
output_format | string | Định dạng đầu ra, ví dụ mp4, cung cấp khi thượng nguồn trả về |
execution_expires_after | integer | Thời gian lưu giữ kết quả tác vụ, cung cấp khi thượng nguồn trả về |
usage | object | Lượng dùng và chi phí thực tế sau khi tác vụ quyết toán; không trả về khi tác vụ chưa quyết toán (đang xếp hàng, đang tạo hoặc vừa được tiếp nhận) |
usage.prompt_tokens | integer | Số token video tính phí lần này (trùng với số bên trái cột "Tokens" trong hóa đơn) |
usage.completion_tokens | integer | Tác vụ video/hình ảnh không báo riêng token đầu ra, cố định là 0 |
usage.total_tokens | integer | Tổng lượng dùng, bằng usage.prompt_tokens |
usage.quota | integer | Điểm thực tế tiêu hao của tác vụ lần này |
usage.amount | number | Số tiền tác vụ lần này (nhân dân tệ), do usage.quota quy đổi theo quy chuẩn quyết toán của nền tảng, giữ 6 chữ số thập phân; hóa đơn bảng điều khiển hiển thị cùng khoản phí với 4 chữ số thập phân |
usage.currency | string | Loại tiền tệ của số tiền, cố định là CNY |
error.code | string | Mã lỗi thất bại, chỉ trả về khi thất bại. Tác vụ video nền tảng thất bại ở trạng thái cuối thường là video_generation_failed; lỗi thượng nguồn không thể chuẩn hóa có thể giữ mã lỗi thượng nguồn |
error.message | string | Nguyên nhân thất bại, chỉ trả về khi thất bại. Nền tảng sẽ bóc nhiều lớp JSON và vỏ HTML của gateway trước, trả về văn bản dễ đọc có thể hiển thị trực tiếp; client đừng thực hiện phân tích JSON trên đoạn văn bản này nữa |
Phần thân phản hồi
Đang thực thi:
{
"id": "task_XVCPphL5ZWOr2iMpGhNkV32qRTj7MSUO",
"task_id": "task_XVCPphL5ZWOr2iMpGhNkV32qRTj7MSUO",
"object": "video",
"model": "doubao-seedance-2.0-A",
"status": "in_progress",
"progress": 50,
"created_at": 1787299277
}Tạo thành công:
{
"id": "task_XVCPphL5ZWOr2iMpGhNkV32qRTj7MSUO",
"task_id": "task_XVCPphL5ZWOr2iMpGhNkV32qRTj7MSUO",
"object": "video",
"model": "doubao-seedance-2.0-A",
"status": "completed",
"progress": 100,
"created_at": 1787299277,
"completed_at": 1787299581,
"duration_secs": 5,
"expires_at": 1790578352,
"framespersecond": 24,
"generate_audio": true,
"ratio": "9:16",
"resolution": "480p",
"seed": 20260409,
"output_format": "mp4",
"execution_expires_after": 172800,
"metadata": {
"url": "https://upstream.example.com/task_XVCPphL5ZWOr2iMpGhNkV32qRTj7MSUO.mp4?signature=...",
"upstream_created": true
},
"usage": {
"prompt_tokens": 141034,
"completion_tokens": 0,
"total_tokens": 141034,
"quota": 2789652,
"amount": 5.579304,
"currency": "CNY"
}
}usage chỉ trả về sau khi tác vụ hoàn thành quyết toán, giá trị hoàn toàn trùng khớp với khoản trừ phí của tác vụ này trong hóa đơn: usage.quota là điểm tiêu hao lần này, usage.amount là số tiền nhân dân tệ quy đổi từ cùng số điểm theo tỷ giá hiện tại của trang, usage.total_tokens là số token video tính phí lần này. Khi tác vụ còn đang xếp hàng hoặc đang tạo sẽ không trả về usage, lúc này đừng dựa vào phản hồi truy vấn để phán đoán chi phí; khi cần đối chiếu trừ phí, dùng cùng id đối chiếu usage.quota và usage.amount trong hóa đơn của bảng điều khiển.
metadata.url có thể là địa chỉ thượng nguồn có chữ ký, cũng có thể được API sản phẩm nền tảng dự phòng. Vui lòng xử lý như thông tin xác thực, đừng chia sẻ công khai. Sau khi thành phẩm được tạo, khuyến nghị tải về hoặc chuyển lưu vào lưu trữ đối tượng của riêng bạn trước expires_at.
Sản phẩm video và xem trước
Ngoài việc đọc trực tiếp metadata.url, cũng có thể truy vấn danh sách sản phẩm nền tảng:
curl "$LOCOPAL_API_ORIGIN/v1/tasks/$LOCOPAL_TASK_ID/artifacts" \
-H "Authorization: Bearer $LOCOPAL_API_KEY"Trả về sau khi tác vụ hoàn thành:
{
"task_id": "task_XVCPphL5ZWOr2iMpGhNkV32qRTj7MSUO",
"artifacts": [
{
"key": "video",
"type": "video",
"content_url": "https://locopalai.com/v1/tasks/task_XVCPphL5ZWOr2iMpGhNkV32qRTj7MSUO/artifacts/video/content?access=..."
}
]
}Địa chỉ nội dung sản phẩm hỗ trợ yêu cầu Range; trình phát, xem trước trên trình duyệt và tải tiếp đều có thể dùng trực tiếp. Nếu client chỉ đọc metadata.url, hãy tiếp tục dùng logic cũ, không cần đổi sang API sản phẩm.
Tạo thất bại:
{
"id": "task_NlersigX6rIqiOjCwTFlgNmGMTwqt39K",
"object": "video",
"model": "doubao-seedance-2.0-D",
"status": "failed",
"progress": 100,
"created_at": 1789971935,
"error": {
"code": "video_generation_failed",
"message": "音频素材缓冲失败: 音频地址必须是 http(s)"
},
"metadata": {
"submission_stage": "submitting",
"upstream_created": false
}
}error.message là văn bản thất bại cuối cùng đã được nền tảng xử lý. Tác vụ lịch sử kể cả ban đầu lưu JSON lồng nhau, khi truy vấn cũng sẽ trả về văn bản đã chuẩn hóa; bên gọi chỉ cần hiển thị trực tiếp trường này cho người dùng, đừng ghép hoặc phân tích JSON thượng nguồn gốc ở client.
Phản hồi lỗi
Truy vấn ID tác vụ không tồn tại (hoặc tác vụ không thuộc tài khoản hiện tại) trả về HTTP 400:
{ "code": "task_not_exist", "message": "task_not_exist", "data": null }| HTTP | Phản hồi | Xử lý |
|---|---|---|
400 | {"code":"task_not_exist","message":"task_not_exist","data":null} | Đối chiếu ID tác vụ với tài khoản lúc tạo tác vụ |
401 | Invalid token | Khóa API thiếu, sai hoặc đã hết hiệu lực |
500 | Truy vấn tác vụ thất bại | Lưu ID yêu cầu, tiếp tục truy vấn tác vụ gốc sau |
Xử lý trạng thái
| Trạng thái | Xử lý phía client |
|---|---|
queued | Tác vụ đã vào hàng đợi, tiếp tục truy vấn cùng một ID tác vụ |
in_progress | Đang tạo, cập nhật tiến độ và thời gian chờ, không tạo tác vụ mới |
completed | Đọc metadata.url, hoặc gọi /v1/videos/{task_id}/content để tải thành phẩm; khuyến nghị chuyển lưu sớm |
failed | Hiển thị một lần error.code và error.message, để người dùng quyết định có gửi lại hay không |
unknown | Tạm thời không thể phán đoán trạng thái, giữ ID tác vụ rồi truy vấn sau |
Client đừng dùng số giây chờ cố định để phán đoán hoàn thành, cũng đừng vì một lần mạng quá thời gian mà tạo lại tác vụ; khuyến nghị truy vấn mỗi 5~15 giây.
Đọc tư liệu tham chiếu thất bại
Khi lỗi trỏ tới content[n].image_url, video_url hoặc chứa resource download failed, trước tiên định vị phần tử cụ thể theo chỉ số mảng, rồi kiểm tra:
- URL có thể
GETtrực tiếp từ công cộng và trả về200hay không; - Có chuyển hướng tới trang đăng nhập hoặc phụ thuộc Cookie, Referer, danh sách IP cho phép hay không;
Content-Typecó trùng với định dạng thật của tệp không;- URL ký tạm thời có còn hiệu lực trong suốt thời gian tải và xử lý không;
- Tư liệu
asset://có thuộc tài khoản hiện tại và trạng thái làActivekhông; - Mô hình hiện tại có hỗ trợ loại và số lượng tư liệu đó không.
Sau khi sửa tư liệu hãy tạo lại tác vụ. Thông tin lỗi chỉ cần hiển thị cho người dùng một lần nguyên nhân dễ đọc, đừng ghép lặp lại nhiều lớp JSON đã thoát ký tự.
Đồng thời, thử lại và tính phí
- Các tác vụ video khác nhau có thể tạo đồng thời;
- Cùng một phản hồi tạo phải dùng cùng một ID tác vụ để truy vấn;
- Chỉ khi tác vụ thất bại rõ ràng và người dùng chủ động thử lại mới phát yêu cầu tạo mới;
- Tính phí được chia chi tiết theo mô hình, độ phân giải, thời lượng và đầu vào video tham chiếu, lấy theo chợ mô hình và hóa đơn cuối cùng làm chuẩn; kiểm tra tham số thất bại (
400) nghĩa là yêu cầu chưa được tiếp nhận, thường không phát sinh phí tác vụ tạo sinh.
Tài liệu liên quan
| Muốn xem gì | Đến trang nào |
|---|---|
| Ranh giới năng lực và câu hỏi thường gặp về nhiều ảnh, video tham chiếu, video sâu | Hướng dẫn nhiều ảnh và video tham chiếu |
| Quy trình đầy đủ từ đưa tư liệu vào thư viện đến gửi video | Quy trình tích hợp tư liệu chân dung và video tham chiếu |
| Nhóm tư liệu, trạng thái tư liệu, ủy quyền chân dung | API thư viện tư liệu |
| Tra nhanh mã lỗi | Mã lỗi và khắc phục |
