Passer au contenu principal

Paramètres de chemin

id
string
requis
L’ID de tâche renvoyé par la requête de création de vidéo. Considérez id et task_id comme la même identité asynchrone.
Si une réponse de création renvoie poll_url, appelez cette URL exacte. Lorsqu’elle pointe vers /v1/tasks/{id}, considérez-la comme le point de terminaison canonique et fixe pour le statut.Si la tâche n’existe plus ou ne peut plus être résolue via le contrat public async-task, LemonData renvoie async_task_not_found avec le message Task not found or no longer available.

Réponse

id
string
Identifiant canonique de la tâche asynchrone.
task_id
string
Alias de l’identifiant de tâche asynchrone.
poll_url
string
URL de polling préférée lorsque la réponse de création en fournit une.
status
string
Statut de la tâche : pending, processing, completed, failed.
progress
number
Pourcentage d’avancement (0-100).
video_url
string
URL de la vidéo générée (lorsqu’elle est terminée).
video
object
Charge utile d’une seule vidéo avec url, duration, width et height lorsque disponible.
videos
array
Plusieurs charges utiles vidéo lorsque la source en amont renvoie plus d’une sortie.
error
string
Message d’erreur (en cas d’échec).
created
integer
Horodatage de création.
updated
integer
Horodatage de la dernière mise à jour.
model
string
Modèle utilisé pour la tâche.
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
}

Bonnes pratiques de polling

  • Effectuer un polling toutes les 5 à 10 secondes
  • Implémenter un backoff exponentiel pour les tâches longues
  • Définir un délai d’attente maximal (par exemple, 10 minutes)
  • Gérer le statut failed de manière appropriée
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")