Guia de uso
Criando vídeos curtos com Seedance-2.0-Fast via API hiapi
TL;DR
- O que é isto: um fluxo de trabalho completo para produzir vídeos curtos verticais no estilo TikTok/Reels com seedance-2.0-fast via API hiapi — desde sua primeira chamada de tarefa assíncrona até renderizar uma semana inteira de posts com um script em lote. O clipe curto incorporado abaixo foi gerado com exatamente as mesmas requisições mostradas neste guia.
- Por que escolher este modelo para vídeos curtos: saída nativa em
9:16, duração de 4–15 segundos, renderização em 720p por $0.1772 por segundo — um clipe vertical de 5 segundos custa cerca de $0.89 (preços em tempo real). O nível de rascunho em 480p é de $0.0843 por segundo, permitindo refinar o gancho de abertura várias vezes a baixo custo antes de definir a renderização final. - Fatos verificados da API:
prompt,resolution(480p|720p) eduration(inteiro, 4–15) são obrigatórios.aspect_ratioaceita1:1,4:3,3:4,16:9,9:16,21:9,adaptive. Para imagem-para-vídeo, passe uma imagem estática viaimage_urls. Tudo passa pelo endpoint assíncrono unificado/v1/tasks— não há uma API separada específica para vídeo para aprender. - Fluxo de trabalho: use 480p para criar rascunhos e fixar o conceito, depois re-renderize em 720p as versões finais que serão mantidas e, como o envio de tarefas não é bloqueante, distribua vários prompts em paralelo.
Por que o seedance-2.0-fast se encaixa no ciclo de vídeos curtos
Conteúdo de vídeo curto é um jogo de escala — você raramente publica um único clipe, mas sim uma fila inteira, mantendo os que funcionam. Isso muda o que você realmente precisa de um modelo de vídeo: saída vertical nativa, rápida e barata importa mais do que qualidade bruta. O seedance-2.0-fast foi construído em torno desse trade-off:
- Preço por segundo mantém a iteração sob controle. Em 480p, um rascunho de 4 segundos custa cerca de $0.34; um clipe de 5 segundos como o abaixo custa $0.42 em 480p e $0.89 em 720p. Como a cobrança segue exatamente
duration × rate,durationé sua única alavanca de custo — não há uma taxa adicional de "qualidade" separada para considerar no orçamento (verificado contra a página de preços em tempo real). 9:16nativo. Você renderiza vertical diretamente viaaspect_ratio, em vez de cortar um clipe 16:9 e perder a composição descrita pelo prompt.- O modo de vídeo de referência é mais barato, não mais caro. Passe um clipe em
reference_video_urlspara orientação de estilo/movimento e a taxa cai para $0.1072 por segundo em 720p e $0.0486 por segundo em 480p — útil quando você encontra um estilo que deseja repetir em todo um lote.
Se você publica peças de destaque em vez de conteúdo diário em lote, o fluxo abaixo continua válido — para uma introdução mais ampla ao modelo, consulte nosso artigo complementar seedance-2.0-fast para integração de API.
Preparação
Você precisa de uma chave de API hiapi — sem SDK:
export HIAPI_API_KEY="sk-..."
Todo modelo de vídeo na hiapi usa o mesmo endpoint assíncrono de tarefas: POST https://api.hiapi.ai/v1/tasks retorna imediatamente um taskId, e então você consulta GET /v1/tasks/{taskId} até a conclusão. A referência completa está na documentação.
Seu primeiro clipe vertical
A requisição válida mínima requer prompt, resolution e duration. Adicione aspect_ratio: "9:16" para obter o formato de vídeo curto:
curl -X POST https://api.hiapi.ai/v1/tasks \
-H "Authorization: Bearer $HIAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2.0-fast",
"input": {
"prompt": "Plano vertical em close-up: mãos colocam uma panqueca dourada no topo de uma pilha alta de panquecas, servidas em um prato de vidro sobre uma mesa rústica de madeira em uma cozinha campestre iluminada pelo sol, com vapor subindo. Luz quente da manhã entra pela esquerda. Em seguida, uma porção de mel é despejada lentamente sobre a panqueca do topo, brilhando sob a luz, com o vapor continuando a subir. Câmera aconchegante, natural, com sensação de mão na câmera, profundidade de campo rasa, tons quentes. Sem sobreposição de texto.",
"resolution": "720p",
"aspect_ratio": "9:16",
"duration": 5
}
}'
A resposta retorna imediatamente um ID de tarefa:
{"code": 200, "data": {"taskId": "tk-hiapi-..."}, "message": "success"}
Consulte até que status seja success e então baixe imediatamente output[0].url — essa URL tem validade limitada. Abaixo está o clipe que essa requisição realmente gerou:
O resultado da renderização foi 720×1280 (9:16 limpo), com duração de pouco mais de 5 segundos, cobrado $0.886 — exatamente 5 × $0.1772, confirmando na prática a cobrança por segundo, não apenas o que diz a página de preços.
Esquema de entrada verificado contra a API em tempo real
O esquema do seedance-2.0-fast é estrito — enviar campos não suportados retorna 400, em vez de ser silenciosamente ignorado:
| Campo | Tipo | Obrigatório | Valores |
|---|---|---|---|
prompt |
string | ✅ | Sua descrição do plano |
resolution |
string | ✅ | 480p, 720p |
duration |
integer | ✅ | 4–15 (segundos) |
aspect_ratio |
string | Opcional | 1:1, 4:3, 3:4, 16:9, 9:16, 21:9, adaptive |
image_urls |
array | Opcional | Imagem estática de origem para imagem-para-vídeo |
Se um campo obrigatório for omitido, a tarefa é rejeitada antes de criar qualquer coisa — requisições malformadas não são cobradas. Corresponda exatamente aos nomes de campo desta tabela; scripts de vídeo curto escritos para outros modelos de vídeo (com motion_strength, seed, first_frame_url) receberão 400 aqui, em vez de serem ignorados.
Função Python reutilizável
Enviar, consultar, baixar — cerca de 30 linhas de código cobrem um ciclo de produção:
import os, time, requests
API = "https://api.hiapi.ai/v1/tasks"
HEADERS = {"Authorization": f"Bearer {os.environ['HIAPI_API_KEY']}"}
def submit(prompt: str, duration: int = 5, resolution: str = "720p",
aspect_ratio: str = "9:16", **extra) -> str:
r = requests.post(API, headers=HEADERS, json={
"model": "seedance-2.0-fast",
"input": {"prompt": prompt, "duration": duration,
"resolution": resolution, "aspect_ratio": aspect_ratio, **extra},
}, timeout=60)
data = r.json()
task_id = (data.get("data") or {}).get("taskId")
if not task_id:
raise RuntimeError(f"submit failed: {data}")
return task_id
def wait(task_id: str, timeout_s: int = 900) -> dict:
deadline = time.time() + timeout_s
while time.time() < deadline:
task = requests.get(f"{API}/{task_id}", headers=HEADERS, timeout=30).json()["data"]
if task["status"] == "success":
return task
if task["status"] == "fail":
raise RuntimeError(f"task failed: {task.get('error')}")
time.sleep(8)
raise TimeoutError(task_id)
def make_clip(prompt: str, out_path: str, **kw):
task = wait(submit(prompt, **kw))
url = task["output"][0]["url"] # validade limitada — baixe imediatamente
with open(out_path, "wb") as f:
f.write(requests.get(url, timeout=120).content)
Uma renderização de 5 segundos em 720p geralmente fica pronta em um a dois minutos; sob carga de pico, considere até cerca de 10 minutos antes de tratá-la como timeout.
Imagem-para-vídeo: comece a partir de um quadro fixo
Para clipes de produto ou de marca, a deriva do prompt é o risco real — você quer seu produto ou prato no quadro, não a interpretação do modelo.image_urls resolve isso: gere ou fotografe uma imagem estática e depois a anime.
task_id = submit(
"A pilha de panquecas se acomoda suavemente, o vapor continua a espiralar para cima, então o mel começa a ser despejado de fora do quadro, com as primeiras gotas caindo sobre a panqueca do topo. Movimento lento e estável com sensação de mão na câmera, luz quente da manhã.",
duration=5, resolution="720p", aspect_ratio="9:16",
image_urls=["https://your-cdn.example/pancake-still.jpg"],
)
Composição, iluminação e posição do sujeito ficam travadas na sua imagem estática de referência — o prompt só precisa descrever o movimento que acontece a seguir. É ideal para qualquer clipe em que o quadro inicial importe mais do que a intuição do modelo (um prato, uma imagem de produto, um cenário de marca).
Geração em lote de um dia de clipes curtos
Como /v1/tasks é assíncrono, a produção em lote é: enviar tudo e depois coletar.
briefs = [
("hook-pancakes", "Plano vertical em close-up: mãos empilham uma panqueca dourada……"),
("hook-latte", "Plano vertical: vapor sobe de um latte fresco enquanto o leite é despejado……"),
("hook-citrus", "Macro vertical: uma faca corta uma fruta cítrica……"),
]
tasks = {name: submit(p, duration=5) for name, p in briefs} # distribuição paralela
for name, tid in tasks.items(): # coleta dos resultados
result = wait(tid)
url = result["output"][0]["url"]
open(f"{name}.mp4", "wb").write(requests.get(url, timeout=120).content)
O custo permanece previsível porque a cobrança é estritamente duration × rate:
| Cenário | Especificação | Custo |
|---|---|---|
| 1 iteração de rascunho | 4 segundos · 480p | cerca de $0.34 |
| 1 clipe publicável | 5 segundos · 720p | cerca de $0.89 |
| 5 clipes (lote diário) | 5 × 5 segundos · 720p | cerca de $4.43 |
| Lote com correspondência de estilo | 5 segundos · 720p com reference_video_urls |
cerca de $0.54 por clipe |
Um fluxo que se sustenta na prática: crie rascunhos em 480p de cada ideia, mantenha as que valem a pena publicar e re-renderize apenas essas em 720p. Quando encontrar um estilo que vale repetir, reference_video_urls trava o estilo com uma taxa por segundo menor do que uma renderização 720p totalmente nova.
Dicas de prompt para o feed
Os fatores que realmente moldaram a saída nos testes de renderização, especialmente para vídeos curtos:
- Descreva a cena como vertical e defina
aspect_ratio: "9:16"para corresponder. Prompts escritos para cenas em 16:9 acabam cortados ao centro quando forçados para 9:16; descrever desde o início uma composição vertical próxima (como o clipe de panquecas acima) faz o sujeito preencher o quadro. - Comece com movimento, não com cenário. O instante de abertura de um clipe de feed precisa já estar fazendo algo — uma mão já empilhando, o mel já sendo despejado — em vez de um plano de estabelecimento lento antes de entregar o payoff.
- Mantenha uma ação clara por clipe. A renderização de 5 segundos acima faz exatamente duas coisas em sequência (empilhar e depois despejar), e isso fica nítido; enfiar três ações não relacionadas em um clipe costuma deixar todas nebulosas.
- Declare iluminação e materiais explicitamente. "Luz quente da manhã", "vapor subindo", "brilhando" — detalhes sensoriais específicos são o que distingue uma renderização concreta e apetitosa de uma genérica.
Perguntas frequentes
O seedance-2.0-fast é especialmente adequado para TikTok e Reels?
Sim — o suporte nativo a 9:16 e a cobrança por segundo (em vez de uma taxa fixa por clipe) o tornam ideal para um ritmo de publicação em que você renderiza várias opções curtas e mantém a mais forte.
Quanto custa um único clipe curto?
Em 720p, o custo é duração (segundos) × $0.1772. Um clipe de 5 segundos custa $0.886; um de 10 segundos custa $1.772. Em 480p a taxa cai para $0.0843 por segundo. Antes de orçar um lote inteiro, confirme a taxa atual na página de preços.
Posso animar uma imagem estática em vez de gerar apenas a partir de texto?
Sim, via image_urls na requisição — veja a seção de imagem-para-vídeo acima. Quando um produto, prato ou cenário específico precisa aparecer exatamente como foi fotografado, esse é o caminho mais confiável.
Qual é o clipe mais curto e o mais longo que posso gerar?
duration aceita inteiros de 4 a 15 segundos. Frações de segundo não são suportadas.
A resolução afeta algo além do tamanho em pixels e do preço?
No esquema em si, não — resolution controla apenas o tamanho da saída e a taxa por segundo. Composição e movimento são totalmente determinados pelo prompt e pelo aspect_ratio.
Resumo
Fazer vídeos curtos com o seedance-2.0-fast se resume a um endpoint assíncrono, três campos obrigatórios e uma cobrança por segundo que incentiva iterar antes de definir: crie rascunhos de conceitos verticais em 480p, use image_urls para travar o quadro inicial da solução vencedora se um produto ou sujeito específico precisar aparecer com total precisão e, em seguida, re-renderize em 720p as versões finais que serão mantidas. Obtenha uma chave de API e comece pela requisição no topo deste guia — a página do modelo seedance-2.0-fast tem a referência completa de parâmetros e os preços atuais para você se aprofundar.
Artigos relacionados
Ver todos os artigos →-
Guia de uso
Guia de introdução ao seedream-5.0-pro/image-to-image: capacidades, preços e pontos de integração
Limites de capacidade, modelo de cobrança e práticas de integração de engenharia do modelo de edição de imagem da ByteDance
-
Guia de uso
Guia prático do seedream-5.0-pro text-to-image: limites de capacidade, integração via API e controle de custos
Perspectiva prática para desenvolvedores: dos pontos-chave dos parâmetros à estimativa de custo de US$ 0,05 por imagem
-
Guia de uso
Guia de introdução ao Hailuo 2.3 Fast image-to-video: limites de capacidade, preços e práticas de integração
Pontos-chave de seleção e integração do modelo image-to-video MiniMax para desenvolvedores