Claude Opus 5.5 já está disponível no SeedRouter
SeedRouter Docs

Seedance 2.0

Gere vídeo com o Seedance 2.0 pela API de tarefas oficial do ModelArk: texto para vídeo, primeiro e último quadro, e referências de imagem, vídeo e áudio, de 480p a 4K.

View Markdown

O Seedance 2.0 é o modelo de geração de vídeo da ByteDance (Dreamina Seedance 2.0). Envie o corpo de tarefa oficial do ModelArk, guarde o identificador de tarefa retornado e leia o vídeo pronto na tarefa. Imagens, vídeos e áudio vão em content como URLs.

IDs de modelo

ID de modeloResoluçõesObservações
dreamina-seedance-2-0480p, 720p, 1080p, 4KModelo completo
dreamina-seedance-2-0-fast480p, 720pPreço por segundo mais baixo
dreamina-seedance-2-0-mini480p, 720pO menor preço por segundo

Os três IDs aceitam os mesmos parâmetros. Veja os preços atuais na página do modelo.

Exemplo rápido

curl https://api.seedrouter.ai/v1/contents/generations/tasks \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "dreamina-seedance-2-0",
    "content": [{"type": "text", "text": "A red paper boat drifts across a calm pond at sunrise, slow dolly-in"}],
    "resolution": "720p",
    "ratio": "16:9",
    "duration": 5,
    "generate_audio": true
  }'

Endpoint

POST https://api.seedrouter.ai/v1/contents/generations/tasks
CabeçalhoValor
AuthorizationBearer YOUR_API_KEY
Content-Typeapplication/json

O corpo é a requisição oficial "criar uma tarefa de geração de vídeo" do ModelArk. Se você já chama o ModelArk, altere apenas a URL base para https://api.seedrouter.ai/v1 e a chave de API. A resposta é {"id": "task_..."}, não o vídeo pronto. Mantenha as chaves de API em código do servidor.

Parâmetros

NomeTipoObrigatórioPadrãoObservações
modelstringSim—Um dos três IDs de modelo acima.
contentobject[]Sim—O prompt e as mídias; veja abaixo.
resolutionenumNão720p480p, 720p, 1080p, 4k; os IDs Fast e Mini aceitam apenas 480p e 720p.
ratioenumNãoadaptive16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive.
durationintegerNão5De 4 a 15 segundos, ou -1 para deixar o modelo escolher.
generate_audiobooleanNãotrueGera som junto com o vídeo.
watermarkbooleanNãofalseAdiciona uma marca d'água.
return_last_framebooleanNãofalseTambém retorna o quadro final como URL de imagem.
execution_expires_afterintegerNão172800De 3600 a 259200 segundos. Uma tarefa ainda não concluída após esse prazo passa a expired e não é cobrada.
priorityintegerNão0De 0 a 9.
safety_identifierstringNão—De 1 a 64 caracteres que identificam o seu usuário final. Um hash serve.
service_tierenumNãodefaultApenas default.
content_filterbooleanNãotrueExtensão do SeedRouter. false desativa a filtragem de conteúdo nesta requisição.

Itens de content

ItemFormatoPapelLimite
Texto{"type": "text", "text": "..."}—Um.
Imagem{"type": "image_url", "image_url": {"url": "https://..."}, "role": "..."}first_frame, last_frame, reference_imageAté 9 imagens de referência.
Vídeo{"type": "video_url", "video_url": {"url": "https://..."}, "role": "reference_video"}reference_videoAté 3.
Áudio{"type": "audio_url", "audio_url": {"url": "https://..."}, "role": "reference_audio"}reference_audioAté 3. Exige uma imagem ou vídeo de referência.

Campos desconhecidos são recusados. Não são suportados: seed, callback_url (consulte a tarefa em vez disso), draft e draft_task, tools, e frames e camera_fixed, exclusivos da versão 1.x, além de output_format e omni_reference_task_type (apenas no Seedance 2.5). Não é possível cancelar nem excluir tarefas.

Modos

O modo decorre dos itens de content; não há parâmetro de modo.

Modocontent
Texto para vídeoum item de texto
Primeiro quadrotexto (opcional) + uma imagem com o papel first_frame, ou uma imagem sem papel
Primeiro e último quadrotexto (opcional) + uma imagem first_frame + uma imagem last_frame
Referência multimodaltexto + qualquer combinação de itens reference_image, reference_video e reference_audio

Os modos com primeiro quadro não podem ser combinados com itens de referência. Com várias imagens ou qualquer outra mídia, toda imagem precisa de um role.

Exemplo com referências

curl https://api.seedrouter.ai/v1/contents/generations/tasks \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "dreamina-seedance-2-0",
    "content": [
      {"type": "text", "text": "The character from the image walks through the market in the video, same camera move"},
      {"type": "image_url", "image_url": {"url": "https://example.com/character.png"}, "role": "reference_image"},
      {"type": "video_url", "video_url": {"url": "https://example.com/market.mp4"}, "role": "reference_video"}
    ],
    "ratio": "adaptive",
    "duration": 8
  }'

Substitua as URLs de exemplo por arquivos seus acessíveis.

Entradas de mídia

Esta API aceita apenas referências por URL. Base64, URLs data:, IDs asset:// e envios multipart não são aceitos. O Playground envia os arquivos selecionados para o armazenamento antes de submeter as URLs deles.

As mídias precisam ser URLs HTTP(S) públicas e atender aos limites oficiais do modelo:

MídiaFormatosLimites
ImagemJPEG, PNG, WebP, BMP, TIFF, GIF, HEIC, HEIFMenos de 30 MB; largura e altura de 300 a 6000 px; proporção (largura / altura) de 0,4 a 2,5; de 1 a 9 imagens de referência
VídeoMP4, MOV (H.264 ou H.265)De 2 a 15 segundos cada, até 3, no máximo 15 segundos no total; no máximo 200 MB; de 24 a 60 FPS; largura e altura de 300 a 6000 px; proporção de 0,4 a 2,5; de 407.696 a 8.295.044 pixels (largura × altura)
ÁudioWAV, MP3De 2 a 15 segundos cada, até 3, no máximo 15 segundos no total; exige uma imagem ou vídeo de referência; no máximo 15 MB

O modelo não suporta imagens e vídeos de referência que contenham rostos humanos reais.

As mídias são verificadas quando a tarefa começa, antes de qualquer geração. Uma tarefa cuja mídia viole um desses limites termina como failed com invalid_request_error e uma mensagem que indica a regra, por exemplo The request was rejected: content reference videos must total at most 15 seconds., e não é cobrada. Um arquivo que não possa ser lido nesse momento é repassado ao modelo, que o aceita ou recusa; em qualquer dos casos, uma tarefa que falha não é cobrada.

Fatores de custo

Consulte a seção de preços do modelo para as tarifas atuais. O Seedance 2.0 cobra por tokens de vídeo, a unidade oficial:

video tokens = (output seconds + reference video seconds) × width × height × 24 / 1024

A tarifa por milhão de tokens depende da resolução de saída e de a requisição incluir ou não um vídeo de referência; uma requisição com vídeo de referência usa uma tarifa mais baixa para todos os seus tokens. Entradas de texto, imagem e áudio não são cobradas. Em 16:9, um segundo equivale a 10.044 tokens em 480p (864×496), 21.600 em 720p, 48.600 em 1080p e 194.400 em 4K.

A cobrança segue os tokens que o vídeo pronto informa (usage.completion_tokens), então duration: -1 é cobrado pela duração efetivamente gerada. Os clipes renderizados ficam um pouco mais longos que a duração pedida: uma requisição de 5 segundos em 720p e 16:9 renderiza 121 quadros e informa 108.900 tokens em vez de 108.000. Consulte as cobranças finais no histórico de uso da sua conta. Tarefas que falham ou expiram não são cobradas.

Esquema de saída

O envio retorna o identificador da tarefa:

{"id": "task_..."}

Consultar a tarefa

curl https://api.seedrouter.ai/v1/contents/generations/tasks/YOUR_TASK_ID \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY"

Consulte a cada 10–20 segundos até que status seja succeeded, failed ou expired. Um tempo limite de rede durante a consulta não significa que a geração falhou: guarde o identificador da tarefa e retome a verificação. Não crie outra tarefa para acompanhar o progresso.

Exemplo completo de consulta

Execute isto após o exemplo de envio em Python acima.

import time

deadline = time.monotonic() + 1800
while time.monotonic() < deadline:
    result = requests.get(
        f"https://api.seedrouter.ai/v1/contents/generations/tasks/{task_id}",
        headers={"Authorization": f"Bearer {os.environ['SEEDROUTER_API_KEY']}"},
        timeout=30,
    )
    result.raise_for_status()
    task = result.json()
    if task["status"] == "succeeded":
        print(task["content"]["video_url"])
        break
    if task["status"] in ("failed", "expired"):
        raise RuntimeError(task["error"]["message"])
    time.sleep(15)
else:
    raise TimeoutError(f"Still waiting. Resume polling task {task_id}.")

Tarefa bem-sucedida

{
  "id": "task_...",
  "model": "dreamina-seedance-2-0",
  "status": "succeeded",
  "content": {
    "video_url": "https://static.seedrouter.ai/media/tasks/task_example/0.mp4",
    "last_frame_url": "https://static.seedrouter.ai/media/tasks/task_example/last_frame/0.jpg"
  },
  "usage": {"completion_tokens": 108900, "total_tokens": 108900},
  "seed": 42,
  "resolution": "720p",
  "ratio": "16:9",
  "duration": 5,
  "framespersecond": 24,
  "generate_audio": true,
  "draft": false,
  "output_format": "mp4",
  "service_tier": "default",
  "execution_expires_after": 172800,
  "priority": 0,
  "created_at": 1790321515,
  "updated_at": 1790321652
}
CampoSignificado
idGuarde este identificador para consultas posteriores.
statusqueued, running, succeeded, failed ou expired.
content.video_urlO vídeo gerado.
content.last_frame_urlO quadro final, quando return_last_frame é true.
usage.completion_tokensTokens de vídeo do vídeo pronto; a quantidade cobrada.
duration, resolution, ratio, framespersecond, seedO que foi efetivamente renderizado; seed é o valor escolhido pelo modelo.
created_at, updated_atMarcas de tempo Unix em segundos.
error{"code", "message"} em uma tarefa que falhou ou expirou.

As URLs de vídeo ficam hospedadas no nosso armazenamento. Salve o arquivo no seu próprio armazenamento quando precisar de uma cópia duradoura.

Listar tarefas

curl "https://api.seedrouter.ai/v1/contents/generations/tasks?page_num=1&page_size=20&filter.status=succeeded" \
  -H "Authorization: Bearer $SEEDROUTER_API_KEY"

Retorna {"total": N, "items": [...]} com objetos de tarefa dos últimos 7 dias, dos mais recentes para os mais antigos. page_num e page_size vão de 1 a 500 (valores padrão 1 e 20). Filtros: filter.status, filter.model, filter.task_ids (repetível) e filter.service_tier.

Erros

Requisições recusadas antes de a tarefa ser criada retornam um erro HTTP com um objeto error e não são cobradas. Uma tarefa que falha após ser aceita retorna HTTP 200 na consulta, com status: "failed" (ou "expired") e um objeto error. Uma saída retida pela filtragem de conteúdo falha com content_policy_violation; uma tarefa que ultrapassa execution_expires_after termina como expired com task_expired.

Veja o catálogo de erros comum para códigos, status HTTP e orientações de nova tentativa.

{
  "id": "task_...",
  "model": "dreamina-seedance-2-0",
  "status": "failed",
  "error": {
    "code": 60001,
    "message": "The request was rejected by the content policy. Please revise the prompt or input images."
  }
}

Se o próprio envio atingir o tempo limite, verifique sua lista de tarefas antes de enviar de novo: a primeira requisição pode já ter sido aceita.

Dicas

  • Descreva o tema, a ação, o movimento de câmera e a iluminação em frases completas.
  • Faça o rascunho em 480p com uma duration curta e depois renderize a versão escolhida em uma resolução mais alta.
  • Encadeie cenas com return_last_frame: use o quadro retornado como first_frame da próxima tarefa.

Relacionados