メインコンテンツへ移動
LocoPal AiLocoPal Ai
API 連携モデルと生成エンドポイント動画生成エンドポイント

ガイド

動画タスクの照会

タスクの進捗と結果の照会、ステータス処理、参照素材の読み取り失敗、課金の説明

Markdown を表示

動画タスクの照会

タスク作成後は、作成レスポンスの id を使用して進捗と結果を照会します。作成方法は動画タスクの作成を参照してください。

ステータスの照会:GET /v1/video/generations/{task_id}

完成動画のダウンロード:GET /v1/videos/{task_id}/content

照会エンドポイントはタスク完了後、metadata.url に動画アドレスを返します。プラットフォームは上流の元の動画アドレスを優先して返し、上流に利用可能なアドレスがない場合にのみ、access 機能付きのプラットフォーム成果物アドレスにフォールバックします。上流の元のアドレスは署名と有効期限が付いている場合があり、ブラウザやプレーヤーで直接開けます。プラットフォーム成果物アドレスも同様に利用できます。API Key を付けて /v1/videos/{task_id}/content を呼び出し、動画ファイルをダウンロードすることもできます。

認証方式

Authorization: Bearer <API_KEY>。

リクエストパラメータ · path

パラメータ型必須説明
task_idstring必須作成レスポンスの id

リクエスト例

curl "$LOCOPAL_API_ORIGIN/v1/video/generations/$LOCOPAL_TASK_ID" \
  -H "Authorization: Bearer $LOCOPAL_API_KEY"

動画のダウンロード

タスクステータスが completed になったら、照会レスポンスの metadata.url を直接使用します:

curl -L "$LOCOPAL_API_ORIGIN/v1/videos/$LOCOPAL_TASK_ID/content" \
  -H "Authorization: Bearer $LOCOPAL_API_KEY" \
  -o "$LOCOPAL_TASK_ID.mp4"

レスポンスパラメータ

パラメータ型説明
idstring公開タスク ID
task_idstringid と同じ値の互換フィールド
objectstring固定で video
modelstring動画モデル ID
statusstringqueued、in_progress、completed、failed、unknown のいずれか
progressinteger現在の進捗。範囲は 0 から 100
created_atinteger作成時刻(Unix 秒)
completed_atinteger完了時刻。未完了の場合は返されない
metadata.urlstring動画アドレス。成功時に返され、上流の元アドレスを優先し、必要に応じてプラットフォーム成果物アドレスとなる
metadata.upstream_createdboolean上流でタスクが作成済みか
duration_secsinteger動画の長さ(秒)。上流が返す場合に提供される
expires_atinteger上流 URL の有効期限(Unix 秒)。上流が明確に返す場合にのみ提供される
framespersecondinteger動画のフレームレート。上流が返す場合に提供される
generate_audioboolean同期音声を生成するか。上流が返す場合に提供される
ratiostring出力のアスペクト比。上流が返す場合に提供される
resolutionstring出力解像度。上流が返す場合に提供される
seedinteger乱数シード。上流が返す場合に提供される
output_formatstring出力形式(例:mp4)。上流が返す場合に提供される
execution_expires_afterintegerタスク結果の保持期間。上流が返す場合に提供される
usageobjectタスク精算後の実際の使用量と費用。未精算(キュー待ち、生成中、作成されたばかり)の場合は返されない
usage.prompt_tokensinteger今回課金対象の動画 token 数(請求の「Tokens」列の左側の数値と一致)
usage.completion_tokensinteger動画/画像タスクは出力 token を個別に報告しないため、固定で 0
usage.total_tokensinteger合計使用量。usage.prompt_tokens と等しい
usage.quotainteger今回のタスクで実際に消費したクォータ
usage.amountnumber今回のタスク金額(元)。usage.quota からプラットフォームの精算基準で換算され、小数 6 桁で保持される。コンソールの請求では同じ費用を小数 4 桁で表示する
usage.currencystring金額の通貨。固定で CNY
error.codestring失敗時のエラーコード。失敗時のみ返される。プラットフォームの動画タスクの終端失敗は通常 video_generation_failed。正規化できない上流エラーは上流のエラーコードが保持される場合がある
error.messagestring失敗原因。失敗時のみ返される。プラットフォームはまず多層の JSON とゲートウェイの HTML ラッピングを剥がし、そのまま表示できる可読テキストを返す。クライアントはこのテキストに対して再度 JSON 解析を行わないこと

レスポンスボディ

実行中:

{
  "id": "task_XVCPphL5ZWOr2iMpGhNkV32qRTj7MSUO",
  "task_id": "task_XVCPphL5ZWOr2iMpGhNkV32qRTj7MSUO",
  "object": "video",
  "model": "doubao-seedance-2.0-A",
  "status": "in_progress",
  "progress": 50,
  "created_at": 1787299277
}

生成成功:

{
  "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 はタスク完了・精算後にのみ返され、値は請求におけるこのタスクの課金と完全に一致します。usage.quota は今回消費したクォータ、usage.amount は同じクォータを現在のサイトの為替レートで換算した人民元金額、usage.total_tokens は今回課金対象の動画 token 数です。タスクがまだキュー待ちや生成中の場合 usage は返されないため、その際に照会レスポンスから費用を判断しないでください。課金を照合する必要がある場合は、同じ id でコンソールの請求と usage.quota および usage.amount を比較してください。

metadata.url は署名付きの上流アドレスの場合も、プラットフォーム成果物エンドポイントがフォールバックする場合もあります。資格情報として扱い、公開して共有しないでください。完成した動画は、expires_at より前にダウンロードするか、自分のオブジェクトストレージへ転存することを推奨します。

動画成果物とプレビュー

metadata.url を直接読み取るほか、プラットフォームの成果物一覧を照会することもできます:

curl "$LOCOPAL_API_ORIGIN/v1/tasks/$LOCOPAL_TASK_ID/artifacts" \
  -H "Authorization: Bearer $LOCOPAL_API_KEY"

タスク完了後に返されます:

{
  "task_id": "task_XVCPphL5ZWOr2iMpGhNkV32qRTj7MSUO",
  "artifacts": [
    {
      "key": "video",
      "type": "video",
      "content_url": "https://locopalai.com/v1/tasks/task_XVCPphL5ZWOr2iMpGhNkV32qRTj7MSUO/artifacts/video/content?access=..."
    }
  ]
}

成果物コンテンツのアドレスは Range リクエストをサポートします。プレーヤー、ブラウザでのプレビュー、レジュームダウンロードにそのまま使用できます。クライアントが metadata.url のみを読み取る場合は、従来のロジックをそのまま使用してよく、成果物エンドポイントに変更する必要はありません。

生成失敗:

{
  "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 はプラットフォームが整理した最終的な失敗メッセージです。過去のタスクが最初にネストした JSON を保存していた場合でも、照会時には正規化されたテキストが返されます。呼び出し元はこのフィールドをそのままユーザーに表示すればよく、クライアント側で元の上流 JSON を再結合したり解析したりしないでください。

エラーレスポンス

存在しないタスク ID(または現在のアカウントに属さないタスク)を照会すると HTTP 400 を返します:

{ "code": "task_not_exist", "message": "task_not_exist", "data": null }
HTTPレスポンス対応
400{"code":"task_not_exist","message":"task_not_exist","data":null}タスク ID と作成時のアカウントを確認する
401Invalid tokenAPI Key の欠落、誤り、失効
500タスク照会の失敗リクエスト ID を保存し、しばらくしてから元のタスクの照会を続ける

ステータスの処理

ステータスクライアントの処理
queuedタスクがキューに入った。同じタスク ID の照会を続ける
in_progress生成中。進捗と待機時間を更新し、新しいタスクを作成しない
completedmetadata.url を読み取るか、/v1/videos/{task_id}/content を呼び出して完成動画をダウンロードする。速やかな転存を推奨
failederror.code と error.message を 1 回表示し、再送信するかはユーザーが判断する
unknown一時的に状態を判断できない。タスク ID を保持し、しばらくしてから照会する

クライアントは固定の待機秒数で完了を判断しないでください。また、一度のネットワークタイムアウトでタスクを重複作成しないでください。5~15 秒に 1 回の照会を推奨します。

参照素材の読み取り失敗

エラーが content[n].image_url、video_url を指す場合、または resource download failed を含む場合は、まず配列の添字で該当要素を特定し、次を確認してください:

  1. URL が公網から直接 GET でき、200 を返すか。
  2. ログインページへリダイレクトするか、Cookie、Referer、IP 許可リストに依存しているか。
  3. Content-Type がファイルの実際の形式と一致しているか。
  4. 一時的な署名付き URL がダウンロードと処理の間も有効か。
  5. asset:// 素材が現在のアカウントに属し、ステータスが Active か。
  6. 現在のモデルがその素材の種類と数量をサポートしているか。

素材を修正してからタスクを作り直してください。エラーメッセージはユーザーに読める原因を 1 回表示するだけでよく、多層にエスケープされた JSON を繰り返し結合して表示しないでください。

並行数、リトライ、課金

  • 異なる動画タスクは並行して作成できます。
  • 同じ作成レスポンスに対しては、必ず同じタスク ID で照会してください。
  • タスクが明確に失敗し、ユーザーが自らリトライした場合にのみ、新しい作成リクエストを発行してください。
  • 課金はモデル、解像度、長さ、参照動画の入力によって細分化され、モデルマーケットと最終的な請求に準じます。パラメータ検証の失敗(400)はリクエストが受理されなかったことを示し、通常は生成タスクの費用は発生しません。

関連ドキュメント

知りたいこと参照先
複数画像、参照動画、深度動画の能力の境界とよくある問題複数画像と参照動画の説明
素材の登録から動画の送信までの完全なフロー人物素材と参照動画の連携フロー
素材グループ、素材ステータス、肖像権の許諾素材ライブラリ API
エラーコード早見表エラーコードとトラブルシューティング
このページは役に立ちましたか?

このページの目次