Saltar para o conteúdo 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.

Use polling como base para geração de vídeo porque todo job assíncrono retorna um ID de tarefa que você pode consultar. Adicione webhooks apenas quando o endpoint de vídeo selecionado oferecer suporte a URLs de callback e mantenha o polling como fonte da verdade para callbacks não entregues ou específicos do provedor.

Criar uma tarefa de vídeo

A solicitação a seguir cria uma tarefa de vídeo mínima e armazena o ID retornado. Adicione campos de duração, resolução ou callback apenas quando a página do modelo selecionado documentar esses 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"
A resposta inclui um ID de tarefa e status:
{
  "id": "task_example",
  "task_id": "task_example",
  "object": "video",
  "model": "doubao-seedance-2-0",
  "status": "queued",
  "progress": 0,
  "created_at": 1779872000
}

Consultar status

A solicitação a seguir verifica o status da tarefa de vídeo:
curl https://api.cometapi.com/v1/videos/task_example \
  -H "Authorization: Bearer $COMETAPI_KEY"
A resposta muda conforme a tarefa avança. Respostas concluídas podem incluir video_url quando o adaptador do modelo tiver uma URL de resultado; caso contrário, use campos de resultado específicos do modelo ou a rota de conteúdo /v1/videos/{id}/content quando esse modelo oferecer suporte a downloads por proxy.
{
  "id": "task_example",
  "object": "video",
  "model": "doubao-seedance-2-0",
  "status": "completed",
  "progress": 100,
  "completed_at": 1779872300,
  "video_url": "<generated-video-url>"
}

Receber um webhook

A CometAPI não define uma carga de callback universal para todos os modelos de vídeo. Trate callbacks como eventos de passagem específicos do provedor, armazene o corpo bruto e reconcilie o estado final com polling. O handler Express a seguir aceita um callback de vídeo e armazena o 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);
Uma carga de callback normalmente inclui campos de identidade da tarefa e status, mas a estrutura exata depende do modelo ou provedor selecionado:
{
  "task_id": "task_example",
  "status": "completed",
  "progress": 100,
  "result": {
    "video_url": "https://example.com/result.mp4"
  }
}

Erros comuns

ErroCorreção
Callback perdidoFaça polling pelo ID da tarefa até que seu app tenha armazenado um estado terminal.
Callback duplicadoFaça com que o tratamento de callback seja idempotente por ID de tarefa.
Callback rejeitadoRetorne uma resposta 2xx rapidamente e depois processe o job em segundo plano.
Incompatibilidade de carga específica do provedorArmazene a carga bruta do callback e normalize-a no seu app.
video_url ausenteTrate video_url como opcional e use polling mais campos de resultado específicos do modelo ou /v1/videos/{id}/content quando disponível.
Last modified on May 28, 2026