ByteDance: Seedance 1.0 Pro
Seedance 1.0 Pro gera vídeo sem som a partir de texto ou de uma imagem inicial. Descreva a ação e a câmara ou anime uma composição existente, com duração de 2–12 segundos, 24 fps e controlos explícitos do enquadramento e da resolução da saída.
Sobre o modelo
Esta descrição apresenta as capacidades do modelo. As entradas, saídas e opções disponíveis no Ailoot para o método selecionado estão indicadas abaixo.
Seedance 1.0 Pro gera um vídeo a partir de texto ou de uma cena guiada por imagem. O seletor doubao-seedance-1-0-pro-250528 suporta ambos os modos de entrada, pelo que o ponto de partida pode ser um conceito escrito ou uma composição visual existente. Utilize instruções de texto para criar uma cena nova ou forneça uma imagem quando o sujeito, a disposição e a vista inicial devem ser estabelecidos visualmente. Este perfil 1.0 produz vídeo sem som; o som sincronizado pertence ao perfil 1.5 Pro descrito separadamente.
Para gerar vídeo a partir de texto, especifique o sujeito, o ambiente, o movimento, o enquadramento e a câmara numa única cena coerente. O exemplo documentado avança gradualmente de um campo de margaridas para uma vista próxima de uma flor com orvalho nas pétalas. Essa estrutura é útil para outras apresentações: estabeleça o cenário, aproxime-se do sujeito e termine no detalhe importante. Para um conceito de produto, descreva o material e a iluminação além da ação e dê à câmara um percurso realizável no plano curto.
Para gerar vídeo a partir de imagem, coloque a referência num elemento content do tipo image_url e explique o que deve mudar face à vista inicial. Um retrato preparado pode definir a pessoa e o recorte, enquanto as instruções descrevem uma pequena rotação, cabelo em movimento ou um recuo suave da câmara. Uma imagem estática de produto pode estabelecer o objeto e o fundo, enquanto o prompt pede uma apresentação gradual e controlada. Mantenha o movimento pedido compatível com a composição de origem; uma imagem de um lado de um objeto não fornece uma vista exata, não mostrada, de todos os outros lados.
O campo de imagem aceita um URL acessível ou um URL de dados que contenha dados de imagem Base64. Os formatos documentados são JPEG, PNG, WEBP, BMP, TIFF e GIF. As imagens devem ter menos de 30 MB, com uma proporção entre largura e altura estritamente entre 0.4 e 2.5 e cada dimensão estritamente entre 300 e 6000 píxeis. Prepare uma fonte nítida com o recorte pretendido em vez de depender de uma miniatura que já perdeu os detalhes distintivos. Para gerar vídeo a partir de imagem, o guia recomenda enquadramento adaptativo para seguir as proporções da referência.
A duração documentada para 1.0 é de dois a doze segundos e a frequência é de 24 fps. Os controlos de saída incluem os níveis 480p, 720p e 1080p, com 1080p como predefinição de Pro; o guia exclui 1080p no cenário com imagem de referência. Os formatos fixos incluem 16:9, 4:3, 1:1, 3:4, 9:16 e 21:9. Escolha uma combinação compatível com imagens para um plano guiado por imagem, em vez de transferir todas as definições de vídeo a partir de texto sem alterações. Inspecione o enquadramento efetivamente devolvido antes de colocar o vídeo numa composição gráfica.
Os controlos de seed e marca de água estão documentados juntamente com camerafixed. A instrução de câmara fixa não é suportada no cenário com imagem de referência e, onde se aplica, o guia não garante uma câmara perfeitamente imóvel. As instruções de parâmetros inseridas no prompt têm precedência sobre os campos opcionais separados. Mantenha uma única definição de referência para duração, resolução e proporção e faça a descrição da câmara concordar com ela. Isto evita que as instruções da cena se sobreponham silenciosamente às definições selecionadas para o pedido.
A utilização é medida em tokens de vídeo: largura da saída × altura da saída × frequência de fotogramas × duração da saída / 1024. A tarefa concluída comunica esta quantidade como usage.completion_tokens. Guarde a utilização comunicada com o vídeo concluído e as definições pedidas.
O fluxo de trabalho devolve primeiro um identificador de tarefa e, após o processamento, a localização do vídeo concluído. Preserve o identificador ao verificar se a tarefa está em fila ou em execução; uma tarefa concluída com sucesso fornece content.video_url e informação de utilização. A retenção documentada dos ficheiros gerados é de sete dias. Guarde o vídeo concluído, a imagem de origem e o prompt exato como registo da revisão, depois inspecione o aspeto do sujeito, o movimento, a continuidade com a imagem e a composição final em todo o resultado.
Ailoot Ultra · Vídeo POST /v1/videos doubao-seedance-1-0-pro-250528
doubao-seedance-1-0-pro-250528
doubao-seedance-1-0-pro-250528Introdução
Seedance 1.0 Pro gera vídeo sem som a partir de texto ou de uma imagem inicial. Descreva a ação e a câmara ou anime uma composição existente, com duração de 2–12 segundos, 24 fps e controlos explícitos do enquadramento e da resolução da saída.
- Entradas aceites
- Texto · Imagens
- Resultados
- Vídeo
Disponível no Ailoot · entradas e métodos
Ailoot Ultra · Vídeo POST /v1/videos
- Entrada
text,image- Saída
video
| Campo | Tipo | Requisito | Valores e limites | Predefinição |
|---|---|---|---|---|
Campomodel | Tipostring | RequisitoObrigatório | Valores e limites doubao-seedance-1-0-pro-250528 | Predefinição— |
Campocontent | Tipoarray | RequisitoObrigatório | Valores e limites Condições: Objetos nativos de texto/conteúdo multimédia; a matriz exterior não pode estar vazia. Este construtor genérico da Ailoot não valida os tipos dos nós internos. | Predefinição— |
Campoduration | Tipointeger | RequisitoOpcional | Valores e limites Mínimo: 2 Máximo: 12 Condições: Esquema principal 1.x: 2–12; a descrição comum posterior indica 1.5 como 4–12 ou -1. O exemplo utiliza 5, documentado em ambas as fontes. | Predefinição5 |
Camporesolution | Tipostring | RequisitoOpcional | Valores e limites Condições: Os valores confirmados para texto para vídeo são 480p e 1080p. A entrada com imagem de referência exclui 1080p. O enum comum 720p entra em conflito com a descrição específica do modelo, pelo que o suporte de 720p continua por esclarecer em ambos os modos. | Predefinição1080p |
Camporatio | Tipostring | RequisitoOpcional | Valores e limites 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive Condições: Valores predefinidos dependentes da cena/modelo; a documentação da entrada de imagem recomenda adaptive. | Predefinição— |
Camposervice_tier | Tipostring | RequisitoOpcional | Valores e limites default, flex Condições: default=online, flex=offline; escolha antes da criação. | Predefiniçãodefault |
Camposeed | Tipointeger | RequisitoObrigatório | Valores e limites Mínimo: -1 Máximo: 4 294 967 295 | Predefinição-1 |
Campocamerafixed | Tipoboolean | RequisitoObrigatório | Valores e limites Condições: Obrigatório pela Ailoot; o controlo da câmara com imagem de referência está documentado como não suportado e o efeito não é garantido. | Predefiniçãofalse |
Campowatermark | Tipoboolean | RequisitoObrigatório | Valores e limites | Predefiniçãofalse |
Campoexecution_expires_after | Tipointeger | RequisitoObrigatório | Valores e limites Mínimo: 3600 Máximo: 259 200 Unidade: segundos | Predefinição172 800 |
Combinações de materiais de entrada
Parâmetros e ciclo de vida do método
| Parâmetro | Contrato |
|---|---|
Parâmetrocontent_type | Contratoapplication/json |
Parâmetrorequired | Contratocamerafixed, content, execution_expires_after, model, seed, watermark |
Parâmetrooptional | Contratoduration, resolution, ratio, service_tier |
Parâmetromaterial_types | Contratotext, image |
Parâmetroadditional_properties | Contratotrue |
Parâmetrovalidation_scope | ContratoA Ailoot verifica os tipos dos campos obrigatórios e se model e a matriz content não estão vazios. Os outros campos do pedido são preservados para o modelo selecionado. |
Parâmetroimage_constraints | Contrato{"formats":["jpeg","png","webp","bmp","tiff","gif"],"aspect_ratio_exclusive":[0.4,2.5],"dimensions_px_exclusive":[300,6000],"file_size_mb_exclusive":30,"mb_bytes_definition":null} |
Aliases do método: /v1/videos/generations
Ciclo de vida: submit_once_poll_original
GET /v1/videos/{request_id}
GET /v1/videos/generations/{request_id}
GET /v1/videos/{request_id}/content
GET /v1/videos/generations/{request_id}/content
Crie uma única vez e conserve o id/polling_url público devolvido.
Consulte periodicamente a tarefa original; transfira o content.video_url real pertencente ao utilizador após succeeded.
Tarifários
Cálculo do custo final
As tarifas apresentadas permitem estimar o custo antes da geração. O montante final cobrado é calculado a partir do custo registado para a geração original. A duração medida do resultado e as quantidades previstas não correspondem à quantidade final faturável.
As referências tarifárias não acrescentam opções ao pedido. Os parâmetros suportados constam do método selecionado.
- Modo rápido
- Não especificado Quando o modo rápido está selecionado
- Modo flex
- Não especificado Quando o modo flex está selecionado
- Esforço máximo de raciocínio
- Não especificado Quando o esforço máximo de raciocínio usa o ajuste predefinido (default)
Tarifas estimadas para comparação
Preços por configuração
Associe cada custo às condições apresentadas. Use uma única tarifa para cada conjunto de configurações alternativas.
| Configuração | Tabela de tarifas | Quantidade prevista | Unidade de faturação | Custo |
|---|---|---|---|---|
| ConfiguraçãoTarifas base por token | Tabela de tarifasTarifa base | Quantidade prevista— | Unidade de faturação— | Custo Entrada · Tokens de entrada · Estimativa apenas para comparação — / 1K tokens Saída · Tokens de saída · Estimativa apenas para comparação — / 1K tokens Entrada · Leitura da cache · Estimativa apenas para comparação — / 1K tokens Entrada · Escrita na cache · Estimativa apenas para comparação — / 1K tokens Entrada · Escrita na cache, 1 hora · Estimativa apenas para comparação — / 1K tokens |
| ConfiguraçãoUltra | Tabela de tarifas— | Quantidade prevista— | Unidade de faturaçãopor 1K tokens de vídeo | Custo Saída · Estimativa apenas para comparação $0.0044 por 1K tokens de vídeo |
| ConfiguraçãoCusto estimado de geração | Tabela de tarifas— | Quantidade previstaestimativa para uma geração | Unidade de faturação— | Custo Saída · Custo estimado de geração · Estimativa apenas para comparação $0.2112 estimativa antes da geração Esta estimativa não é um encargo adicional nem uma tarifa fixa para a geração concluída. |
O Ailoot reserva um montante estimado antes de um pedido. Após o resultado, liquida o custo final com base na utilização medida. No streaming, a liquidação usa o registo final de utilização. Como funcionam a reserva e a liquidação →
Exemplos de pedidos
Ailoot Ultra · Vídeo
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
cat > request.json <<'JSON_REQUEST'
{"model":"doubao-seedance-1-0-pro-250528","content":[{"type":"text","text":"女孩抱着狐狸,女孩睁开眼,温柔地看向镜头,狐狸友善地抱着,镜头缓缓拉出,女孩的头发被风吹动"}],"resolution":"480p","ratio":"1:1","duration":5,"service_tier":"default","seed":-1,"camerafixed":false,"watermark":false,"execution_expires_after":172800}
JSON_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_POLL'
import json
from pathlib import Path
from urllib.parse import quote,urljoin,urlsplit
r=json.loads(Path("result.json").read_text())
i=r.get("id")
if not isinstance(i,str) or not i.startswith("native302_"):raise SystemExit("Keep original response/headers/id; do not resubmit creation.")
u=urljoin("https://api.ailoot.ai",r.get("polling_url") or "/v1/videos/"+quote(i,safe=""))
p=urlsplit(u)
if p.scheme!="https" or p.netloc!="api.ailoot.ai" or not p.path.startswith("/v1/videos/"):raise SystemExit("Use actual Ailoot lookup path.")
Path("poll-url.txt").write_text(u)
PY_POLL
curl --fail-with-body --silent --show-error "$(cat poll-url.txt)" -H "Authorization: Bearer $AILOOT_API_KEY" -D status-headers.txt -o status.json
set -eu
python3 - <<'PY_ASSETS'
import json
from pathlib import Path
from urllib.parse import urlsplit
r=json.loads(Path("status.json").read_text())
if r.get("status")!="succeeded":raise SystemExit("Poll same original job until an owned result is returned.")
u=r.get("content",{}).get("video_url")
urls=[u] if isinstance(u,str) else u
if not isinstance(urls,list) or not urls:raise SystemExit("No completed video URL.")
for u in urls:
if not isinstance(u,str):raise SystemExit("Invalid returned URL.")
p=urlsplit(u)
if p.scheme!="https" or p.netloc!="api.ailoot.ai" or not p.path.startswith("/v1/media/assets/") or not p.path.endswith("/content") or not p.query:raise SystemExit("Wait for actual Ailoot-owned signed result.")
Path("asset-urls.txt").write_text("\n".join(urls)+"\n")
PY_ASSETS
index=0
while IFS= read -r asset_url; do
curl --fail-with-body --silent --show-error "$asset_url" -o "video-${index}.bin"
index=$((index + 1))
done < asset-urls.txt
Receber e guardar os resultados
Ailoot Ultra · Vídeo
JSON nativo com id/polling_url público. Após a publicação, content.video_url contém URL(s) assinados pertencentes à Ailoot; antes da publicação, os URLs das saídas selecionadas ficam vazios.
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
Guardar todos os resultados concluídos
Guarde cada vídeo concluído ou ficheiro devolvido; obtenha cada URL de recurso efetivamente devolvido.
Conserve todos os URL reais em content.video_url; index tem de identificar uma saída real devolvida.
Se for necessário verificar a resposta original
Conserve a resposta/cabeçalhos/id originais e consulte periodicamente essa operação; nunca volte a enviar uma criação de resultado desconhecido.
Campos da resposta
| Campo | Tipo |
|---|---|
Campoid | Tipostring |
Campoprovider_task_id | Tipostring |
Campopolling_url | Tipostring |
Campostatus | Tipostring when supplied |
Campocontent.video_url | Tipostring|string[] |
Campousage | Tipoobject when supplied |
Erros e passos seguintes
| Resposta | Condição | Passo seguinte |
|---|---|---|
Resposta400 · invalid_request_error | CondiçãoJSON/model/tipos de campos obrigatórios ou índice de conteúdo inválido. | Passo seguinte |
Resposta401 · authentication_error | CondiçãoChave API da Ailoot inválida. | Passo seguinte |
Resposta404 · not_found_error | CondiçãoA tarefa/saída não existe ou não pertence ao mesmo utilizador/chave API/grupo. | Passo seguinte |
Resposta502 · result_pending_check | CondiçãoEnvio/estado original incompleto; conserve o ID original, sem voltar a enviar. | Passo seguinte |
Resposta503 · result_pending_check | CondiçãoO conteúdo multimédia/a rota/a liquidação original está em verificação; continue a operação original. | Passo seguinte |
Aliases
Aliases do modelo
Ailoot Ultra doubao-seedance-1-0-pro-250528
Aliases dos caminhos dos métodos
/v1/videos/generations
IDs de chamada relacionados
FAQ · ByteDance: Seedance 1.0 Pro
- Que entradas e resultados estão disponíveis?
POST /v1/videos·doubao-seedance-1-0-pro-250528:text,image→video- Que campos utiliza o pedido?
POST /v1/videos·doubao-seedance-1-0-pro-250528:model,content,duration,resolution,ratio,service_tier,seed,camerafixed,watermark,execution_expires_after- Que limites se aplicam?
POST /v1/videos·doubao-seedance-1-0-pro-250528:duration.minimum:2;duration.maximum:12;seed.minimum:-1;seed.maximum:4294967295;execution_expires_after.minimum:3600;execution_expires_after.maximum:259200