Chuyển đến nội dung chính

Path Parameters

id
string
bắt buộc
ID tác vụ trả về từ yêu cầu tạo video. Xem idtask_id là cùng một định danh không đồng bộ (async).
Nếu phản hồi create trả về poll_url, hãy gọi đúng URL đó. Khi nó trỏ tới /v1/tasks/{id}, hãy coi đó là endpoint trạng thái cố định chuẩn.Nếu tác vụ không còn tồn tại hoặc không thể giải quyết thông qua hợp đồng async-task công khai, LemonData trả về async_task_not_found với thông điệp Task not found or no longer available.

Response

id
string
Định danh tác vụ async chuẩn.
task_id
string
Bí danh định danh tác vụ async.
poll_url
string
URL ưu tiên để thăm dò khi phản hồi tạo cung cấp.
status
string
Trạng thái tác vụ: pending, processing, completed, failed.
progress
number
Tỷ lệ tiến độ (0-100).
video_url
string
URL của video đã tạo (khi hoàn thành).
video
object
Payload video đơn với url, duration, width, và height khi có.
videos
array
Nhiều payload video khi upstream trả về hơn một kết quả.
error
string
Thông báo lỗi (nếu thất bại).
created
integer
Dấu thời gian tạo.
updated
integer
Dấu thời gian cập nhật cuối cùng.
model
string
Mô hình được sử dụng cho tác vụ.
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
}

Thực hành tốt nhất khi thăm dò

  • Thăm dò (poll) mỗi 5-10 giây
  • Triển khai exponential backoff cho các tác vụ chạy lâu
  • Đặt thời gian chờ tối đa (ví dụ: 10 phút)
  • Xử lý trạng thái failed một cách phù hợp
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")