メインコンテンツへスキップ

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.

すべての非同期ジョブは問い合わせ可能な task ID を返すため、動画生成では polling を基本手段として使用してください。選択した動画 endpoint が callback URL をサポートしている場合にのみ webhook を追加し、callback 配信の失敗や provider 固有の挙動に備えて、引き続き polling を信頼できる情報源として維持してください。

動画タスクを作成する

次のリクエストは最小構成の動画タスクを作成し、返された ID を保存します。duration、resolution、または callback フィールドは、選択した model ページでそれらのフィールドが記載されている場合にのみ追加してください。
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"
レスポンスには task ID と status が含まれます。
{
  "id": "task_example",
  "task_id": "task_example",
  "object": "video",
  "model": "doubao-seedance-2-0",
  "status": "queued",
  "progress": 0,
  "created_at": 1779872000
}

status を polling する

次のリクエストは動画タスクの status を確認します。
curl https://api.cometapi.com/v1/videos/task_example \
  -H "Authorization: Bearer $COMETAPI_KEY"
レスポンスはタスクの進行に応じて変化します。完了したレスポンスには、model adapter に結果 URL がある場合 video_url が含まれることがあります。それ以外の場合は、モデル固有の結果フィールド、またはその model がプロキシダウンロードをサポートしている場合は /v1/videos/{id}/content の content route を使用してください。
{
  "id": "task_example",
  "object": "video",
  "model": "doubao-seedance-2-0",
  "status": "completed",
  "progress": 100,
  "completed_at": 1779872300,
  "video_url": "<generated-video-url>"
}

webhook を受信する

CometAPI は、すべての動画 model に共通する単一の callback payload を定義していません。callback は provider 固有の pass-through event として扱い、生の body を保存し、polling で最終状態を突き合わせてください。 次の Express handler は動画 callback を受信して event を保存します。
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);
callback payload には一般的に task の識別情報と status フィールドが含まれますが、正確なネスト構造は選択した model または provider によって異なります。
{
  "task_id": "task_example",
  "status": "completed",
  "progress": 100,
  "result": {
    "video_url": "https://example.com/result.mp4"
  }
}

よくあるエラー

エラー修正方法
callback の消失task ID で polling を行い、アプリが終端状態を保存するまで確認を続けてください。
callback の重複task ID を使って callback 処理を冪等にしてください。
callback が拒否されるすぐに 2xx レスポンスを返し、その後バックグラウンドでジョブを処理してください。
provider 固有の payload の不一致生の callback payload を保存し、アプリ内で正規化してください。
video_url がないvideo_url は任意項目として扱い、利用可能な場合は polling とモデル固有の結果フィールド、または /v1/videos/{id}/content を使用してください。

関連リンク

Last modified on May 28, 2026