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

パスパラメータ

id
string
必須
動画作成リクエストから返されるタスクID。idtask_id は同じ非同期識別子として扱ってください。
作成レスポンスが poll_url を返す場合は、その正確な URL を呼び出してください。これが /v1/tasks/{id} を指す場合は、それを正準の固定ステータスエンドポイントとして扱ってください。タスクが存在しない、または公開された非同期タスク契約を通じて解決できない場合、LemonData は async_task_not_found を返し、メッセージ Task not found or no longer available. を返します。

レスポンス

id
string
正準の非同期タスク識別子。
task_id
string
非同期タスク識別子の別名。
poll_url
string
作成レスポンスが提供する場合の推奨ポーリングURL。
status
string
タスクのステータス: pending, processing, completed, failed
progress
number
進捗率(0〜100)。
video_url
string
生成されたビデオの URL(完了時)。
video
object
利用可能な場合に urldurationwidthheight を含む単一ビデオペイロード。
videos
array
上流が複数の出力を返す場合の複数ビデオペイロード。
error
string
エラーメッセージ(失敗時)。
created
integer
作成タイムスタンプ。
updated
integer
最終更新タイムスタンプ。
model
string
タスクに使用されたモデル。
curl "https://api.lemondata.cc/v1/tasks/ldtask_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" \
  -H "Authorization: Bearer sk-your-api-key"
{
  "id": "ldtask_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "task_id": "ldtask_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "poll_url": "/v1/tasks/ldtask_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
  "status": "pending",
  "progress": 0,
  "model": "sora-2",
  "created": 1706000000,
  "updated": 1706000000
}

ポーリングのベストプラクティス

  • 5〜10秒ごとにポーリングする
  • 長時間のタスクには指数バックオフを実装する
  • 最大タイムアウトを設定する(例: 10分)
  • failed ステータスを適切に処理する
import time

def wait_for_video(task_id, max_wait=600, interval=5):
    """Wait for video with timeout."""
    start = time.time()

    while time.time() - start < max_wait:
        response = requests.get(
            f"https://api.lemondata.cc/v1/tasks/{task_id}",
            headers={"Authorization": "Bearer sk-your-api-key"}
        )
        data = response.json()

        if data["status"] == "completed":
            return data["video_url"]
        elif data["status"] == "failed":
            raise Exception(data.get("error", "Video generation failed"))

        time.sleep(interval)

    raise TimeoutError("Video generation timed out")