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

Seedance 2.5

Gere, edite e estenda vídeo com o Seedance 2.5 pela API de tarefas oficial do ModelArk: até 30 segundos em 1080p, com até 30 referências de imagem, 10 de vídeo e 10 de áudio.

View Markdown

O Seedance 2.5 é o modelo de geração de vídeo mais recente da ByteDance (Dreamina Seedance 2.5). 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çõesDuração
dreamina-seedance-2-5480p, 720p, 1080pDe 4 a 30 segundos, ou automática

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-5",
    "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—dreamina-seedance-2-5.
contentobject[]Sim—O prompt e as mídias; veja abaixo.
resolutionenumNão720p480p, 720p, 1080p.
ratioenumNãoadaptive16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive. Precisa ser adaptive (ou omitido) com um primeiro quadro e para edit e extend.
durationintegerNão-1De 4 a 30 segundos, ou -1 para deixar o modelo escolher. Precisa ser -1 para edit.
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.
output_formatenumNãomp4mp4 ou mov.
omni_reference_task_typeenumNãoautoauto, reference, edit, extend. edit e extend exigem um vídeo de referência.
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é 30 imagens de referência.
Vídeo{"type": "video_url", "video_url": {"url": "https://..."}, "role": "reference_video"}reference_videoAté 10.
Áudio{"type": "audio_url", "audio_url": {"url": "https://..."}, "role": "reference_audio"}reference_audioAté 10.

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. 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
Editar um vídeotexto + um reference_video, com omni_reference_task_type: "edit"
Estender um vídeotexto + um reference_video, com omni_reference_task_type: "extend"

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-5",
    "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 30 imagens de referência
VídeoMP4, MOV (H.264 ou H.265)De 2 a 30 segundos cada (de 4 a 30 segundos para edit), até 10, no máximo 30 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 30 segundos cada, até 10, no máximo 30 segundos no total; 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.5 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 9.607,5 tokens em 480p (854×480), 21.600 em 720p e 48.600 em 1080p.

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-5",
  "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-5",
  "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.
  • Para editar um vídeo, defina omni_reference_task_type como edit e descreva apenas o que deve mudar.

Relacionados