Truy vấn video
Truy vấn tác vụ video qua API Platform Video Generations.
Dùng ID tác vụ do API tạo tác vụ trả về để truy vấn trạng thái, kết quả video và metadata; dừng polling khi tác vụ chuyển sang succeeded hoặc failed.
/v1/video/generations/{task_id}Dùng Task ID do API tạo tác vụ trả về để truy vấn trạng thái và kết quả hiện tại của tác vụ video. Dừng polling khi tác vụ chuyển sang succeeded hoặc failed.
API này sử dụng đường dẫn và cấu trúc trạng thái của tác vụ Platform Video Generations, không tương đương với API truy vấn bằng Video ID của OpenAI Videos.
Xác thực
bearerAuth Sử dụng Bearer your-api-key trong Header Authorization.
Vị trí truyền: header
Tham số đường dẫn
Task ID được trả về khi tạo tác vụ video trên nền tảng.
1 <= lengthNội dung phản hồi
application/json
application/json
application/json
application/json
application/json
application/json
Polling trạng thái tác vụ
Tạo video là quá trình bất đồng bộ. Sau khi gửi tác vụ, có thể truy vấn theo các khoảng thời gian sau để cân bằng thời gian nhận kết quả và tần suất yêu cầu:
- Sau khi gửi tác vụ, chờ 2–3 giây.
- Trong 30 giây đầu, truy vấn mỗi 5 giây.
- Từ 30 giây đến 2 phút, truy vấn mỗi 10 giây.
- Sau 2 phút, truy vấn mỗi 30 giây.
- Đặt tổng thời gian chờ là 5–10 phút; dừng ngay khi tác vụ chuyển sang
succeededhoặcfailed.
Ví dụ polling bằng JavaScript
async function pollVideoStatus(taskId, maxAttempts = 30) {
const apiOrigin = 'https://api.agtcloud.cn';
const headers = {
Authorization: 'Bearer your-api-key',
};
await new Promise((resolve) => setTimeout(resolve, 3000));
for (let attempt = 0; attempt < maxAttempts; attempt += 1) {
const response = await fetch(
`${apiOrigin}/v1/video/generations/${encodeURIComponent(taskId)}`,
{ headers },
);
if (!response.ok) {
throw new Error(`Truy vấn thất bại với HTTP ${response.status}`);
}
const result = await response.json();
if (result.status === 'succeeded') {
return result;
}
if (result.status === 'failed') {
throw new Error(result.error?.message ?? 'Tạo video thất bại');
}
const delay = attempt < 6 ? 5000 : attempt < 12 ? 10000 : 30000;
await new Promise((resolve) => setTimeout(resolve, delay));
}
throw new Error('Polling tác vụ video đã hết thời gian chờ');
}
pollVideoStatus('TASK_ID').then(console.log).catch(console.error);