Saltar al contenido principal

Parámetros de ruta

id
string
requerido
El ID de la tarea devuelto por la solicitud de creación de video. Trate id y task_id como la misma identidad asíncrona.
Si una respuesta de creación devuelve poll_url, llame exactamente a esa URL. Cuando apunta a /v1/tasks/{id}, trátela como el endpoint canónico y fijo de estado.Si la tarea ya no existe o no puede resolverse a través del contrato público de tareas asíncronas, LemonData devuelve async_task_not_found con el mensaje Task not found or no longer available.

Respuesta

id
string
Identificador canónico de la tarea asíncrona.
task_id
string
Alias del identificador de la tarea asíncrona.
poll_url
string
URL preferida para sondeo cuando la respuesta de creación la proporciona.
status
string
Estado de la tarea: pending, processing, completed, failed.
progress
number
Porcentaje de progreso (0-100).
video_url
string
URL del video generado (cuando está completado).
video
object
Objeto de video único con url, duration, width y height cuando estén disponibles.
videos
array
Múltiples cargas útiles de video cuando el upstream devuelve más de una salida.
error
string
Mensaje de error (si falla).
created
integer
Marca de tiempo de creación.
updated
integer
Marca de tiempo de la última actualización.
model
string
Modelo usado para la tarea.
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
}

Mejores prácticas de sondeo

  • Consultar cada 5-10 segundos
  • Implementar retroceso exponencial para tareas largas
  • Establecer un tiempo máximo de espera (p. ej., 10 minutos)
  • Manejar el estado failed de forma adecuada
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")