Chuyển đến nội dung chính

Documentation Index

Fetch the complete documentation index at: https://apidoc.cometapi.com/llms.txt

Use this file to discover all available pages before exploring further.

Sử dụng polling làm nền tảng cơ bản cho việc tạo video vì mọi job bất đồng bộ đều trả về một task ID mà bạn có thể truy vấn. Chỉ thêm webhook khi endpoint video được chọn hỗ trợ callback URL, và vẫn giữ polling làm nguồn thông tin chuẩn cho các callback bị bỏ lỡ hoặc việc phân phối callback mang tính đặc thù của từng provider.

Tạo một video task

Yêu cầu sau tạo một video task tối giản và lưu ID được trả về. Chỉ thêm các trường thời lượng, độ phân giải hoặc callback khi trang model được chọn có tài liệu mô tả các trường đó.
curl https://api.cometapi.com/v1/videos \
  -H "Authorization: Bearer $COMETAPI_KEY" \
  -F "model=doubao-seedance-2-0" \
  -F "prompt=A cinematic shot of a paper airplane crossing a desk"
Phản hồi bao gồm task ID và trạng thái:
{
  "id": "task_example",
  "task_id": "task_example",
  "object": "video",
  "model": "doubao-seedance-2-0",
  "status": "queued",
  "progress": 0,
  "created_at": 1779872000
}

Poll trạng thái

Yêu cầu sau kiểm tra trạng thái của video task:
curl https://api.cometapi.com/v1/videos/task_example \
  -H "Authorization: Bearer $COMETAPI_KEY"
Phản hồi sẽ thay đổi khi task tiến triển. Phản hồi hoàn tất có thể bao gồm video_url khi bộ điều hợp model có URL kết quả; nếu không, hãy dùng các trường kết quả đặc thù của model hoặc route nội dung /v1/videos/{id}/content khi model đó hỗ trợ tải xuống qua proxy.
{
  "id": "task_example",
  "object": "video",
  "model": "doubao-seedance-2-0",
  "status": "completed",
  "progress": 100,
  "completed_at": 1779872300,
  "video_url": "<generated-video-url>"
}

Nhận một webhook

CometAPI không định nghĩa một payload callback phổ quát cho mọi model video. Hãy coi callback là các sự kiện pass-through đặc thù của provider, lưu phần body thô và đối chiếu trạng thái cuối cùng bằng polling. Trình xử lý Express sau chấp nhận một callback video và lưu sự kiện:
import express from "express";

const app = express();
app.use(express.json({ limit: "2mb" }));

app.post("/cometapi/video-webhook", async (request, response) => {
  const event = request.body;

  console.log("Task ID:", event.task_id || event.id);
  console.log("Status:", event.status);

  response.status(200).json({ received: true });
});

app.listen(3000);
Một payload callback thường bao gồm các trường nhận dạng task và trạng thái, nhưng cấu trúc lồng chính xác phụ thuộc vào model hoặc provider được chọn:
{
  "task_id": "task_example",
  "status": "completed",
  "progress": 100,
  "result": {
    "video_url": "https://example.com/result.mp4"
  }
}

Các lỗi thường gặp

ErrorCách khắc phục
Callback bị mấtPoll theo task ID cho đến khi ứng dụng của bạn đã lưu một trạng thái kết thúc.
Callback trùng lặpLàm cho việc xử lý callback có tính idempotent theo task ID.
Callback bị từ chốiTrả về phản hồi 2xx nhanh chóng, sau đó xử lý job ở nền.
Không khớp payload đặc thù của providerLưu payload callback thô và chuẩn hóa nó trong ứng dụng của bạn.
Thiếu video_urlCoi video_url là tùy chọn và sử dụng polling cùng với các trường kết quả đặc thù của model hoặc /v1/videos/{id}/content khi có sẵn.

Liên kết liên quan

Last modified on May 28, 2026