HiAPI
Blogue

Guia de uso

Criando vídeos curtos com Seedance-2.0-Fast via API hiapi

Sep 15, 2026
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) e duration (inteiro, 4–15) são obrigatórios. aspect_ratio aceita 1:1, 4:3, 3:4, 16:9, 9:16, 21:9, adaptive. Para imagem-para-vídeo, passe uma imagem estática via image_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:16 nativo. Você renderiza vertical diretamente via aspect_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_urls para 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 →

Comece a criar com artefactos de IA persistentes

Obtenha a sua chave de API e chame modelos de imagem, vídeo e áudio através de uma única API baseada em tasks.

Ler a documentação da API