Ana içeriğe atla

Yol Parametreleri

id
string
gerekli
Oluşturma yanıtından dönen asenkron görev kimliği. id ve task_id aynı görevi ifade eder.
Bir create yanıtı poll_url döndürürse, tam olarak o URL’yi çağırın. Bu URL /v1/tasks/{id} adresine işaret ediyorsa, onu kanonik sabit durum uç noktası olarak kabul edin.

Yanıt

id
string
Kanonik asenkron görev kimliği.
task_id
string
Asenkron görev kimliği takma adı.
poll_url
string
Oluşturma yanıtının döndürdüğü öncelikli sorgulama URL’si.
status
string
Görev durumu: pending, processing, completed, failed.
progress
number
İlerleme yüzdesi (0-100).
video_url
string
Oluşturulan videonun URL’i (tamamlandığında).
video
object
Mevcutsa url, duration, width ve height içeren tek video nesnesi.
videos
array
Üst sağlayıcı birden fazla çıktı döndürdüğünde video dizisi görünebilir.
error
string
Hata mesajı (başarısız olursa).
created
integer
Oluşturulma zaman damgası.
updated
integer
Son güncelleme zaman damgası.
model
string
Görevde kullanılan model.
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
}

Polling En İyi Uygulamaları

  • Her 5-10 saniyede bir sorgulama yapın
  • Uzun süreli görevler için üstel geri çekilme (exponential backoff) uygulayın
  • Maksimum bir zaman aşımı süresi belirleyin (örneğin 10 dakika)
  • failed durumunu uygun şekilde ele alın
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")