Saltar al contenido principal

Documentation Index

Fetch the complete documentation index at: https://apidoc.cometapi.com/llms.txt

Use this file to discover all available pages before exploring further.

Usa polling como base para la generación de video porque cada trabajo asíncrono devuelve un ID de tarea que puedes consultar. Agrega webhooks solo cuando el endpoint de video seleccionado admita URL de callback, y mantén polling como la fuente de verdad para callbacks perdidos o entregas específicas del proveedor.

Crear una tarea de video

La siguiente solicitud crea una tarea de video mínima y almacena el ID devuelto. Agrega campos de duración, resolución o callback solo cuando la página del modelo seleccionado documente esos campos.
curl https://api.cometapi.com/v1/videos \
  -H "Authorization: Bearer $COMETAPI_KEY" \
  -F "model=doubao-seedance-2-0" \
  -F "prompt=A cinematic shot of a paper airplane crossing a desk"
La respuesta incluye un ID de tarea y un estado:
{
  "id": "task_example",
  "task_id": "task_example",
  "object": "video",
  "model": "doubao-seedance-2-0",
  "status": "queued",
  "progress": 0,
  "created_at": 1779872000
}

Consultar el estado

La siguiente solicitud comprueba el estado de la tarea de video:
curl https://api.cometapi.com/v1/videos/task_example \
  -H "Authorization: Bearer $COMETAPI_KEY"
La respuesta cambia a medida que avanza la tarea. Las respuestas completadas pueden incluir video_url cuando el adaptador del modelo tiene una URL de resultado; de lo contrario, usa campos de resultado específicos del modelo o la ruta de contenido /v1/videos/{id}/content cuando ese modelo admita descargas proxy.
{
  "id": "task_example",
  "object": "video",
  "model": "doubao-seedance-2-0",
  "status": "completed",
  "progress": 100,
  "completed_at": 1779872300,
  "video_url": "<generated-video-url>"
}

Recibir un webhook

CometAPI no define una carga útil de callback universal para todos los modelos de video. Trata los callbacks como eventos pass-through específicos del proveedor, almacena el cuerpo sin procesar y reconcilia el estado final con polling. El siguiente controlador de Express acepta un callback de video y almacena el evento:
import express from "express";

const app = express();
app.use(express.json({ limit: "2mb" }));

app.post("/cometapi/video-webhook", async (request, response) => {
  const event = request.body;

  console.log("Task ID:", event.task_id || event.id);
  console.log("Status:", event.status);

  response.status(200).json({ received: true });
});

app.listen(3000);
Una carga útil de callback suele incluir campos de identidad de la tarea y estado, pero la estructura exacta depende del modelo o proveedor seleccionado:
{
  "task_id": "task_example",
  "status": "completed",
  "progress": 100,
  "result": {
    "video_url": "https://example.com/result.mp4"
  }
}

Errores comunes

ErrorSolución
Callback perdidoHaz polling por ID de tarea hasta que tu aplicación haya almacenado un estado terminal.
Callback duplicadoHaz que el manejo de callbacks sea idempotente por ID de tarea.
Callback rechazadoDevuelve una respuesta 2xx rápidamente y luego procesa el trabajo en segundo plano.
Incompatibilidad de carga útil específica del proveedorAlmacena la carga útil del callback sin procesar y normalízala en tu aplicación.
Falta video_urlTrata video_url como opcional y usa polling junto con campos de resultado específicos del modelo o /v1/videos/{id}/content cuando esté disponible.

Enlaces relacionados

Last modified on May 28, 2026