Langsung ke konten utama

Parameter Path

id
string
wajib
Identifier tugas asinkron kanonik. Saat id dan task_id sama-sama ada, perlakukan keduanya sebagai identitas tugas yang sama.
Jika respons create mengembalikan poll_url, panggil URL tersebut secara persis. Saat URL itu mengarah ke /v1/tasks/{id}, perlakukan itu sebagai endpoint status tetap yang kanonik.

Respons

id
string
Identifier tugas asinkron kanonik.
task_id
string
Alias identifier tugas asinkron.
poll_url
string
URL polling prioritas yang dikembalikan oleh respons create.
status
string
Status tugas: pending, processing, completed, failed.
progress
number
Persentase progres (0-100).
video_url
string
URL dari video yang dihasilkan (saat selesai).
video
object
Objek video tunggal dengan url, duration, width, dan height saat tersedia.
videos
array
Array video saat upstream mengembalikan lebih dari satu output.
error
string
Pesan kesalahan (jika gagal).
created
integer
Timestamp pembuatan.
updated
integer
Timestamp pembaruan terakhir.
model
string
Model yang digunakan oleh tugas.
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
}

Praktik Terbaik Polling

  • Lakukan polling setiap 5-10 detik
  • Terapkan exponential backoff untuk tugas yang lama
  • Atur batas waktu maksimum (misalnya, 10 menit)
  • Tangani status failed dengan baik
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")