ByteDance: Seedance 2.5
Seedance 2.5 cria vídeo a partir de texto e referências de imagem, vídeo ou áudio, com fluxos de trabalho documentados de edição e extensão. O seu exemplo específico de 2.5 combina uma imagem de produto com várias referências de movimento e ativa som gerado para uma sequência publicitária coordenada.
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 2.5 cria vídeo usando uma cena escrita e referências multimodais. O seletor exato doubao-seedance-2-5-260628 tem a sua própria operação e exemplo documentados. Essa operação descreve geração, edição e extensão de vídeo, com imagens, vídeo, áudio e texto como conteúdos de entrada. Utilize as referências para comunicar aspeto do sujeito, ação, movimento da câmara, estilo e som, depois explique o resultado a criar a partir delas.
As combinações de entrada incluem só texto, imagens ou vídeo com texto opcional, imagens com áudio, vídeo com áudio e imagens, vídeo e áudio em conjunto. As combinações listadas associam áudio a conteúdos visuais em vez de descreverem um pedido apenas de áudio. Organize cada elemento pelo seu papel: uma imagem estabelece um sujeito ou aspeto, um vídeo demonstra movimento ou uma cena existente e o áudio fornece uma referência sonora. Indique qual o papel relevante para o plano pedido, para que uma referência de fundo não seja confundida com a personagem principal.
O exemplo específico de 2.5 é uma sequência publicitária de produto. Fornece uma imagem e várias referências de vídeo, depois descreve um foco inicial, disposições ordenadas de produtos, planos de detalhe, uma ação em câmara lenta e uma composição final da marca. O pedido atribui os papéis reference_image e reference_video e usa referências individuais para composição, movimento, trabalho de câmara e impacto. Isto dá uma estrutura prática a um conceito de campanha: planeie os momentos visuais, identifique a referência de cada momento e especifique a disposição final.
Uma sequência escrita pode distinguir o que acontece de como é filmado. Descreva primeiro a ação do produto, depois a escala do plano, o percurso da câmara, o ritmo e a transição para a vista seguinte. Se uma referência define o produto e outra demonstra um movimento de câmara, indique essas responsabilidades separadas. Para uma cena com vários objetos, explique as suas posições e a ordem das interações. Inspecione o resultado gerado quanto à forma real do produto, à disposição e ao movimento, em vez de presumir que todos os detalhes das referências aparecem inalterados.
Para uma edição, identifique o vídeo existente e o elemento a rever, como o cenário, uma ação ou o estilo visual, indicando a continuidade a manter. Para uma extensão, descreva como a cena deve continuar a partir das filmagens fornecidas. Reveja a junção além do novo segmento: aspeto do sujeito, direção do movimento, posição da câmara e tempos do som afetam a perceção do resultado como uma única cena. Mantenha juntos o vídeo original e a revisão concluída, para que a alteração possa ser verificada face à continuidade pretendida.
O exemplo multimodal documentado de 2.5 define generate_audio=true e pede uma sequência de quinze segundos com enquadramento 16:9. Estes valores descrevem esse exemplo, não um limite universal de duração ou de materiais de referência. Dê à cena pedida uma intenção sonora clara, incluindo a relação entre música, efeitos e ação visível, depois avalie a saída audiovisual real. Uma referência sonora e a banda sonora gerada devem ser revistas em conjunto quanto ao ritmo e à execução pretendidos.
Escolha a duração, o enquadramento e a resolução a partir das definições oferecidas para este perfil específico. Guarde a configuração pedida com o prompt e compare-a com os campos efetivamente devolvidos pela tarefa. Utilize a duração, a resolução e a proporção devolvidas ao preparar o vídeo concluído para o seu destino. Preserve o identificador exato do perfil no registo da revisão, para que uma comparação posterior use a mesma edição selecionada.
A utilização de tokens de vídeo é calculada como (duração do vídeo de entrada + duração do vídeo de saída) × largura da saída × altura da saída × frequência de fotogramas da saída / 1024. Os pedidos que contêm vídeo de entrada e os que não contêm vídeo de entrada têm categorias de faturação distintas. A consulta da tarefa comunica usage.completion_tokens e usage.total_tokens; guarde estas quantidades comunicadas com o vídeo concluído.
A geração é assíncrona. O envio devolve um identificador e o fluxo de tarefas configurado fornece o estado, seguido de content.video_url após o sucesso. Guarde o vídeo concluído com os conteúdos de origem e as instruções da sequência. Reveja todos os momentos planeados, as interações dos objetos, o aspeto das personagens, o enquadramento e o alinhamento do som em todo o resultado. Para uma revisão, identifique o detalhe concreto que falhou e preserve as partes da cena que resultaram, em vez de substituir todas as instruções por outras sem relação.
Ailoot Ultra · Vídeo POST /v1/videos doubao-seedance-2-5-260628
doubao-seedance-2-5-260628Introdução
Seedance 2.5 cria vídeo a partir de texto e referências de imagem, vídeo ou áudio, com fluxos de trabalho documentados de edição e extensão. O seu exemplo específico de 2.5 combina uma imagem de produto com várias referências de movimento e ativa som gerado para uma sequência publicitária coordenada.
- Entradas aceites
- Texto · Imagens · Vídeo · Áudio
- Resultados
- Vídeo
Disponível no Ailoot · entradas e métodos
Ailoot Ultra · Vídeo POST /v1/videos
- Entrada
text,image,video,audio- Saída
video
| Campo | Tipo | Requisito | Valores e limites | Predefinição |
|---|---|---|---|---|
Campomodel | Tipostring | RequisitoObrigatório | Valores e limites doubao-seedance-2-5-260628 | 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— |
Campogenerate_audio | Tipoboolean | RequisitoOpcional | Valores e limites Condições: O exemplo de 2.5 define true, mas a descrição copiada do seletor enumera apenas 2.0/fast/1.5; não existe uma garantia mais ampla de definição/valor predefinido. | Predefinição— |
Campoduration | Tipointeger | RequisitoOpcional | Valores e limites Condições: O valor literal 15 do exemplo de 2.5 não é um máximo nem um valor predefinido. | Predefinição— |
Camporesolution | Tipostring | RequisitoOpcional | Valores e limites Condições: Não se deduz qualquer valor predefinido/enum específico de 2.5 a partir de descrições copiadas. | Predefinição— |
Camporatio | Tipostring | RequisitoOpcional | Valores e limites Condições: O modo adaptativo está explicitamente limitado a 2.0/fast/1.5; o exemplo de 2.5 utiliza apenas 16:9. | Predefinição— |
Campowatermark | Tipoboolean | RequisitoOpcional | Valores e limites | Predefiniçãofalse |
Camposeed | Tipointeger | RequisitoOpcional | Valores e limites Mínimo: -1 Máximo: 4 294 967 295 | Predefinição-1 |
Campoexecution_expires_after | Tipointeger | RequisitoOpcional | Valores e limites Mínimo: 3600 Máximo: 259 200 Unidade: segundos | Predefinição172 800 |
Camposervice_tier | Tipostring | RequisitoOpcional | Valores e limites Condições: 2.0/fast excluem a opção offline flex; o âmbito de 2.5 não está estabelecido. | Predefinição— |
Camposafety_identifier | Tipostring | RequisitoOpcional | Valores e limites | Predefinição— |
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 | Contratocontent, model |
Parâmetrooptional | Contratogenerate_audio, duration, resolution, ratio, watermark, seed, execution_expires_after, service_tier, safety_identifier |
Parâmetromaterial_types | Contratotext, image, video, audio |
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âmetromaterial_combinations | Contratotext, image, video, image, audio, image, video, video, audio, image, video, audio |
Parâmetrooptional_text_with_media | Contratotrue |
Parâmetroreference_media_count_and_size_limits | Contratonull |
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çãoA entrada contém vídeo. | Tabela de tarifas— | Quantidade prevista— | Unidade de faturaçãopor 1K tokens de vídeo | Custo Saída · Estimativa apenas para comparação $0.012 por 1K tokens de vídeo |
| ConfiguraçãoA entrada não contém vídeo. | Tabela de tarifas— | Quantidade prevista— | Unidade de faturaçãopor 1K tokens de vídeo | Custo Saída · Estimativa apenas para comparação $0.02 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.822402 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-2-5-260628","content":[{"type":"text","text":"女孩抱着狐狸,女孩睁开眼,温柔地看向镜头,狐狸友善地抱着,镜头缓缓拉出,女孩的头发被风吹动"}]}
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-2-5-260628
Aliases dos caminhos dos métodos
/v1/videos/generations
IDs de chamada relacionados
FAQ · ByteDance: Seedance 2.5
- Que entradas e resultados estão disponíveis?
POST /v1/videos·doubao-seedance-2-5-260628:text,image,video,audio→video- Que campos utiliza o pedido?
POST /v1/videos·doubao-seedance-2-5-260628:model,content,generate_audio,duration,resolution,ratio,watermark,seed,execution_expires_after,service_tier,safety_identifier- Que limites se aplicam?
POST /v1/videos·doubao-seedance-2-5-260628:seed.minimum:-1;seed.maximum:4294967295;execution_expires_after.minimum:3600;execution_expires_after.maximum:259200