메인 콘텐츠로 건너뛰기

경로 매개변수

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
사용 가능한 경우 url, duration, width, 및 height를 포함한 단일 비디오 페이로드.
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")