Pular para a documentação
Nesta página

Seedance 2.0

Gere vídeos com o Seedance 2.0 usando texto, primeiro e último frames ou referências multimodais. Esta página cobre todo o fluxo de trabalho, da requisição ao resultado, para este modelo.

ID do modelo na API: seedance-2-0

A geração é assíncrona. Salve o taskId retornado ao criar a tarefa e, em seguida, consulte seu status ou receba um webhook.

Recursos

RecursoValores suportados
Resolução de saída480p · 720p · 1080p · 4k
Duração de saída4 a 15 segundos
Proporção de tela16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive
Imagens de referênciaAté 9 imagens
Vídeos de referênciaAté 3 vídeos
Arquivos de áudio de referênciaAté 3 arquivos de áudio
Total de referências combinadasAté 12 arquivos de referência no total
Duração total por grupo de vídeo/áudio15 segundos
seed-1 a 4294967295

Preços e créditos

A geração de vídeo é cobrada em créditos com base na duração faturável em segundos. Sem um vídeo de entrada, a duração faturável equivale à duração do vídeo gerado; com um vídeo de entrada, ela também inclui a duração do vídeo de referência.

A tabela abaixo mostra os créditos cobrados por segundo, e não o custo total de uma tarefa. O valor depende do modelo, da resolução de saída e se foram fornecidos vídeos de referência no modo de referência para vídeo. Consulte as fórmulas e os exemplos abaixo da tabela para calcular o custo total.

Resolução de saídaSem entrada de vídeoCom entrada de vídeo
480p6 créditos/segundo4 créditos/segundo
720p12 créditos/segundo8 créditos/segundo
1080p30 créditos/segundo20 créditos/segundo
4k70 créditos/segundo40 créditos/segundo
  • Sem entrada de vídeo: segundos gerados × tarifa sem vídeo.
  • Com entrada de vídeo: (segundos gerados + segundos medidos do vídeo de referência) × tarifa com vídeo. O servidor mede a duração total do vídeo de referência e a arredonda para cima em segundos inteiros antes da cobrança.
  • Referências apenas de imagem ou de áudio utilizam a tarifa sem vídeo. A tarifa com vídeo aplica-se exclusivamente no modo de referência para vídeo quando há arquivos de vídeo enviados.

Exemplos de cálculo de custos

Texto para vídeo de 5 segundos em 720p: 5 × 12 = 60 créditos.

Vídeo gerado de 5 segundos em 720p com vídeo de referência de 5 segundos: (5 + 5) × 8 = 80 créditos.

Os créditos são reservados no momento do envio e cobrados após a conclusão bem-sucedida. Tarefas que falharem ou expirarem entram no fluxo de reembolso. O status refund_failed indica que o reembolso não pôde ser concluído; verifique os logs da API ou entre em contato com o suporte.

Autenticação

Crie uma chave de API no painel. A chave completa é exibida apenas uma vez. Guarde-a com segurança no seu servidor e envie-a como um token Bearer em cada requisição.

URL base

https://api.seevio.ai
Authorization: Bearer sk_live_your_api_key
Content-Type: application/json

Defina a variável de ambiente SEEVIO_API_KEY antes de rodar os exemplos. Os exemplos em JavaScript rodam no servidor com Node.js; os de Python utilizam a biblioteca requests.

Início rápido

Envie esta requisição simplificada, salve o taskId retornado e use o exemplo de consulta abaixo. O valor de créditos indicado na resposta de criação é o montante reservado.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video",
    "aspect_ratio": "16:9",
    "generate_audio": true
  }
}'

Exemplo de resposta de criação de tarefa

Após a aceitação da solicitação acima, a API retornará esta resposta em formato JSON. O taskId é o identificador da tarefa usado para consultas de status subsequentes; credits representa a quantidade de créditos reservados para esta tarefa. Esta resposta confirma a criação da tarefa, mas não significa que o vídeo esteja pronto. Você precisará consultar periodicamente o status da tarefa ou configurar um Webhook para receber o vídeo finalizado.

{
  "taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "credits": 60
}

Criar uma tarefa

POST https://api.seevio.ai/v1/videos/generations

Envie um objeto JSON contendo o modelo e as configurações de entrada (input), além de um callback_url opcional. Sempre especifique o ID do modelo indicado nesta página; omitir o campo seleciona por padrão seedance-2-0.

Corpo da requisição

CampoTipoObrigatórioDescrição e restrições
model
stringSim

ID do modelo. Para usar o Seedance 2.0, defina este campo como seedance-2-0.

callback_url
stringNão

Endpoint HTTPS público para retornos assíncronos (POST) de conclusão ou falha. Redes privadas e localhost não são permitidos.

Exemplo: https://example.com/webhooks/seevio
input
objectSim

Configurações de geração. Deve conter uma descrição de texto (prompt) não vazia.

Parâmetros de entrada

image_urls é obrigatório em image-to-video. O modo reference-to-video requer pelo menos uma referência entre image_urls, video_urls e audio_urls.

Forneça image_urls, video_urls e audio_urls como arrays de strings de URL (string[]). Cada URL fornecida deve estar acessível publicamente via HTTPS, incluindo mídias ignoradas pelo modo selecionado.

CampoTipoObrigatórioPadrãoDescrição e restrições
input.prompt
stringSim

É necessário inserir um prompt em todos os modos. O texto pode ter no máximo 10.000 caracteres antes de ser cortado e não pode conter apenas espaços em branco.

Exemplo: A cat surfing at sunset
input.generation_type
stringNãotext-to-video

text-to-video utiliza apenas o prompt; image-to-video utiliza de 1 a 2 imagens; reference-to-video utiliza referências de imagem, vídeo e/ou áudio.

Valores suportados
text-to-video | image-to-video | reference-to-video
input.image_urls
string[]Condicional[]

image-to-video: 1 imagem para o primeiro frame, ou 2 imagens ordenadas para o primeiro e o último frames. reference-to-video: até 9 imagens. Ignorado no modo text-to-video.

Exemplo: ["https://example.com/first-frame.jpg"]
input.video_urls
string[]Condicional[]

Encaminhado apenas em reference-to-video; limite combinado de até 3 vídeos e 15 segundos. Ignorado nos outros modos.

Exemplo: ["https://example.com/source.mp4"]
input.audio_urls
string[]Condicional[]

Encaminhado apenas em reference-to-video; limite combinado de até 3 arquivos de áudio e 15 segundos. Ignorado nos outros modos. O áudio não pode ser o único material de referência para este modelo. Ao fornecer audio_urls, você também deve incluir pelo menos uma imagem de referência em image_urls ou um vídeo de referência em video_urls.

Exemplo: ["https://example.com/music.mp3"]
input.duration
integerNão5

Duração de saída em segundos (número inteiro de 4 a 15).

Valores suportados
4–15
Exemplo: 5
input.aspect_ratio
stringNãoadaptive

Proporção de tela de saída. adaptive permite que o modelo decida a proporção ideal.

Valores suportados
16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive
Exemplo: adaptive
input.resolution
stringNão720p

Utilize uma das resoluções de saída suportadas listadas aqui.

Valores suportados
480p | 720p | 1080p | 4k
Exemplo: 720p
input.generate_audio
booleanNãotrue

Solicita a geração de áudio sincronizado.

Valores suportados
true | false
Exemplo: true
input.watermark
booleanNãofalse

Solicita a aplicação de marca d'água de IA no vídeo gerado.

Valores suportados
true | false
Exemplo: false
input.web_search
booleanNãofalse

Permite pesquisa na web quando suportada pelo modelo.

Valores suportados
true | false
Exemplo: false
input.return_last_frame
booleanNãofalse

Solicita o último frame. O resultado da consulta conterá data.last_frame_url quando o frame estiver disponível; caso contrário, será null.

Valores suportados
true | false
Exemplo: true
input.seed
integerNão-1

Número inteiro de -1 a 4294967295. O valor -1 define uma semente aleatória.

Valores suportados
-1 a 4294967295
Exemplo: 42

Campos booleanos devem ser preenchidos com true ou false no JSON, não com strings ou números.

Resposta de criação

O retorno HTTP 200 traz o taskId (string) e os credits (número). Isso confirma a criação da tarefa, não a sua conclusão. O valor abaixo equivale ao exemplo de início rápido (5 segundos em 720p).

{
  "taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "credits": 60
}

Modos de geração e exemplos

Substitua as URLs de exemplo de media.com pelos seus próprios arquivos HTTPS públicos. Os links de exemplo servem apenas para ilustrar a estrutura da requisição e não representam arquivos reais para download.

Texto para vídeo

Geração a partir de um prompt de texto. Referências de mídia enviadas neste modo são desconsideradas.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video",
    "aspect_ratio": "16:9",
    "generate_audio": true
  }
}'

Primeiro frame

Envie uma imagem para servir como o primeiro frame e descreva a ação desejada no prompt.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "image-to-video",
    "image_urls": [
      "https://example.com/first-frame.jpg"
    ],
    "aspect_ratio": "adaptive"
  }
}'

Primeiro e último frames

Envie duas URLs de imagem em ordem: primeiro frame e depois o último frame. Este exemplo também solicita o retorno do último frame gerado de forma isolada.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "image-to-video",
    "image_urls": [
      "https://example.com/first-frame.jpg",
      "https://example.com/last-frame.jpg"
    ],
    "aspect_ratio": "adaptive",
    "return_last_frame": true
  }
}'

Referência multimodal

Combine referências de imagem, vídeo e áudio. O prompt continua obrigatório. O envio de um vídeo de referência altera a fórmula de faturamento.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-0",
  "input": {
    "prompt": "Follow the reference camera movement and keep the character consistent. Use the audio for ambience.",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "reference-to-video",
    "image_urls": [
      "https://example.com/character.jpg"
    ],
    "video_urls": [
      "https://example.com/camera.mp4"
    ],
    "audio_urls": [
      "https://example.com/ambience.mp3"
    ],
    "aspect_ratio": "adaptive"
  }
}'

Consultar tarefa

GET https://api.seevio.ai/v1/tasks/{taskId}

Substitua o ID de exemplo pelo taskId recebido no retorno da criação. As consultas só retornam tarefas de propriedade do usuário associado à chave de API; IDs inexistentes ou de terceiros retornam HTTP 404.

Recomendamos consultar a cada 10 ou 20 segundos inicialmente, aplicar recuo (backoff) caso receba HTTP 429 e parar assim que o status for completed ou failed. Para produção, prefira webhooks. Cada exemplo abaixo executa uma consulta única.

curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
  -H "Authorization: Bearer $SEEVIO_API_KEY"
StatusDescrição e restrições
queuedAceito e aguardando na fila de processamento.
generatingGeração em andamento.
completedTarefa concluída com sucesso. Baixe o conteúdo em data.results antes do prazo de expiração.
failedTarefa falhou. Verifique os campos failed_reason e billing_status.
CampoTipoDescrição e restrições
idstring
Identificador único da tarefa. Corresponde ao taskId retornado na criação.
created_atnumber
Data de criação da tarefa em timestamp Unix (segundos).
modelstring
O ID do modelo público utilizado para esta tarefa.
billing_statusstring
status do faturamento: reserved (reservado), charged (cobrado), refunded (reembolsado) ou refund_failed (falha no reembolso).
creditsnumber
Créditos reservados para esta tarefa. Este valor é mantido mesmo após um reembolso; verifique o billing_status para saber o resultado financeiro final.
failed_reasonstring | null
Motivo da falha em tarefas malsucedidas; null nos demais casos. Consultas de tarefas com falha não retornam o objeto data.
dataobject
Presente em consultas de tarefas que não falharam. Contém o resultado gerado e os detalhes de processamento.
data.resultsstring[]
Lista de URLs do vídeo gerado. Fica vazia até a conclusão ou caso o vídeo já tenha expirado.
data.video_expires_atstring | null
Prazo de expiração do vídeo no formato ISO 8601 (retorna null até que esteja disponível). Salve o arquivo gerado antes deste limite.
data.last_frame_urlstring | null
URL do último frame (quando solicitado e disponível), caso contrário retorna null.
data.processing_timenumber | null
Duração do processamento do provedor em segundos (quando disponível), caso contrário retorna null.

Tarefa concluída: resposta da consulta com os resultados do vídeo

Quando a consulta retornar status=completed, significa que a geração do vídeo foi concluída. Recupere as URLs do vídeo em data.results e faça o download antes da data em data.video_expires_at. O status billing_status=charged indica que os créditos reservados foram cobrados.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-0",
  "status": "completed",
  "billing_status": "charged",
  "credits": 60,
  "failed_reason": null,
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/videos/example.mp4"
    ],
    "video_expires_at": "2026-09-07T00:00:00Z",
    "last_frame_url": null,
    "processing_time": 48
  }
}

Tarefa falhou: resposta da consulta com detalhes do erro e cobrança

Quando a consulta retornar status=failed, significa que a geração falhou. Verifique o motivo em failed_reason e o resultado do estorno em billing_status. Neste exemplo, refunded indica que os créditos foram devolvidos. O campo credits mantém o valor original reservado, e a resposta não inclui data.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-0",
  "status": "failed",
  "billing_status": "refunded",
  "credits": 60,
  "failed_reason": "provider_failed"
}

Webhooks

Defina o callback_url na requisição de criação para receber um POST em JSON assim que a tarefa for concluída ou falhar. Responda com status 2xx em até 15 segundos. Envios malsucedidos serão reentados; trate as requisições de forma idempotente utilizando o ID da tarefa.

O seu endpoint de callback deve aceitar requisições POST com um corpo no formato JSON (Content-Type: application/json).

Criar tarefa contendo callback

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video",
    "aspect_ratio": "16:9",
    "generate_audio": true
  },
  "callback_url": "https://example.com/webhooks/seevio"
}'

Os payloads dos webhooks diferem das respostas de consulta: eles não incluem billing_status e credits; os detalhes de erro e reembolso ficam dentro de data.failed_reason e data.credits_refunded. O campo created_at do webhook indica o horário de envio do evento em timestamp Unix.

Tarefa concluída: payload de callback de sucesso

Quando a geração é bem-sucedida, o callback retorna status=completed. Use o id para identificar a tarefa e data.results para obter as URLs do vídeo. Certifique-se de baixar e salvar os resultados antes do prazo em data.video_expires_at.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-0",
  "status": "completed",
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/videos/example.mp4"
    ],
    "video_expires_at": "2026-09-07T00:00:00Z",
    "last_frame_url": null,
    "processing_time": 48
  }
}

Falha na tarefa: payload de callback de erro

Se a geração falhar, o callback retornará status=failed. Utilize o id para identificar a tarefa, data.failed_reason para verificar o motivo do erro e data.credits_refunded para saber a quantidade de créditos reembolsados.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-0",
  "status": "failed",
  "data": {
    "failed_reason": "provider_failed",
    "credits_refunded": 60
  }
}

Exemplo de código receptor

export async function POST(request: Request) {
  const callbackData = await request.json();

  if (callbackData.status === "completed") {
    const videoUrls = callbackData.data.results;
    // Save the video URLs and mark this task as completed in your application.
    console.log(callbackData.id, videoUrls);
  }

  if (callbackData.status === "failed") {
    const { failed_reason, credits_refunded } = callbackData.data;
    // Record the failure reason and refunded credits for this task.
    console.error(callbackData.id, failed_reason, credits_refunded);
  }

  return new Response(null, { status: 200 });
}

Este exemplo em Next.js lê o corpo do callback em JSON e trata diretamente as tarefas concluídas e com falha. Recomendamos implementar persistência e eliminação de duplicidades por ID de tarefa na sua aplicação, além de enfileirar processos demorados antes de responder ao callback.

Requisitos de mídia e limitações

  • Todas as URLs de mídia e de callback devem ser links públicos em HTTPS. Evite usar localhost, IPs privados e arquivos que exijam cookies ou autenticação. As URLs de vídeo/áudio de referência devem apontar diretamente para os arquivos de mídia legíveis.
  • No modo reference-to-video, envie ao menos uma referência, respeitando os limites de até 9 imagens, 3 vídeos, 3 arquivos de áudio e 12 referências combinadas. A duração total de vídeo e de áudio não deve exceder 15 segundos cada.
  • O modo text-to-video desconsidera todas as referências de mídia. O modo image-to-video processa apenas as imagens de primeiro e último frame, ignorando arquivos de vídeo e áudio. Use o modo reference-to-video para combinar mídias.
  • Para modelos Seedance 2.0, combine o áudio com pelo menos uma imagem ou vídeo para garantir compatibilidade. Exemplos que usam exclusivamente áudio estão disponíveis na página do Seedance 2.5.

Requisitos de imagem

  • Cada imagem deve ter menos de 30 MB.
  • Formatos aceitos: jpeg, png, webp, bmp, tiff, gif.
  • Proporção (largura ÷ altura): entre 0,4 e 2,5, inclusive.
  • A largura e a altura devem ter entre 300 e 6.000 pixels cada, inclusive.

Requisitos de vídeo

  • Formatos aceitos: mp4, mov.
  • Cada vídeo não deve exceder 100 MB.
  • Taxa de quadros: de 24 a 60 FPS, inclusive.
  • Proporção (largura ÷ altura): entre 0,4 e 2,5, inclusive.
  • Total de pixels (largura × altura): de 407.696 a 8.295.044, inclusive. Por exemplo, 614 × 664 = 407.696 e 3.326 × 2.494 = 8.295.044. Estes são exemplos de contagem de pixels, e não requisitos fixos de largura e altura.

Requisitos de áudio

  • Formatos aceitos: wav, mp3.
  • Cada arquivo de áudio não deve exceder 15 MB.

Erros

Erros de requisição retornam um objeto contendo code e message. Uma tarefa aceita com sucesso ainda pode falhar posteriormente durante o processamento; monitore seu status por consulta ou configure um callback de falha.

{
  "error": {
    "code": "invalid_request",
    "message": "input.prompt is required."
  }
}
HTTPCampoO que fazer
400invalid_request
Corrija a estrutura do JSON, prompts ausentes, intervalos de parâmetros ou URLs de mídia antes de tentar novamente.
401invalid_api_key
Verifique o token Bearer e se a chave de API continua ativa.
402insufficient_credits
Adicione créditos à conta ou reduza o custo da geração. A resposta pode indicar os saldos necessário e disponível.
403forbidden
Verifique a restrição aplicada à conta descrita na mensagem de erro.
404not_found
Confirme se o ID da tarefa está correto e se ela foi criada pela mesma chave de API utilizada.
429rate_limited
Aguarde o tempo indicado no cabeçalho Retry-After antes de realizar novas tentativas.
500internal_error
Examine a mensagem de erro e os logs da API. Reenvie com cautela; novas tentativas de criação geram novas cobranças.

Limites de requisição

Criação de tarefas: por padrão, cada chave de API permite até 100 requisições por minuto. No momento, limites personalizados não estão disponíveis.

Consulta de tarefas: por padrão, cada chave de API permite até 120 requisições por minuto. As requisições de consulta e de criação de tarefas são contabilizadas separadamente.

Respostas com HTTP 429 incluem o cabeçalho Retry-After: 60 para criação e Retry-After: 5 para consultas. Implemente recuo gradual (backoff) e evite consultas mais frequentes do que o recomendado.