Saltar para o conteúdo principal

Parâmetros de Caminho

id
string
obrigatório
O ID da tarefa retornado pela solicitação de criação de vídeo. Considere id e task_id como a mesma identidade assíncrona.
Se uma resposta de criação retornar poll_url, chame exatamente essa URL. Quando ela apontar para /v1/tasks/{id}, trate isso como o endpoint canônico e fixo de status.Se a tarefa não existir mais ou não puder mais ser resolvida através do contrato público async-task, LemonData retorna async_task_not_found com a mensagem Task not found or no longer available.

Resposta

id
string
Identificador canônico da tarefa assíncrona.
task_id
string
Alias do identificador da tarefa assíncrona.
poll_url
string
URL de polling preferencial quando a resposta de criação fornecer uma.
status
string
Status da tarefa: pending, processing, completed, failed.
progress
number
Percentual de progresso (0-100).
video_url
string
URL do vídeo gerado (quando concluído).
video
object
Objeto único de vídeo com url, duration, width e height quando disponíveis.
videos
array
Múltiplos objetos de vídeo quando o upstream retornar mais de uma saída.
error
string
Mensagem de erro (em caso de falha).
created
integer
Timestamp de criação.
updated
integer
Timestamp da última atualização.
model
string
Modelo usado para a tarefa.
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
}

Melhores práticas de polling

  • Realizar polling a cada 5-10 segundos
  • Implemente backoff exponencial para tarefas longas
  • Defina um tempo máximo de espera (por exemplo, 10 minutos)
  • Trate o status failed de forma adequada
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")