SeeGen AI API
Bem-vindo à API da SeeGen AI — uma única API para geração de vídeo cinematográfico e imagens de alta fidelidade em vários modelos líderes.
Visão geral
A SeeGen AI é uma API de geração unificada: um conjunto consistente de endpoints para executar vários modelos líderes de vídeo e imagem por IA. Escolha um modelo com o parâmetro model — autenticação, envio de tarefas, consulta de status e webhooks funcionam da mesma forma em todos eles.
Modelos disponíveis no momento:
- Vídeo — Seedance 2.0 Pro (
sd2), Seedance 2.0 Fast (sd2-fast), Seedance 2.0 Mini (sd2-mini), Seedance 2.5 (sd2.5), HappyHorse 1.1 (happyhorse) - Imagem — GPT Image 2 (
gpt-image-2), Nano Banana 2 (nano-banana-2), Nano Banana Pro (nano-banana-pro), Seedream 5.0 Lite (seedream-v5.0-lite), Seedream 5.0 Pro (seedream-v5.0-pro)
URL base: https://seegen.ai/api/v1
Modelo: informe qualquer um dos aliases acima no campo model (por exemplo, sd2, gpt-image-2).
Por que SeeGen AI?
Mais motivos para escolher a SeeGen AI:
- Muito mais do que Seedance 2.0: HappyHorse 1.1, Nano Banana, ChatGPT Image e outros.
- Nenhuma assinatura necessária — pague conforme o uso
- Acesso rápido aos modelos mais recentes
- Suporte ao cliente 24 horas por dia, 7 dias por semana
- Suporte para consultas oficiais relacionadas aos modelos
- Acesso ao console para desenvolvedores
- Aberto tanto para empresas quanto para usuários individuais
Preços
API Pack
125,000 créditos ($0.004/crédito)
~781 vídeos de 5s
API-XL Pack
500,000 créditos ($0.004/crédito)
~3,125 vídeos de 5s
Seedance 2.0 / Fast / Mini / 2.5 — cálculo de custo
Considere out = output_seconds e in = a soma de ⌈duration⌉ de cada vídeo de entrada (cada um arredondado para cima, mínimo out × 2/3). Seedance 2.5 segue o mesmo cálculo que Seedance 2.0. A taxa base do modelo correspondente é multiplicada por 1.5 e arredondada antes de aplicar a fórmula da tarefa (1080P é nativo no sd2.5, 2,5× sua taxa de 720P); os adicionais de upscale independentes de modelo permanecem em +30 / +40 créditos por segundo de saída para 2K / 4K (+20 para 1080P apenas em sd2-fast / sd2-mini).
| Sem vídeo de entrada | Com vídeo de entrada | |
|---|---|---|
| sd2.5: 480P | 30 × out | 23 × (out + in) |
| sd2.5: 720P | 60 × out | 45 × (out + in) |
| sd2.5: 1080P (nativo) | 150 × out | 113 × (out + in) |
| sd2.5: 2K | (60 + 30) × out | 45 × (out + in) + 30 × out |
| sd2.5: 4K | (60 + 40) × out | 45 × (out + in) + 40 × out |
| sd2-pro: 480P | 20 × out | 15 × (out + in) |
| sd2-pro: 720P | 40 × out | 30 × (out + in) |
| sd2-pro: 1080P (nativo) | 100 × out | 75 × (out + in) |
| sd2-pro: 2K | (40 + 30) × out | 30 × (out + in) + 30 × out |
| sd2-pro: 4K (nativo) | 200 × out | 150 × (out + in) |
| sd2-fast: 480P | 16 × out | 12 × (out + in) |
| sd2-fast: 720P | 32 × out | 24 × (out + in) |
| sd2-fast: 1080P | (32 + 20) × out | 24 × (out + in) + 20 × out |
| sd2-fast: 2K | (32 + 30) × out | 24 × (out + in) + 30 × out |
| sd2-fast: 4K | (32 + 40) × out | 24 × (out + in) + 40 × out |
| sd2-mini: 480P | 10 × out | 7.5 × (out + in) |
| sd2-mini: 720P | 20 × out | 15 × (out + in) |
| sd2-mini: 1080P | (20 + 20) × out | 15 × (out + in) + 20 × out |
| sd2-mini: 2K | (20 + 30) × out | 15 × (out + in) + 30 × out |
| sd2-mini: 4K | (20 + 40) × out | 15 × (out + in) + 40 × out |
Observação: sd2-pro 1080P e 4K são saída oficial nativa (4K = 5× a taxa de 720P); sd2-pro 2K e todos os modos 1080P/2K/4K de sd2-fast / sd2-mini recebem upscale da SeeGen AI. sd2.5 gera nativamente em 480P/720P/1080P (1080P = 2,5× a taxa de 720P, sem adicional de upscale) e usa upscale automático para 2K/4K. Solicite qualquer nível via outputResolution: "4k" (por exemplo, "2k" / "4k"; o gateway escolhe automaticamente entre nativo e upscale — apenas o preço e o rótulo Native diferem). sd2-mini custa 50% de sd2-pro — o nível mais barato. Seedance 2.5 usa o arredondamento de duração por vídeo, o piso mínimo de duração de entrada e o cálculo de upscale de Seedance 2.0. A taxa base do modelo correspondente é multiplicada por 1.5 e arredondada antes do cálculo da tarefa (por exemplo, 1080P com vídeo: 75 × 1.5 → 113). Os adicionais de upscale 2K / 4K independentes de modelo permanecem em +30 / +40 créditos por segundo de saída. Se o upscale falhar, a tarefa concluída retorna o fallback em 720P sem reembolso parcial de créditos.
- sd2.5 480P, saída de 4 segundos sem vídeo de entrada: 120 créditos
- sd2.5 720P, saída de 5 segundos sem vídeo de entrada: 300 créditos
- sd2.5 720P, saída de 5 segundos + vídeo de entrada de 3 segundos (mínimo de entrada de 4 segundos): 405 créditos
- sd2.5 1080P nativo, saída de 5 segundos sem vídeo de entrada: 750 créditos
- sd2.5 1080P nativo, saída de 5 segundos + vídeo de entrada de 5 segundos: 1,130 créditos
happyhorse — créditos por segundo
| Saída | Créditos / seg | Exemplo de 5s |
|---|---|---|
| 720P | 32 | 160 |
| 1080P | 60 | 300 |
| 2K | 32 + 30 | 310 |
| 4K | 32 + 40 | 360 |
Observação: o upscale 2K / 4K é somado à base de 720P (não se acumula com o 1080P nativo). t2v / i2v / r2v compartilham a mesma taxa por segundo — imagens de referência não são cobradas.
🎉 Oferta por tempo limitado: 33% de desconto em toda a geração de imagens — todos os preços de imagens abaixo já estão com desconto aplicado.
gpt-image-2 — créditos por imagem
| Resolução | Qualidade média | Alta qualidade |
|---|---|---|
| 1k | 1015 | 4770 |
| 2k (padrão) | 2335 | 84125 |
| 4k | 4060 | 154230 |
Cada tarefa produz 1 imagem. Envie N tarefas para obter N variações. Tarefas com falha reembolsam créditos automaticamente.
nano-banana-2 e nano-banana-pro — créditos por imagem
| Resolução | nano-banana-2 | nano-banana-pro |
|---|---|---|
| 1k | 2030 | 4060 |
| 2k (padrão) | 3045 | 4060 |
| 4k | 4770 | 74110 |
Cada tarefa produz 1 imagem. Envie N tarefas para obter N variações. Tarefas com falha reembolsam créditos automaticamente.
Seedream 5.0 — créditos por imagem
| Modelo / nível | Créditos |
|---|---|
| Lite 2k / 4k (taxa fixa) | 710 |
| Pro 1k (padrão) | 1015 |
| Pro 2k | 2030 |
Cada tarefa produz 1 imagem. Envie N tarefas para obter N variações. Tarefas com falha reembolsam créditos automaticamente. As imagens de referência não são cobradas separadamente.
Verifique seu saldo: GET /api/v1/account/credits
Autenticação
Todas as requisições da API exigem um token Bearer no cabeçalho Authorization. Você pode criar e gerenciar chaves de API em Configurações da conta.
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://seegen.ai/api/v1/account/creditsImportante: sua chave de API é exibida apenas uma vez, no momento da criação. Guarde-a com segurança. Você pode criar até 10 chaves de API por conta.
Início rápido
Gere um vídeo em duas etapas: crie uma tarefa e depois consulte o resultado.
# 1. Create a text-to-video task
TASK_ID=$(curl -s -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "sd2",
"inputs": {
"prompt": "A golden retriever running on the beach at sunset",
"duration": "5s",
"resolution": "1280x720"
}
}' \
https://seegen.ai/api/v1/jobs/createTask | jq -r '.taskId')
echo "Task created: $TASK_ID"
# 2. Poll for result
while true; do
RESULT=$(curl -s -H "Authorization: Bearer $API_KEY" \
"https://seegen.ai/api/v1/jobs/queryTask?taskId=$TASK_ID")
STATUS=$(echo $RESULT | jq -r '.status')
echo "Status: $STATUS"
if [ "$STATUS" = "COMPLETED" ] || [ "$STATUS" = "FAILED" ]; then
echo $RESULT | jq .
break
fi
sleep 5
doneEndpoints
/api/v1/jobs/createTaskCriar uma nova tarefa de geração de vídeo
/api/v1/jobs/queryTaskConsultar status e resultado da tarefa
/api/v1/account/creditsVerificar seu saldo de créditos
/api/v1/assets/uploadEnviar um asset (imagem/vídeo/áudio) para revisão
/api/v1/assets/statusConsultar status de revisão do asset
/api/v1/assets/listListar seus assets enviados
/api/v1/upscale/createEnviar uma tarefa independente de upscale de vídeo (720p / 1080p / 2K / 4K)
/api/v1/upscale/queryConsultar status e resultado de uma tarefa independente de upscale
Escolha um modelo (vídeo)
Duas famílias de modelos geram vídeo. Escolha por modo + preço; combine com a seção Preços para estimar o custo.
| Modelo | T2V | I2V | First–Last | Multi-Ref | R2V | Nativo 1080p | Nativo 4K | Áudio | 720p / 5s |
|---|---|---|---|---|---|---|---|---|---|
| sd2.5 | ✓ | ✓ | ✓ | ✓ | — | ✓ | upscale | ✓ | 300 créditos |
| sd2 | ✓ | ✓ | ✓ | ✓ | — | ✓ | ✓ | ✓ | 200 créditos |
| sd2-fast | ✓ | ✓ | ✓ | ✓ | — | upscale | upscale | ✓ | 160 créditos |
| sd2-mini | ✓ | ✓ | ✓ | ✓ | — | upscale | upscale | ✓ | 100 créditos |
| happyhorse | ✓ | ✓ | — | — | ✓ | ✓ | upscale | ✓ | 160 créditos |
T2V = texto para vídeo · I2V = imagem para vídeo (primeiro quadro) · First–Last = primeiro + último keyframe · Multi-Ref = referências mistas de imagem / vídeo / áudio · R2V = 1–9 imagens de referência com marcadores de personagem
Seedance 2.0 / 2.0 Fast / 2.0 Mini / Seedance 2.5
Texto para vídeo
Gere um vídeo a partir de um prompt de texto. Não é necessária nenhuma imagem.
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "sd2",
"inputs": {
"prompt": "A futuristic city with flying cars at night, neon lights reflecting on wet streets",
"duration": "5s",
"resolution": "1280x720"
}
}' \
https://seegen.ai/api/v1/jobs/createTask| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| prompt | string | Sim | Descrição textual do vídeo a ser gerado. Máximo de 20000 caracteres. |
| duration | string | Não | Duração do vídeo: de "4s" a "15s"; sd2.5 aceita até "30s" (padrão: "5s") |
| resolution | string | Não | Proporção definida via resolução. Opções: auto (padrão), 720x720, 720x960, 960x720, 1280x720, 720x1280, 1280x540 |
| outputResolution | string | Não | Nível de resolução de saída: "480p", "720p" (padrão), "1080p", "2k" ou "4k". As resoluções nativas variam por modelo: Seedance 2.0 Pro: 480p/720p/1080p/4k; Seedance 2.0 Fast & Mini: 480p/720p; Seedance 2.5: 480p/720p/1080p. Níveis mais altos recebem upscale automaticamente. |
| seed | int | Não | Seed de reprodutibilidade: -1 ou omita para aleatório; 0–2147483647 para fixo. |
| generateAudio | boolean | Não | Se deve sintetizar uma trilha de áudio sincronizada. Padrão true; envie false para vídeo sem áudio. |
Imagem para vídeo
Anime uma imagem estática em um vídeo. Informe uma URL de imagem como quadro inicial.
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "sd2",
"inputs": {
"urls": ["https://example.com/photo.jpg"], // or "asset://asset-20260326-abc123"
"prompt": "The woman slowly turns her head and smiles",
"duration": "5s"
}
}' \
https://seegen.ai/api/v1/jobs/createTask| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| urls | string[] | Sim | Array com uma URL de imagem (o quadro de origem). Aceita tanto URLs HTTP quanto referências de asset (por exemplo, "asset://asset-20260326-abc123") |
| prompt | string | Não | Descrição textual do movimento desejado |
| duration | string | Não | Duração do vídeo: de "4s" a "15s"; sd2.5 aceita até "30s" (padrão: "5s") |
| outputResolution | string | Não | Nível de resolução de saída: "480p", "720p" (padrão), "1080p", "2k" ou "4k". As resoluções nativas variam por modelo: Seedance 2.0 Pro: 480p/720p/1080p/4k; Seedance 2.0 Fast & Mini: 480p/720p; Seedance 2.5: 480p/720p/1080p. Níveis mais altos recebem upscale automaticamente. |
| seed | int | Não | Seed de reprodutibilidade: -1 ou omita para aleatório; 0–2147483647 para fixo. |
| generateAudio | boolean | Não | Se deve sintetizar uma trilha de áudio sincronizada. Padrão true; envie false para vídeo sem áudio. |
Primeiro e último quadro
Defina os quadros inicial e final, e o modelo gera a transição entre eles. Usa videoInputMode: "keyframe".
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "sd2",
"inputs": {
"urls": [
"https://example.com/first-frame.jpg",
"https://example.com/last-frame.jpg"
],
"prompt": "Smooth camera transition from day to night",
"duration": "5s",
"videoInputMode": "keyframe"
}
}' \
https://seegen.ai/api/v1/jobs/createTask| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| urls | string[] | Sim | Array com exatamente 2 URLs de imagem: [first_frame, last_frame]. Aceita tanto URLs HTTP quanto referências de asset (por exemplo, "asset://asset-20260326-abc123") |
| videoInputMode | string | Sim | Deve ser "keyframe" |
| prompt | string | Não | Descrição textual que orienta a transição |
| duration | string | Não | Duração do vídeo: de "4s" a "15s"; sd2.5 aceita até "30s" (padrão: "5s") |
| outputResolution | string | Não | Nível de resolução de saída: "480p", "720p" (padrão), "1080p", "2k" ou "4k". As resoluções nativas variam por modelo: Seedance 2.0 Pro: 480p/720p/1080p/4k; Seedance 2.0 Fast & Mini: 480p/720p; Seedance 2.5: 480p/720p/1080p. Níveis mais altos recebem upscale automaticamente. |
| seed | int | Não | Seed de reprodutibilidade: -1 ou omita para aleatório; 0–2147483647 para fixo. |
| generateAudio | boolean | Não | Se deve sintetizar uma trilha de áudio sincronizada. Padrão true; envie false para vídeo sem áudio. |
Multirreferência
Use várias imagens, vídeos e arquivos de áudio de referência para orientar a geração. Usa videoInputMode: "reference". No sd2.5, esta é a subtarefa de referência padrão; para editar ou continuar um vídeo existente, veja Editar e estender vídeo abaixo.
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "sd2",
"inputs": {
"urls": [
"https://example.com/ref1.jpg",
"https://example.com/ref2.jpg"
],
"videoUrls": ["asset://asset-motion-video"],
"audioUrls": ["https://example.com/audio.mp3"],
"prompt": "Character walks through a garden",
"duration": "5s",
"videoInputMode": "reference",
"resolution": "1280x720"
}
}' \
https://seegen.ai/api/v1/jobs/createTask| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| urls | string[] | Não | URLs de imagens de referência (máximo 9). Aceita tanto URLs HTTP quanto referências de asset (por exemplo, "asset://asset-20260326-abc123") |
| videoUrls | string[] | Não | URIs de vídeo de referência asset:// — envie primeiro via /api/v1/assets/upload; URLs externas são rejeitadas. sd2: máximo de 3 vídeos, cada um ≤15s. sd2.5: até 10 vídeos, cada um 2–30s e ≤200MB, duração total de referência ≤30s, entradas de 480p–4K suportadas. |
| audioUrls | string[] | Não | Entradas de áudio de referência. sd2 / sd2-fast / sd2-mini: até 3 arquivos de áudio, cada um 2–15s, total ≤15s — áudio não pode ser a única referência nesses modelos (adicione ao menos uma imagem ou vídeo). sd2.5: até 10 arquivos, ≤15MB e 2–30s cada, total ≤30s, e entrada somente com áudio é suportada. |
| videoInputMode | string | Sim | Deve ser "reference" |
| prompt | string | Não | Descrição textual |
| duration | string | Não | Duração do vídeo: de "4s" a "15s"; sd2.5 aceita até "30s" (padrão: "5s") |
| resolution | string | Sim | Obrigatório para o modo reference. Opções: 720x720, 720x960, 960x720, 1280x720, 720x1280, 1280x540 |
| outputResolution | string | Não | Nível de resolução de saída: "480p", "720p" (padrão), "1080p", "2k" ou "4k". As resoluções nativas variam por modelo: Seedance 2.0 Pro: 480p/720p/1080p/4k; Seedance 2.0 Fast & Mini: 480p/720p; Seedance 2.5: 480p/720p/1080p. Níveis mais altos recebem upscale automaticamente. |
| seed | int | Não | Seed de reprodutibilidade: -1 ou omita para aleatório; 0–2147483647 para fixo. |
| generateAudio | boolean | Não | Se deve sintetizar uma trilha de áudio sincronizada. Padrão true; envie false para vídeo sem áudio. |
Restrições de referência
- Máximo de 9 imagens, 3 vídeos, 3 arquivos de áudio
- Máximo de 12 arquivos no total, somando todos os tipos
- Cada vídeo/áudio deve ter ≤ 15 segundos
- As imagens devem ter no mínimo 400px no lado mais curto
- sd2.5: máximo de 30 imagens, 10 vídeos, 10 arquivos de áudio e 50 no total; a duração total de vídeo e de áudio é, cada uma, ≤ 30 segundos
Editar e estender vídeo
O sd2.5 divide a geração baseada em referência em três subtarefas. Omita mode para geração de referência comum, defina mode: "edit" para editar um vídeo existente, ou mode: "extend" para continuá-lo. Ambos exigem pelo menos um vídeo em videoUrls e sempre geram saída com a proporção do vídeo de origem.
Coloque o vídeo que deseja operar em primeiro lugar em videoUrls e refira-se a ele como "Video 1" no seu prompt. edit força a duração da saída a corresponder à desse primeiro vídeo (de origem), que deve ter 4–30s, portanto qualquer duration enviado é ignorado; a cobrança usa a duração do vídeo de origem como duração de saída, além de todos os vídeos de referência como entrada. extend aceita de 1 a 3 clipes unidos em ordem, e o duration solicitado é a duração de saída desta geração (sem relação com a duração de origem) — cobrado como uma geração de referência comum.
Os modelos da família 2.0 (sd2 / sd2-fast / sd2-mini) também aceitam mode: "edit" e mode: "extend": eles inferem a operação a partir do seu prompt (descreva explicitamente a edição ou continuação), a proporção segue o vídeo de origem, e duration permanece sob seu controle, com cobrança comum.
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "sd2.5",
"inputs": {
"mode": "edit",
"videoUrls": ["asset://asset-source-video"],
"urls": ["https://example.com/annotation-at-1.2s.png"],
"source_frame_timestamps_ms": [1200],
"prompt": "Replace the marked object with a red umbrella",
"outputResolution": "720p"
}
}' \
https://seegen.ai/api/v1/jobs/createTask| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| mode | string | Não | "edit" ou "extend". Omita para geração de referência comum. |
| videoUrls | string[] | Sim | Pelo menos um vídeo; o primeiro é a origem ("Video 1") — a duração de saída e a cobrança do edit seguem esse vídeo. Vídeos seguintes são referências extras (edit) ou clipes adicionais unidos em ordem (extend, máximo 3). |
| urls | string[] | Não | Imagens opcionais de anotação/referência. |
| source_frame_timestamps_ms | number[] | Não | somente para mode "edit". Um timestamp não negativo do vídeo de origem, em milissegundos, por imagem em urls. |
| outputResolution | string | Não | Nível de resolução de saída: "480p", "720p" (padrão), "1080p", "2k" ou "4k". As resoluções nativas variam por modelo: Seedance 2.0 Pro: 480p/720p/1080p/4k; Seedance 2.0 Fast & Mini: 480p/720p; Seedance 2.5: 480p/720p/1080p. Níveis mais altos recebem upscale automaticamente. |
Referência de parâmetros do Seedance
Referência completa de todos os parâmetros inputs para os modelos sd2 / sd2-fast / sd2-mini / sd2.5.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| prompt | string | Não | Descrição textual (obrigatória para text-to-video, opcional para os demais modos). Máximo de 20000 caracteres. |
| urls | string[] | Não | URLs de imagem. Aceita tanto URLs HTTP quanto referências de asset (por exemplo, "asset://asset-20260326-abc123"). Mapeado internamente para uploadedUrls. |
| videoUrls | string[] | Não | URIs de vídeo de referência asset:// (somente no modo reference). Devem ser enviados primeiro via /api/v1/assets/upload — URLs externas são rejeitadas. |
| audioUrls | string[] | Não | URLs de áudio de referência (somente no modo reference). Entrada somente com áudio é suportada no sd2.5; sd2 / sd2-fast / sd2-mini exigem pelo menos uma imagem ou vídeo além do áudio. |
| duration | string | Não | normalmente de "4s" a "15s"; sd2.5 aceita até "30s". Padrão: "5s" |
| resolution | string | Não | Proporção: auto (padrão) | 720x720 | 720x960 | 960x720 | 1280x720 | 720x1280 | 1280x540 |
| outputResolution | string | Não | Nível de resolução de saída: "480p", "720p" (padrão), "1080p", "2k" ou "4k". As resoluções nativas variam por modelo: Seedance 2.0 Pro: 480p/720p/1080p/4k; Seedance 2.0 Fast & Mini: 480p/720p; Seedance 2.5: 480p/720p/1080p. Níveis mais altos recebem upscale automaticamente. |
| videoInputMode | string | Não | "keyframe" (padrão) ou "reference" |
| mode | string | Não | Subtarefa do modo reference (todos os modelos Seedance): omita para geração de referência comum, "edit" para editar o primeiro vídeo em videoUrls, "extend" para continuar 1-3 clipes. Veja Editar e estender vídeo. |
| source_frame_timestamps_ms | number[] | Não | somente para sd2.5 Video Edit: um timestamp não negativo em milissegundos por imagem de anotação. |
| seed | int | Não | Seed aleatório para reprodutibilidade. -1 ou omita para aleatório no servidor. O mesmo seed + as mesmas entradas geram uma saída bastante semelhante (não idêntica bit a bit, devido ao não determinismo da GPU). Intervalo: -1 a 2147483647. |
| generateAudio | boolean | Não | Se deve sintetizar uma trilha de áudio (fala, efeitos sonoros, música de fundo) sincronizada com o vídeo. Padrão true. Defina false para gerar um vídeo sem áudio — um pouco mais rápido, útil se você planeja dublar separadamente. |
| bitrateMode | string | Não | Nível de taxa de bits de saída na mesma resolução: "standard" (padrão) ou "high". "high" preserva mais detalhes e reduz banding / blocos em cerca de 3-5× o tamanho do arquivo — não altera a resolução nem o preço. |
| upscaleResolution | string | Não | (Obsoleto) Campo separado legado, ainda aceito por compatibilidade retroativa. Novas integrações devem usar outputResolution, que agora aceita "2k" / "4k" diretamente. Se ambos forem enviados, upscaleResolution tem precedência — exceto em modelos com 1080p nativo (Seedance2 Pro / Seedance 2.5), onde upscaleResolution:"1080p" resolve para 1080p nativo (cobrado na taxa nativa). |
Campos de nível superior da requisição: model (obrigatório), inputs (obrigatório), callBackUrl (URL de webhook opcional).
Assets
Assets são imagens, vídeos e arquivos de áudio que passam por um processo de revisão antes de poderem ser usados em tarefas de geração de vídeo. Envie um asset, aguarde até que ele fique ACTIVE e então use sua URL asset:// em suas tarefas.
Observação: assets de imagem e vídeo com pessoas reais exigem revisão oficial, normalmente concluída em segundos. Uma vez aprovados, podem ser usados diretamente como referências. Sem revisão, a geração pode falhar.
Enviar asset
Duas formas de enviar: enviar um arquivo local diretamente (multipart/form-data) ou informar uma URL HTTPS acessível publicamente. Em ambos os casos, o asset é processado e revisado automaticamente.
Método A — envio direto de arquivo (multipart/form-data)
Envie um arquivo local sem necessidade de hospedagem de imagem. O tipo de mídia é detectado a partir dos bytes do arquivo (a extensão do nome do arquivo não é confiável). Permitido: imagens (jpg/png/webp/gif/bmp/tiff/heic), vídeos (mp4/mov), áudio (wav/mp3). Máximo de 50MB por arquivo (imagem ≤30MB, vídeo ≤50MB, áudio ≤15MB).
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-F "file=@/path/to/photo.jpg" \
-F "name=my-photo" \
https://seegen.ai/api/v1/assets/upload| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| file | file | Sim | O arquivo local (campo do formulário multipart). O tipo de mídia é detectado a partir do conteúdo. |
| name | string | Não | Nome do asset (máximo de 64 caracteres) |
Método B — por URL (application/json)
Se o arquivo já estiver hospedado em uma URL HTTPS pública.
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/photo.jpg",
"type": "IMAGE",
"name": "my-photo"
}' \
https://seegen.ai/api/v1/assets/upload| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| url | string | Sim | URL HTTPS publicamente acessível do arquivo a ser enviado |
| type | string | Sim | "IMAGE", "AUDIO" ou "VIDEO" |
| name | string | Não | Nome do asset (máximo de 64 caracteres) |
Resposta do envio
{
"assetId": 123,
"volcAssetId": "asset-20260326-abc123",
"type": "IMAGE",
"status": "PROCESSING",
"failReason": null,
"url": "https://example.com/photo.jpg",
"name": "my-photo",
"createdAt": 1711234567890
}Consultar status do asset
Consulte o status de revisão de um asset. Quando o status é PROCESSING, o endpoint verifica automaticamente atualizações do sistema de revisão.
# Query by asset ID (numeric)
curl -H "Authorization: Bearer $API_KEY" \
"https://seegen.ai/api/v1/assets/status?assetId=123"
# Query by volcAssetId (string)
curl -H "Authorization: Bearer $API_KEY" \
"https://seegen.ai/api/v1/assets/status?assetId=asset-20260326-abc123"Valores de status do asset
PROCESSING— em revisão, ainda não utilizávelACTIVE— revisão aprovada, pronto para uso em tarefasFAILED— revisão falhou, verifique failReason
Listar assets
Lista seus assets enviados com filtragem opcional por tipo e status. Suporta paginação baseada em cursor.
# List all assets
curl -H "Authorization: Bearer $API_KEY" \
"https://seegen.ai/api/v1/assets/list"
# Filter by type and status
curl -H "Authorization: Bearer $API_KEY" \
"https://seegen.ai/api/v1/assets/list?type=IMAGE&status=ACTIVE&limit=10"
# Paginate with cursor
curl -H "Authorization: Bearer $API_KEY" \
"https://seegen.ai/api/v1/assets/list?cursor=100&limit=20"| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| type | string | Não | Filtrar por tipo: "IMAGE", "AUDIO" ou "VIDEO" |
| status | string | Não | Filtrar por status: "NONE", "PROCESSING", "ACTIVE" ou "FAILED" |
| cursor | number | Não | Cursor para paginação (use nextCursor da resposta anterior) |
| limit | number | Não | Itens por página, 1-50 (padrão: 20) |
Resposta da listagem
{
"items": [
{
"assetId": 123,
"volcAssetId": "asset-20260326-abc123",
"type": "IMAGE",
"status": "ACTIVE",
"failReason": null,
"url": "https://example.com/photo.jpg",
"name": "my-photo",
"width": 1920,
"height": 1080,
"size": 245000,
"duration": null,
"createdAt": 1711234567890
}
],
"nextCursor": 122
}Usando assets em tarefas
Assim que um asset estiver ACTIVE, use seu volcAssetId com o protocolo asset:// nas URLs da sua tarefa:
{
"model": "sd2",
"inputs": {
"urls": ["asset://asset-20260326-abc123"],
"prompt": "The person slowly looks up and smiles",
"duration": "5s"
}
}HappyHorse 1.1 (Alibaba)
Um modelo alternativo de geração de vídeo da Alibaba DashScope. Suporta três modos: text-to-video, image-to-video pelo primeiro quadro e reference-to-video (1–9 imagens de referência combinadas por prompt; refira-se aos sujeitos com character1, character2, … no prompt). O HappyHorse 1.1 não suporta último quadro, vídeo de referência nem áudio de referência. Nome do modelo: happyhorse.
Nenhuma revisão de asset necessária — você pode usar URLs HTTPS públicas de imagem diretamente, ou passar referências asset:// da biblioteca de assets (resolvidas automaticamente de volta à URL R2 original).
Texto para vídeo
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "happyhorse",
"inputs": {
"prompt": "A panda DJ at a beach party, smoky sunset",
"duration": "5s",
"outputResolution": "720p",
"ratio": "16:9"
}
}' \
https://seegen.ai/api/v1/jobs/createTaskImagem para vídeo (primeiro quadro)
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "happyhorse",
"inputs": {
"urls": ["https://example.com/panda.jpg"],
"prompt": "The panda blinks and smiles",
"duration": "5s",
"outputResolution": "1080p"
}
}' \
https://seegen.ai/api/v1/jobs/createTaskReferência para vídeo (1–9 imagens de referência)
Passe videoWorkflowTab: "multi-reference" com 1–9 URLs de imagens de referência para combinar vários sujeitos em uma única saída. Referencie cada imagem no prompt com character1, character2, … (na ordem de urls). A proporção é controlada pelo campo ratio (não há primeiro quadro para derivá-la).
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "happyhorse",
"inputs": {
"videoWorkflowTab": "multi-reference",
"urls": [
"https://example.com/character.jpg",
"https://example.com/folding-fan.jpg",
"https://example.com/earrings.jpg"
],
"prompt": "A woman in red character1 opening folding fan character2, with tassel earrings character3 swinging",
"duration": "5s",
"outputResolution": "720p",
"ratio": "16:9"
}
}' \
https://seegen.ai/api/v1/jobs/createTaskReferência de parâmetros do HappyHorse
Referência completa de todos os parâmetros inputs para o modelo happyhorse.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| prompt | string | Não | Descrição textual. Obrigatória para text-to-video e reference-to-video; opcional para image-to-video. Máximo de 5000 caracteres não-CJK ou 2500 caracteres CJK (o upstream trunca automaticamente além disso). Em r2v, use character1/character2/… para referenciar a N-ésima imagem de referência. |
| urls | string[] | Não | t2v: omita. i2v: exatamente 1 URL (usada como primeiro quadro). r2v: 1–9 URLs. Aceita URLs HTTPS públicas e referências de asset (por exemplo, "asset://asset-20260326-abc123"). |
| videoWorkflowTab | string | Não | Defina como "multi-reference" para ativar o modo reference-to-video (deve ser combinado com 1+ urls). Omita para text-to-video / image-to-video. |
| duration | string | Não | de "3s" a "15s" (padrão "5s"). |
| outputResolution | string | Não | "720p" (padrão) ou "1080p". |
| ratio | string | Não | "16:9" / "9:16" / "1:1" / "4:3" / "3:4". Usado para text-to-video e reference-to-video — a proporção do image-to-video é inferida a partir do primeiro quadro. |
| seed | int | Não | 0 a 2147483647. Deixe em branco para um seed aleatório. |
Requisitos de imagem (i2v / r2v)
- Lado mais curto ≥ 300px
- Proporção entre 1:2.5 e 2.5:1
- Formatos: JPEG, JPG, PNG, BMP, WEBP
- Tamanho máximo de arquivo de 10MB por imagem (r2v: para cada uma das 1–9 entradas)
Escolha um modelo (imagem)
Os modelos de imagem recebem um prompt (e opcionalmente imagens de referência) e retornam uma imagem por tarefa. Cada requisição é cobrada por imagem, de acordo com o nível do modelo selecionado (ou uma taxa fixa para o Seedream Lite). Tarefas com falha são reembolsadas automaticamente. Não há parâmetro de lote — para gerar várias variações, chame createTask uma vez para cada imagem.
| Modelo | T2I | I2I (Edição) | Multi-Ref | Resolução máxima | 2k / medium |
|---|---|---|---|---|---|
| gpt-image-2 | ✓ | ✓ | até 10 | 4k | veja Preços |
| nano-banana-2 | ✓ | ✓ | até 10 | 4k | veja Preços |
| nano-banana-pro | ✓ | ✓ | até 10 | 4k | veja Preços |
| seedream-v5.0-lite | ✓ | ✓ | até 10 | 4k | taxa fixa |
| seedream-v5.0-pro | ✓ | ✓ | até 10 | 2k | veja Preços |
GPT Image 2
O modelo GPT Image 2 da OpenAI para text-to-image e edição image-to-image de alta qualidade. Um único fluxo cobre ambos os modos — passe urls para alternar automaticamente para o modo de edição. A saída é entregue via R2 no formato solicitado (PNG / JPEG / WEBP). Nome do modelo: gpt-image-2.
Texto para imagem
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"inputs": {
"prompt": "A neon-lit cyberpunk alley at midnight, photoreal",
"quality": "medium",
"resolution": "2k",
"aspectRatio": "16:9"
}
}' \
https://seegen.ai/api/v1/jobs/createTaskImagem para imagem (edição)
Passe de 1 a 10 imagens de referência via urls. O modelo as usará como contexto visual para a edição descrita em prompt.
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"inputs": {
"urls": ["https://example.com/portrait.jpg"],
"prompt": "Restyle as oil painting",
"quality": "medium",
"resolution": "1k",
"aspectRatio": "1:1"
}
}' \
https://seegen.ai/api/v1/jobs/createTaskReferência de parâmetros do GPT Image 2
Referência completa de todos os parâmetros inputs para o modelo gpt-image-2.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| prompt | string | Sim | Descrição textual da imagem a ser gerada, ou da edição a ser aplicada quando urls é informado. |
| urls | string[] | Não | URLs de imagens de referência para o modo image-to-image (edição) (1–10 imagens). Omita para text-to-image. URLs HTTPS públicas são aceitas. |
| quality | string | Não | "medium" / "high". Padrão: "medium". Os créditos variam conforme o nível (veja Preços). |
| resolution | string | Não | "1k" / "2k" / "4k". Padrão: "2k". Os créditos variam conforme o nível (veja Preços). |
| aspectRatio | string | Não | "1:1" / "16:9" / "9:16" / "4:3" / "3:4". Padrão: "1:1". |
| outputFormat | string | Não | "png" / "jpeg" / "webp". Padrão: "png". |
Requisitos de imagem de entrada (modo image-to-image)
- Até 10 imagens de referência por tarefa
- Tamanho máximo de arquivo de 50 MB por imagem
- Lado mais curto ≥ 256px
- Proporção entre 1:3 e 3:1
- Formatos: JPEG, JPG, PNG, WEBP
Os créditos por imagem variam conforme a resolução e a qualidade — veja a tabela completa na seção Preços.
Nano Banana 2
Nano Banana 2 é um modelo de imagem de alta fidelidade com cobertura de proporção mais ampla que gpt-image-2 — adiciona predefinições de retrato/paisagem (3:2, 2:3, 4:5, 5:4) e o cinematográfico 21:9. Um único fluxo cobre ambos os modos — passe urls para alternar automaticamente para o modo de edição. Nome do modelo: nano-banana-2.
Texto para imagem
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "nano-banana-2",
"inputs": {
"prompt": "A neon-lit cyberpunk alley at midnight, photoreal",
"resolution": "2k",
"aspectRatio": "16:9"
}
}' \
https://seegen.ai/api/v1/jobs/createTaskImagem para imagem (edição)
Passe de 1 a 10 imagens de referência via urls. O modelo as usará como contexto visual para a edição descrita em prompt.
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "nano-banana-2",
"inputs": {
"urls": ["https://example.com/portrait.jpg"],
"prompt": "Restyle as oil painting",
"resolution": "2k",
"aspectRatio": "1:1"
}
}' \
https://seegen.ai/api/v1/jobs/createTaskReferência de parâmetros do Nano Banana 2
Referência completa de todos os parâmetros inputs para o modelo nano-banana-2.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| prompt | string | Sim | Descrição textual da imagem a ser gerada, ou da edição a ser aplicada quando urls é informado. |
| urls | string[] | Não | URLs de imagens de referência para o modo image-to-image (edição) (1–10 imagens). Omita para text-to-image. URLs HTTPS públicas são aceitas. |
| resolution | string | Não | "1k" / "2k" / "4k". Padrão: "2k". Os créditos variam conforme o nível (veja Preços). |
| aspectRatio | string | Não | "1:1" / "16:9" / "9:16" / "4:3" / "3:4" / "3:2" / "2:3" / "4:5" / "5:4" / "21:9". Padrão: "1:1". |
Requisitos de imagem de entrada (modo image-to-image)
- Até 10 imagens de referência por tarefa
- Tamanho máximo de arquivo de 50 MB por imagem
- Lado mais curto ≥ 256px
- Proporção entre 1:3 e 3:1
- Formatos: JPEG, JPG, PNG, WEBP
Os créditos por imagem variam conforme a resolução — veja a tabela completa na seção Preços.
Nano Banana Pro
Nano Banana Pro é um modelo de imagem de alta fidelidade com cobertura de proporção mais ampla que gpt-image-2 — adiciona predefinições de retrato/paisagem (3:2, 2:3, 4:5, 5:4) e o cinematográfico 21:9. Um único fluxo cobre ambos os modos — passe urls para alternar automaticamente para o modo de edição. Nome do modelo: nano-banana-pro.
Texto para imagem
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "nano-banana-pro",
"inputs": {
"prompt": "A neon-lit cyberpunk alley at midnight, photoreal",
"resolution": "2k",
"aspectRatio": "16:9"
}
}' \
https://seegen.ai/api/v1/jobs/createTaskImagem para imagem (edição)
Passe de 1 a 10 imagens de referência via urls. O modelo as usará como contexto visual para a edição descrita em prompt.
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "nano-banana-pro",
"inputs": {
"urls": ["https://example.com/portrait.jpg"],
"prompt": "Restyle as oil painting",
"resolution": "2k",
"aspectRatio": "1:1"
}
}' \
https://seegen.ai/api/v1/jobs/createTaskReferência de parâmetros do Nano Banana Pro
Referência completa de todos os parâmetros inputs para o modelo nano-banana-pro.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| prompt | string | Sim | Descrição textual da imagem a ser gerada, ou da edição a ser aplicada quando urls é informado. |
| urls | string[] | Não | URLs de imagens de referência para o modo image-to-image (edição) (1–10 imagens). Omita para text-to-image. URLs HTTPS públicas são aceitas. |
| resolution | string | Não | "1k" / "2k" / "4k". Padrão: "2k". Os créditos variam conforme o nível (veja Preços). |
| aspectRatio | string | Não | "1:1" / "16:9" / "9:16" / "4:3" / "3:4" / "3:2" / "2:3" / "4:5" / "5:4" / "21:9". Padrão: "1:1". |
Requisitos de imagem de entrada (modo image-to-image)
- Até 10 imagens de referência por tarefa
- Tamanho máximo de arquivo de 50 MB por imagem
- Lado mais curto ≥ 256px
- Proporção entre 1:3 e 3:1
- Formatos: JPEG, JPG, PNG, WEBP
Os créditos por imagem variam conforme a resolução — veja a tabela completa na seção Preços.
Seedream 5.0 Lite
Geração rápida de text-to-image e image-to-image em 2K ou 4K com 15 proporções. Nome do modelo: seedream-v5.0-lite.
Texto para imagem
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedream-v5.0-lite",
"inputs": {
"prompt": "A cinematic product photograph, soft studio light",
"resolution": "2k",
"aspectRatio": "1:1"
}
}' \
https://seegen.ai/api/v1/jobs/createTaskImagem para imagem (edição)
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedream-v5.0-lite",
"inputs": {
"prompt": "Restyle the references as a premium fashion campaign",
"urls": ["https://example.com/reference.png"],
"resolution": "4k",
"aspectRatio": "3:4"
}
}' \
https://seegen.ai/api/v1/jobs/createTaskParâmetros do Seedream 5.0 Lite
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| prompt | string | Sim | Descrição da imagem ou instrução de edição. |
| urls | string[] | Não | 1–10 URLs HTTPS públicas de imagens de referência. Omita para text-to-image. |
| resolution | string | Não | "2k" ou "4k". Padrão: "2k". |
| aspectRatio | string | Não | "1:1", "1:2", "2:1", "1:3", "3:1", "2:3", "3:2", "3:4", "4:3", "4:5", "5:4", "9:16", "16:9", "9:21", ou "21:9". |
Seedream 5.0 Pro
Geração e edição de alta fidelidade em 1K ou 2K. Nome do modelo: seedream-v5.0-pro.
Texto para imagem
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedream-v5.0-pro",
"inputs": {
"prompt": "Editorial portrait with dramatic rim lighting",
"resolution": "2k",
"aspectRatio": "3:4"
}
}' \
https://seegen.ai/api/v1/jobs/createTaskImagem para imagem (edição)
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedream-v5.0-pro",
"inputs": {
"prompt": "Turn the reference into a cinematic poster",
"urls": ["https://example.com/reference.png"],
"resolution": "2k",
"aspectRatio": "1:2"
}
}' \
https://seegen.ai/api/v1/jobs/createTaskParâmetros do Seedream 5.0 Pro
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| prompt | string | Sim | Descrição da imagem ou instrução de edição. |
| urls | string[] | Não | 1–10 URLs HTTPS públicas de imagens de referência. Omita para text-to-image. |
| resolution | string | Não | "1k" ou "2k". Padrão: "1k". 4k não é suportado. |
| aspectRatio | string | Não | "1:1", "1:2", "2:1", "1:3", "3:1", "2:3", "3:2", "3:4", "4:3", "4:5", "5:4", "9:16", "16:9", "9:21", ou "21:9". |
Upscaler de vídeo
Criar tarefa
POST /api/v1/upscale/create
# source.url accepts ANY https video URL — your own CDN, OR a file you first
# uploaded to us via /api/v1/assets/upload (pass the r2Url it returns). No need
# to declare which: we detect it. External URLs are validated; our own are trusted.
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"source": { "type": "url", "url": "https://your-cdn.com/video.mp4" },
"targetResolution": "2k",
"callBackUrl": "https://your-server.com/webhook"
}' \
https://seegen.ai/api/v1/upscale/create| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| source.type | string | Sim | Use "url" para qualquer origem. ("uploadId" é um alias legado mantido por compatibilidade retroativa.) |
| source.url | string | Não | Com type="url". Qualquer URL de vídeo https — seu próprio CDN, ou a r2Url retornada por /api/v1/assets/upload. Para URLs externas, http e IPs privados/internos são rejeitados (proteção contra SSRF); URLs em nosso próprio host de assets ignoram essa verificação. |
| source.r2Url | string | Não | Legado — apenas com type="uploadId" (compatibilidade retroativa). Novas integrações devem usar type="url". |
| targetResolution | string | Sim | "720p", "1080p", "2k" ou "4k". Deve ser maior que a resolução de origem. |
| callBackUrl | string | Não | URL de webhook chamada uma vez ao atingir o estado final (completed ou failed). |
Resposta de criação
{
"taskId": "n770mo4sh6rpi690ff3gwymx",
"orderId": "ord_2026...",
"status": "validating"
}Consultar status
GET /api/v1/upscale/query?taskId=...
O status avança por validating → processing → completed / failed.
curl -H "Authorization: Bearer $API_KEY" \
"https://seegen.ai/api/v1/upscale/query?taskId=n770mo4sh6rpi690ff3gwymx"Resposta de conclusão
{
"taskId": "n770mo4sh6rpi690ff3gwymx",
"status": "completed",
"targetResolution": "2k",
"creditsConsumed": 900,
"result": {
"url": "https://static.seegen.ai/standalone-upscale/results/...mp4",
"probedDurationSeconds": 30,
"probedSourceResolution": "1280x720"
},
"error": null,
"createdAt": "2026-04-29T01:23:45.000Z",
"finishedAt": "2026-04-29T01:35:01.000Z"
}Resposta de falha
{
"taskId": "n770mo4sh6rpi690ff3gwymx",
"status": "failed",
"creditsConsumed": null,
"result": null,
"error": {
"code": "SOURCE_RESOLUTION_TOO_HIGH",
"message": "Source 3840x2160 is not below target 4k"
}
}Limites
- Origem: URL https ou sua URL R2 enviada anteriormente
- Duração de até 600 s (clipes com menos de 5 s são cobrados como 5 s)
- Tamanho do arquivo ≤ 200 MB
- Formato: MP4 / MOV / WebM
- A resolução de origem deve ser menor que a de destino
Preços
- 720P: 17 créditos/seg (5s = 85, 30s = 510)
- 1080P: 25 créditos/seg (5s = 125, 30s = 750)
- 2K: 38 créditos/seg (5s = 190, 30s = 1140)
- 4K: 50 créditos/seg (5s = 250, 30s = 1500)
- mínimo de 5 segundos; falhas reembolsam créditos automaticamente
Códigos de erro
Erros comuns sobre os quais você pode agir. Outras falhas retornam um campo message autoexplicativo — leia-o antes de presumir que o código é um destes.
| Código | Significado |
|---|---|
| INVALID_URL | A URL está malformada ou não é https |
| URL_NOT_REACHABLE | Não foi possível buscar a URL — verifique se ela é pública e acessível |
| UNSUPPORTED_MEDIA_TYPE | O arquivo não é um vídeo, ou não está em MP4 / MOV / WebM |
| FILE_TOO_LARGE | A origem excede 200 MB |
| DURATION_EXCEEDS_LIMIT | A origem tem mais de 600 s |
| SOURCE_RESOLUTION_TOO_HIGH | A origem já está no nível do destino ou acima — escolha um destino mais alto |
| INSUFFICIENT_CREDITS | Créditos insuficientes — recarregue e tente novamente |
Callback de webhook
Em vez de fazer polling, você pode informar uma callBackUrl para receber os resultados automaticamente quando uma tarefa for concluída ou falhar.
curl -X POST \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "sd2",
"callBackUrl": "https://your-server.com/webhook/callback",
"inputs": {
"prompt": "A cat playing piano",
"duration": "5s"
}
}' \
https://seegen.ai/api/v1/jobs/createTaskPayload do callback
Quando a tarefa termina, enviamos uma requisição POST para sua URL no mesmo formato da resposta do queryTask:
// POST to your callBackUrl
{
"taskId": "task_abc123",
"model": "sd2",
"status": "COMPLETED",
"creditsUsed": 200,
"output": [
{
"url": "https://static.seegen.ai/videos/result.mp4",
"width": 1280,
"height": 720
}
],
"error": null,
"createTime": 1711234567890,
"completeTime": 1711234612345
}Política de repetição: se seu endpoint retornar um status diferente de 2xx, tentamos novamente até 3 vezes com atrasos crescentes (1s, 5s, 30s).
Formato de resposta
Resposta do createTask
// 200 OK
{ "taskId": "task_abc123" }Resposta do queryTask
{
"taskId": "task_abc123",
"model": "sd2",
"status": "COMPLETED", // "PENDING" | "PROCESSING" | "COMPLETED" | "FAILED"
"creditsUsed": 200,
"output": [ // null when status is not "COMPLETED"
{
"url": "https://static.seegen.ai/videos/result.mp4",
"width": 1280,
"height": 720
}
],
"error": null, // error message when status is "FAILED"
"createTime": 1711234567890,
"completeTime": 1711234612345
}Resposta do credits
{
"credits": 5000,
"availableCredits": 4800
}Tratamento de erros
| Código de status | Significado | Ação |
|---|---|---|
| 400 | Parâmetros inválidos | Verifique a mensagem de erro e corrija sua requisição |
| 401 | Chave de API inválida ou ausente | Verifique o formato do seu cabeçalho Authorization |
| 402 | Créditos insuficientes | Compre mais créditos em seegen.ai |
| 403 | Acesso negado | Você só pode consultar suas próprias tarefas |
| 404 | Tarefa não encontrada | Verifique se o taskId está correto |
| 429 | Limite de simultaneidade (3 tarefas) | Aguarde a conclusão das tarefas existentes |
| 500 | Erro interno do servidor | Tente novamente após alguns segundos |
Validação antes do envio (400 com código)
As requisições do Seedance são verificadas em relação ao contrato upstream antes de qualquer cobrança de créditos. Quando uma verificação falha, createTask retorna { "message": "...", "code": "..." } com HTTP 400, e nenhuma tarefa é criada. A mensagem indica exatamente qual limite foi atingido e como corrigi-lo.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| EMPTY_CONTENT | code | Não | Nenhum prompt e nenhuma imagem / vídeo / áudio de referência. |
| AUDIO_ONLY_NOT_SUPPORTED | code | Não | O áudio é a única referência em sd2 / sd2-fast / sd2-mini. Adicione uma imagem ou vídeo, ou use sd2.5 (suporta somente áudio). |
| DURATION_OUT_OF_RANGE | code | Não | duration não é um número inteiro dentro do intervalo do modelo (família sd2 "4s"–"15s", sd2.5 "4s"–"30s"). |
| EDIT_SOURCE_VIDEO_REQUIRED / EXTEND_SOURCE_VIDEO_REQUIRED | code | Não | mode "edit" / "extend" foi solicitado sem um vídeo em videoUrls. |
| EDIT_SOURCE_DURATION_INVALID | code | Não | sd2.5 Video Edit: um vídeo na requisição é mais curto que 4s ou mais longo que 30s (o ARK aplica 4–30s a cada vídeo de uma tarefa edit). |
| TOO_MANY_REFERENCES | code | Não | Mais imagens / vídeos / clipes de áudio de referência do que o modelo aceita (família sd2 9 / 3 / 3, sd2.5 30 / 10 / 10; extend ≤3 vídeos). |
| REFERENCE_VIDEO_DURATION_INVALID | code | Não | Um vídeo de referência excede o máximo por clipe (família sd2 15s, sd2.5 30s) ou a duração total de referência excede o limite (15s / 30s). |
| ASSET_NOT_FOUND / EXTERNAL_URL / READ_TIMEOUT / READ_FAILED | code | Não | Uma entrada de videoUrls não pôde ser associada a nenhum dos seus assets enviados, ou sua duração não pôde ser lida. |
Exemplos completos
Fluxo completo: envie um asset, aguarde a revisão, crie uma tarefa com o asset aprovado e consulte o resultado.
const API_KEY = process.env.API_KEY;
const BASE = "https://seegen.ai/api/v1";
const headers = {
"Authorization": `Bearer ${API_KEY}`,
"Content-Type": "application/json",
};
// 1. Upload asset and wait for review
// (To upload a LOCAL file instead of a URL, POST multipart/form-data with a "file"
// field — no Content-Type header, no "type" — see the Upload Asset section above.)
async function uploadAndWaitForAsset(url, type = "IMAGE") {
const res = await fetch(`${BASE}/assets/upload`, {
method: "POST",
headers,
body: JSON.stringify({ url, type }),
});
if (!res.ok) throw new Error(`Upload failed: ${(await res.json()).message}`);
const asset = await res.json();
console.log(`Asset uploaded: ${asset.assetId}, status: ${asset.status}`);
// Poll until review completes
while (true) {
const statusRes = await fetch(
`${BASE}/assets/status?assetId=${asset.assetId}`,
{ headers }
);
const status = await statusRes.json();
if (status.status === "ACTIVE") {
console.log(`Asset approved: asset://${status.volcAssetId}`);
return status.volcAssetId;
}
if (status.status === "FAILED") {
throw new Error(`Asset review failed: ${status.failReason}`);
}
await new Promise((r) => setTimeout(r, 3000));
}
}
// 2. Create a task
async function createTask(inputs, callBackUrl) {
const res = await fetch(`${BASE}/jobs/createTask`, {
method: "POST",
headers,
body: JSON.stringify({
model: "sd2",
inputs,
...(callBackUrl && { callBackUrl }),
}),
});
if (!res.ok) throw new Error(`[${res.status}] ${(await res.json()).message}`);
return res.json();
}
// 3. Poll until done
async function waitForResult(taskId, timeoutMs = 300000) {
const start = Date.now();
while (Date.now() - start < timeoutMs) {
const res = await fetch(
`${BASE}/jobs/queryTask?taskId=${taskId}`,
{ headers }
);
const result = await res.json();
if (result.status === "COMPLETED") return result;
if (result.status === "FAILED") throw new Error(result.error);
await new Promise((r) => setTimeout(r, 5000));
}
throw new Error("Timeout waiting for task");
}
// Full workflow: upload → review → generate → result
async function main() {
// Upload image and wait for review
const volcAssetId = await uploadAndWaitForAsset(
"https://example.com/photo.jpg", "IMAGE"
);
// Create task with approved asset
const { taskId } = await createTask({
urls: [`asset://${volcAssetId}`],
prompt: "The person slowly looks up and smiles",
duration: "5s",
});
console.log(`Task: ${taskId}`);
// Wait for video
const result = await waitForResult(taskId);
console.log(`Video: ${result.output[0].url}`);
}
main().catch(console.error);Precisa de ajuda? Junte-se ao nosso Discord ou entre em contato conosco