Introdução
O Seedance 1.5 Pro imagem para vídeo começa o clipe numa imagem que você fornece e a anima por até 12 segundos. Com camera_fixed ligado, o enquadramento enviado fica exatamente como foi composto, e é por isso que este endpoint gera planos úteis para composição.
O ByteDance Seedance 1.5 Pro publica dois endpoints, texto para vídeo e imagem para vídeo. Os dois devolvem clipes de 4 a 12 segundos em 480p, 720p ou 1080p com áudio nativo, e os dois têm a chave camera_fixed.
Escolha o modo do Seedance 1.5 Pro pelo material inicial
| Material inicial | Modo |
|---|---|
| Uma imagem inicial aprovada | Seedance 1.5 Pro Imagem para vídeo |
| Um roteiro ou a descrição de uma cena | Seedance 1.5 Pro Texto para vídeo |
Recursos e destaques
camera_fixed segura o quadro
Em false, o padrão, o modelo inventa os próprios movimentos: uma deriva, um avanço, uma órbita lenta. Em true, a câmera para enquanto o sujeito continua se movendo dentro do quadro. Um quadro travado pode ser rastreado, recortado, composto ou posto em loop, e nem o Seedance 2.0 nem o 2.5 têm essa chave.
Som na mesma passada
generate_audio vem em true e gera ambiência, efeitos de movimento e voz sincronizados com os quadros. A solicitação sobe para uma faixa de preço mais alta, então desligue para loops de produto e planos que serão sonorizados depois.
Um teto claro
Os clipes duram de 4 a 12 segundos inteiros em 480p, 720p ou 1080p, em seis proporções fixas com 16:9 como padrão e sem opção adaptativa. Não há endpoint de referências; seed está disponível em 480p e 720p. Trabalhos que pedem 4K, tomadas mais longas ou elenco com várias imagens ficam no Seedance 2.0 ou 2.5; o que o 1.5 Pro mantém é a câmera travada.
Parâmetros da requisição
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
prompt | Sim | Obrigatório, e deve dizer o que acontece depois do quadro em vez de repetir o que já está visível: a ação, a passagem do tempo, o som. pelo menos 3 caracteres |
image_url | Sim | Link público e diretamente baixável para o primeiro quadro; obrigatório. |
last_image_url | Não | Quadro final opcional: enviado junto com |
aspect_ratio | Não | Enquadramento de saída, seis valores fixos, 16:9 por padrão. |
resolution | Não | Resolução de saída, 720p por padrão e 1080p no topo; nada mais alto é oferecido aqui. Ela define uma faixa de preço. |
duration_seconds | Não | Duração em segundos inteiros, de 4 a 12, padrão 5, e a quantidade cobrada. |
generate_audio | Não | Se uma trilha nativa é renderizada em sincronia com a imagem. Valor padrão: |
camera_fixed | Não | Trava a câmera, false por padrão. Posto em true, o quadro fica parado enquanto o sujeito se move dentro dele — ideal para planos de produto e chapas destinadas a um fundo estático. Valor padrão: |
seed | Não | Inteiro de 0 a 2147483647 para o ponto de partida aleatório; omita e cada execução sorteia o seu. |
Preços
| Resolução | Gerar áudio: Não | Gerar áudio: Sim |
|---|---|---|
| $0.0112 / segundo | $0.0223 / segundo |
| $0.0227 / segundo | $0.0454 / segundo |
| $0.0491 / segundo | $0.0982 / segundo |
Casos de uso
Planos para composição
Envie uma imagem já aprovada, ligue camera_fixed e a composição se mantém o clipe inteiro enquanto só o sujeito se move. O resultado se comporta como material de tripé: um fundo limpo para recorte, uma superfície estável para rastrear um título, um plano que o editor encaixa numa sequência real.
Giros de produto e loops
Um quadro fixo com um objeto girando é o caso clássico: nada deriva, o horizonte fica nivelado e o último quadro chega perto o bastante do primeiro para fazer loop. Desligue generate_audio, porque um loop de produto quase nunca pede som ambiente.
Movimento lento do ambiente
O exemplo publicado sobrepõe neve caindo, vapor subindo e água a uma única imagem, com um avanço muito lento para nada se perder na velocidade da câmera. Clima, fumaça e água são justamente os movimentos que uma composição parada valoriza melhor.
Guia de prompt e dicas práticas
Envie os dois campos obrigatórios
Aqui prompt e image_url são obrigatórios, e o prompt precisa de pelo menos 3 caracteres. A imagem deve ser um JPEG, PNG ou WebP público e baixável diretamente, com menos de 10 MB. Textos, marcas d'água e logotipos da imagem passam para o vídeo, então remova-os antes.
Combine a proporção com a imagem
Não há opção adaptativa e aspect_ratio usa 16:9 por padrão. Se a proporção pedida for diferente da imagem, o quadro é reenquadrado e o sujeito pode perder as margens, então escolha a proporção da sua imagem.
Adapte o exemplo incluído
O exemplo publicado usa aspect_ratio 16:9, duration_seconds 5 e resolution 720p, com o áudio no padrão.
Snow keeps falling through the lantern light and steam pours off the water. She sets the folded towel robe down on the rock and sinks slowly into the spring up to her collarbone, tipping her head back and exhaling a long plume of breath into the cold air. Steam swells across the frame and snow settles on her wet hair. Very slow push-in, warm lantern gold against deep blue snow.
A imagem traz as lanternas e o lugar; o prompt só a faz afundar na fonte termal e soltar o ar. Mantenha essa divisão ao usar sua própria imagem.
Mantenha o movimento dentro de um quadro travado
Com camera_fixed em true, descreva só movimentos que acontecem dentro do quadro, porque uma instrução de câmera e uma câmera travada se contradizem. Confirme o movimento em 4 ou 5 segundos antes de ir para 12, já que uma tomada mais longa se afasta mais da imagem de origem.
Início rápido da API
# Generate the idempotency key once; reuse it when retrying after a lost response.
export SPICY_IDEMPOTENCY_KEY="${SPICY_IDEMPOTENCY_KEY:-$(uuidgen)}"
curl -X POST https://api.spicyapi.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $SPICY_IDEMPOTENCY_KEY" \
-d '{
"model": "bytedance/seedance-1.5-pro/image-to-video",
"input": {
"aspect_ratio": "16:9",
"duration_seconds": 5,
"generate_audio": true,
"image_url": "https://example.com/reference.png",
"prompt": "A slow aerial shot drifting over a misty pine forest at sunrise",
"resolution": "720p"
}
}'
# Copy data.taskId from the response into TASK_ID, then poll the status.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
-H "Authorization: Bearer $SPICY_API_KEY"
Consulte a referência da API para autenticação, esquema completo, polling e tratamento de erros.
















