Skip to main content
Use POST /v1/videos para criar uma tarefa assíncrona de geração de vídeo Seedance. Consulte o status da tarefa até que ela seja concluída e, em seguida, baixe o vídeo pela URL do Flatkey retornada. Os modelos suportados são seedance-2.0, seedance-2.0-fast, seedance-2.0-mini e seedance-2.5. A disponibilidade depende da sua conta; use GET /v1/models para obter a lista atual de modelos.

Endpoint

O Flatkey também aceita POST /v1/video/generations e GET /v1/video/generations/{task_id}. Use /v1/videos para a estrutura de resposta padrão e dados nativos de usage.

Requisição

Cabeçalhos

Parâmetros do corpo

string
obrigatório
ID do modelo Seedance: "seedance-2.0", "seedance-2.0-fast", "seedance-2.0-mini" ou "seedance-2.5".
array
obrigatório
Itens de entrada multimodal. Inclua pelo menos um item de texto não vazio, imagem, vídeo ou áudio. Veja itens de content.
string
Resolução de saída. Padrão: "720p".
string
Proporção de saída: "16:9", "4:3", "1:1", "3:4", "9:16", "21:9" ou "adaptive". Padrão: "adaptive". Com "adaptive", o modelo escolhe a proporção com base nas imagens ou vídeos de entrada. Para seedance-2.5, tarefas de primeiro quadro e de primeiro/último quadro aceitam apenas "adaptive".
integer
Duração do vídeo em segundos. Padrão: 5. Os modelos Seedance 2.0 aceitam de 4 a 15; o seedance-2.5 aceita de 4 a 30.
Sempre envie um duration positivo. O Flatkey cobra o Seedance por segundo, então -1 (deixar o modelo escolher a duração) é rejeitado com video_price_not_configured. A única exceção é uma edição de vídeo do seedance-2.5, que exige -1.
boolean
Adiciona uma marca d’água “AI generated” no canto inferior direito. Padrão: false.
boolean
Gera uma faixa de áudio mono sincronizada. Padrão: true. Defina como false se você precisar apenas do vídeo; o áudio gerado pode ocasionalmente ser reprovado em verificações de direitos autorais.
boolean
Retorna o último quadro do vídeo gerado como imagem. Padrão: false. Quando true, a tarefa concluída inclui metadata.last_frame_url, que baixa um JPEG com as mesmas dimensões do vídeo e sem marca d’água. Use-o como first_frame da próxima tarefa para encadear clipes. Assim como metadata.url, ele não requer cabeçalho de autorização; trate-o como privado.
string
Somente seedance-2.5. Contêiner do vídeo gerado: "mp4" ou "mov". Padrão: "mp4". O MOV preserva mais precisão de cor para correção de cor e composição (H.264, YUV 4:4:4, áudio PCM), mas alguns players não conseguem abri-lo. O endpoint de conteúdo retorna video/quicktime para resultados em MOV.
string
Somente seedance-2.5, para tarefas no modo de referência. Informa ao modelo qual tarefa você pretende realizar: "auto" (padrão), "reference", "edit" ou "extend". Defini-lo explicitamente antecipa as verificações de tipo de tarefa para o momento do envio, de modo que uma combinação inválida falha imediatamente, e não depois que a tarefa começa. "reference", "edit" e "extend" exigem itens de referência em content; uma requisição só com texto e "reference" é rejeitada. Veja edição e extensão de vídeo.
integer
Prioridade na fila, de 0 a 9. Padrão: 0. Valores mais altos colocam a tarefa à frente de tarefas de menor prioridade que aguardam o mesmo modelo. Compatível com todos os modelos Seedance 2.0 e com o seedance-2.5. Valores fora do intervalo 0–9 são rejeitados com 400.
integer
Segundos que a tarefa pode aguardar e ser executada antes de expirar. Padrão: 172800 (48 horas). Use um valor menor quando um resultado atrasado não tiver utilidade para você.
string
URL HTTPS pública que recebe um POST sempre que o status da tarefa muda. Veja Callbacks de tarefa. Deve usar https, não conter credenciais de usuário, ter no máximo 2.048 caracteres e resolver para um endereço público; caso contrário, a requisição é rejeitada com 400.

Itens de content

Cada URL pode ser uma URL HTTPS pública, uma data URI data:<mime>;base64, (somente imagens e áudio) ou uma referência asset:// da biblioteca de ativos. O corpo inteiro da requisição deve ficar abaixo de 64 MB. Escolha um modo de entrada por tarefa. Estes modos não podem ser combinados:

Edição de vídeo

O seedance-2.5 pode editar ou estender um vídeo existente no modo de referência. Descreva a alteração no prompt e refira-se ao vídeo como @Video1.
Como toda requisição do seedance-2.5 com vídeo de referência, uma edição é cobrada pela tarifa com vídeo da resolução escolhida, por 30 segundos fixos, independentemente da duração da entrada ou da saída.

Modo rascunho

O seedance-2.5 pode gerar primeiro um rascunho barato em 480p, para que você confira a cena, os planos e o movimento antes de pagar pelo vídeo final. São necessárias duas requisições:
  1. Crie o rascunho. Envie uma requisição normal com "draft": true e "resolution": "480p". Ela é cobrada como um vídeo 480p comum.
  2. Gere o vídeo final. Depois que o rascunho for concluído, envie uma requisição cujo único item de content seja um draft_task apontando para o ID da tarefa do rascunho, com "resolution": "1080p".
O vídeo final reaproveita o prompt, as mídias, a duração, a proporção, a semente, a configuração de áudio e o tipo de tarefa do rascunho. Não envie duration, ratio, frames, seed, generate_audio, omni_reference_task_type, draft nem qualquer outro item de content junto com um draft_task; a requisição é rejeitada com 400. Você ainda pode definir return_last_frame, output_format, watermark, priority, execution_expires_after e callback_url.
O Seedance não aceita diretamente imagens ou vídeos que mostrem rostos humanos reais. Envie-os como ativos de pessoa real e referencie-os com asset://.

Exemplos de requisição

Entrada com primeiro e último quadro

Referência multimodal

Resposta

Campos da resposta

string
ID público da tarefa usado para consultar o status e baixar o vídeo concluído. task_id contém o mesmo valor.
string
Status da tarefa: queued, in_progress, completed ou failed.
integer
Progresso da geração de 0 a 100.
integer
Timestamp Unix da criação da tarefa.

Consultar status da tarefa

Enquanto a geração está em andamento, a resposta inclui o progresso atual:
Quando a tarefa é concluída, a resposta inclui a URL do vídeo e o uso de tokens:
Tarefas com falha retornam os detalhes do erro junto com a resposta da tarefa:
Qualquer saldo pré-consumido é reembolsado automaticamente.

Valores de status

Callbacks de tarefa

Defina callback_url para receber as mudanças de status em vez de consultar a tarefa periodicamente, ou além disso. O Flatkey envia um POST com Content-Type: application/json quando a tarefa passa para in_progress, completed ou failed. O corpo é exatamente o que GET /v1/videos/{task_id} retorna naquele momento, incluindo metadata.url e metadata.last_frame_url para tarefas concluídas.
Responda com qualquer status 2xx em até 5 segundos. Caso contrário, o Flatkey tenta novamente duas vezes, após 2 e 8 segundos, e então desiste. Redirecionamentos não são seguidos. Os callbacks não são assinados; por isso, confirme o resultado consultando a tarefa antes de agir com base nele e mantenha a consulta como fonte da verdade caso um callback se perca.

Baixar o vídeo

O endpoint de conteúdo transmite dados video/mp4, ou video/quicktime quando a tarefa usou output_format: "mov". Não requer um token Bearer e pode ser usado diretamente como fonte de um elemento <video>.
O endpoint de conteúdo funciona apenas após a conclusão da tarefa e tem limite de taxa por IP do cliente. Trate a URL como informação sensível, pois qualquer pessoa que a possua pode baixar o vídeo.

Erros

Erros em tempo de requisição usam o envelope de erro padrão do Flatkey:

Exemplo completo

Este exemplo cria uma tarefa, consulta o status a cada cinco segundos e baixa o vídeo concluído. Requer jq.