Перейти к основному содержанию

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.

Используйте polling как базовый механизм для генерации видео, потому что каждая асинхронная задача возвращает ID задачи, который можно запрашивать. Добавляйте webhooks только тогда, когда выбранный video endpoint поддерживает callback URL, и сохраняйте polling как источник истины на случай пропущенной доставки callback или callback, зависящих от конкретного провайдера.

Создать задачу видео

Следующий запрос создает минимальную задачу видео и сохраняет возвращенный ID. Добавляйте поля duration, resolution или callback только тогда, когда на странице выбранной модели задокументированы эти поля.
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"
Ответ включает ID задачи и статус:
{
  "id": "task_example",
  "task_id": "task_example",
  "object": "video",
  "model": "doubao-seedance-2-0",
  "status": "queued",
  "progress": 0,
  "created_at": 1779872000
}

Проверить статус через polling

Следующий запрос проверяет статус задачи видео:
curl https://api.cometapi.com/v1/videos/task_example \
  -H "Authorization: Bearer $COMETAPI_KEY"
Ответ меняется по мере выполнения задачи. Завершенные ответы могут включать video_url, если адаптер модели предоставляет URL результата; в противном случае используйте поля результата, специфичные для модели, или маршрут содержимого /v1/videos/{id}/content, если эта модель поддерживает проксированные загрузки.
{
  "id": "task_example",
  "object": "video",
  "model": "doubao-seedance-2-0",
  "status": "completed",
  "progress": 100,
  "completed_at": 1779872300,
  "video_url": "<generated-video-url>"
}

Получить webhook

CometAPI не определяет один универсальный callback payload для каждой video model. Рассматривайте callbacks как pass-through события, специфичные для провайдера, сохраняйте raw body и сверяйте финальное состояние с помощью polling. Следующий обработчик Express принимает video callback и сохраняет событие:
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);
Payload callback обычно включает поля идентификатора задачи и статуса, но точная вложенность зависит от выбранной модели или провайдера:
{
  "task_id": "task_example",
  "status": "completed",
  "progress": 100,
  "result": {
    "video_url": "https://example.com/result.mp4"
  }
}

Частые ошибки

ОшибкаРешение
Потерянный callbackВыполняйте polling по ID задачи, пока ваше приложение не сохранит терминальное состояние.
Дублирующийся callbackСделайте обработку callback идемпотентной по ID задачи.
Callback отклоненБыстро возвращайте ответ 2xx, затем обрабатывайте задачу в фоне.
Несоответствие payload, специфичного для провайдераСохраняйте raw payload callback и нормализуйте его в своем приложении.
Отсутствует video_urlСчитайте video_url необязательным и используйте polling вместе с полями результата, специфичными для модели, или /v1/videos/{id}/content, когда это доступно.

Связанные ссылки

Last modified on May 28, 2026