الانتقال إلى المحتوى الرئيسي

معلمات المسار

id
string
مطلوب
معرّف المهمة المُعاد من طلب إنشاء الفيديو. اعتبر id و task_id نفس الهوية غير المتزامنة.
إذا أعادت استجابة الإنشاء قيمة poll_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 ثوانٍ
  • طبّق آلية تراجع أُسِّي (exponential backoff) للمهام الطويلة
  • حدد مهلة قصوى (مثلاً، 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")