Vidu: Q2 Text-to-Video
Vidu Q2 cria vídeo a partir de instruções de texto para a cena, com duração de 1–10 segundos, saída de 540p, 720p ou 1080p e cinco proporções de imagem. Este perfil viduq2 específico usa o prompt para o estilo e o movimento e devolve o resultado através de uma tarefa assíncrona.
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.
Vidu Q2 cria vídeo a partir de uma cena escrita através do perfil de vídeo a partir de texto selecionado por viduq2. As entradas obrigatórias são o identificador exato do modelo e um prompt que descreva a cena. Utilize-o para um conceito curto de produto, um plano geral ou uma ação de personagem cujo aspeto e movimento possam ser especificados por palavras. Este método configurado gera vídeo a partir de texto; a sua descrição não atribui ao seletor um modo separado de referência de imagem ou de edição de vídeo.
Construa as instruções em torno de uma sequência visível. Identifique o sujeito, o local, a ação, a escala do plano, o movimento da câmara e a composição final. Para um conceito de produto, descreva um objeto sobre uma mesa, luz a deslocar-se sobre o material e uma aproximação lenta da câmara que termina num detalhe reconhecível. Para uma cena de local, estabeleça o ambiente antes de avançar para o ponto focal. Mantenha a ação adequada à duração escolhida do vídeo para que a cena tenha espaço para o final pretendido.
O limite do prompt é de 2 000 caracteres. Coloque primeiro o sujeito e a ação essenciais, depois acrescente os detalhes de iluminação, material, ambiente e câmara que alteram o resultado pretendido. Especifique o estilo visual no prompt. O guia específico de Q2 indica que os parâmetros separados style e movement_amplitude não têm efeito neste modelo, pelo que as predefinições general ou anime e as opções de amplitude de movimento não substituem uma descrição clara da cena.
A definição de duração específica do modelo aceita segundos inteiros de um a dez. As escolhas de resolução específicas de Q2 são 540p, 720p e 1080p, com 720p como predefinição documentada. Escolha a duração e a resolução em conjunto, de acordo com a ação e o destino. Uma apresentação curta e um movimento mais longo precisam de tempos diferentes; aumentar a duração pedida deve servir a sequência visível, não apenas esticar instruções inalteradas. Inspecione as dimensões e a duração reais do vídeo devolvido ao preparar a colocação final.
As escolhas documentadas de aspect_ratio são 16:9, 9:16, 3:4, 4:3 e 1:1, com 16:9 por predefinição. O guia inclui explicitamente 3:4 e 4:3 para a família Q2. Escolha o formato antes da geração e descreva uma composição adequada: mantenha o sujeito principal legível numa vista vertical ou use a largura de um enquadramento horizontal para o cenário envolvente. Deixe a vista final suficientemente clara para a página, a apresentação ou o posterior tratamento de legendas pretendidos.
O campo seed controla a variação. Omiti-lo ou fornecer 0 seleciona um valor aleatório; um valor diferente de zero seleciona a opção documentada de seed fixo para geração repetível. Preserve o seed devolvido com o prompt e as definições ao comparar versões. A operação partilhada também documenta controlos audio e off_peak especificamente para modelos Q3. Essas opções Q3 não são capacidades atribuídas a este perfil Q2; planeie este pedido em torno da sua entrada de texto e saída de vídeo documentadas.
A geração é assíncrona. O envio devolve task_id e um estado inicial, sendo created usado para uma tarefa acabada de criar. Guarde a identidade da tarefa enquanto acompanha o processamento. A consulta documentada do resultado usa state=success para um resultado bem-sucedido e devolve um array creations. Cada elemento tem o URL do vídeo em creations[].url; guarde todos os vídeos devolvidos em vez de presumir que a tarefa contém sempre exatamente uma criação.
A documentação do resultado também comunica a duração, os fps e a largura e altura da resolução do vídeo real. Guarde esses valores comunicados com o vídeo concluído, em vez de tratar a frequência de fotogramas ou as dimensões de um exemplo como uma especificação fixa de Q2. A resposta de criação da tarefa inclui um valor credits juntamente com a configuração do pedido. Guarde esses metadados comunicados da tarefa e a identidade da tarefa concluída com o resultado, para que cada vídeo permaneça ligado às suas definições de geração.
Reveja toda a sequência face às instruções originais: aspeto do sujeito, forma do objeto, direção do movimento, continuidade da câmara e vista final pretendida. Para uma revisão, identifique o detalhe concreto que falhou as instruções e preserve as partes da cena que resultaram. Mantenha juntos o prompt, o seletor exato, as definições, a identidade da tarefa e os vídeos concluídos, para que uma comparação posterior se baseie nos resultados reais.
Ailoot Ultra · Vídeo POST /v1/videos viduq2
viduq2Introdução
Vidu Q2 cria vídeo a partir de instruções de texto para a cena, com duração de 1–10 segundos, saída de 540p, 720p ou 1080p e cinco proporções de imagem. Este perfil viduq2 específico usa o prompt para o estilo e o movimento e devolve o resultado através de uma tarefa assíncrona.
- Entradas aceites
- Texto
- Resultados
- Vídeo
Disponível no Ailoot · entradas e métodos
Ailoot Ultra · Vídeo POST /v1/videos
- Entrada
text- Saída
video
| Campo | Tipo | Requisito | Valores e limites | Predefinição |
|---|---|---|---|---|
Campomodel | Tipostring | RequisitoObrigatório | Valores e limites viduq2 | Predefinição— |
Campoprompt | Tipostring | RequisitoObrigatório | Valores e limites Condições: Descreva a cena a gerar. O limite documentado é de 2000 carateres; a Ailoot verifica se a cadeia não está vazia e conserva o texto. | Predefinição— |
Campoduration | Tipointeger | RequisitoOpcional | Valores e limites Mínimo: 1 Máximo: 10 Condições: A descrição específica do modelo viduq2 indica 1–10 segundos inteiros. Não está documentada uma duração predefinida específica do modelo. Unidade: segundos | Predefinição— |
Camposeed | Tipostring | RequisitoOpcional | Valores e limites Condições: Omita ou envie a cadeia "0" para aleatoriedade. Um valor seed fornecido diferente de zero seleciona o comportamento documentado de seed fixo; não é especificado qualquer intervalo numérico. | Predefinição— |
Campoaspect_ratio | Tipostring | RequisitoOpcional | Valores e limites 16:9, 9:16, 3:4, 4:3, 1:1 | Predefinição16:9 |
Camporesolution | Tipostring | RequisitoOpcional | Valores e limites 540p, 720p, 1080p Condições: A lista específica do modelo viduq2 documenta estes escalões para 1–10 segundos. Um enum e uma tabela comuns também mencionam 360p; a sua aplicabilidade entra em conflito com essa lista e não é afirmada aqui. | Predefinição720p |
Campostyle | Tipostring | RequisitoOpcional | Valores e limites general, anime Condições: O pedido comum aceita este campo, mas a documentação indica expressamente que não tem efeito em viduq2. | Predefiniçãogeneral |
Campomovement_amplitude | Tipostring | RequisitoOpcional | Valores e limites auto, small, medium, large Condições: O pedido comum aceita este campo, mas a documentação indica expressamente que não tem efeito nos modelos q2. | Predefiniçãoauto |
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 | Contratomodel, prompt |
Parâmetrooptional | Contratoduration, seed, aspect_ratio, resolution, style, movement_amplitude |
Parâmetromaterial_types | Contratotext |
Parâmetroadditional_properties | Contratotrue |
Parâmetrovalidation_scope | ContratoA Ailoot valida as cadeias não vazias de model/prompt. Os tipos e limites opcionais abaixo constituem o contrato documentado do pedido; os outros campos do pedido são preservados para o modelo selecionado. |
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 público e o polling_url devolvidos.
Consulte periodicamente a operação original e leia state; success e um resultado creations[].url pertencente ao utilizador definem a conclusão.
Transfira todos os URL de vídeos devolvidos que pertencem ao utilizador; não deduza do exemplo um número fixo de resultados, duração ou frequência de fotogramas.
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 | Custo |
|---|---|---|---|
| ConfiguraçãoTarifas base por token | Tabela de tarifasTarifa base | Quantidade prevista— | 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çãoCusto estimado de geração | Tabela de tarifas— | Quantidade previstaestimativa para uma geração | Custo Saída · Custo estimado de geração · Estimativa apenas para comparação $5.12 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":"viduq2","prompt":"In an ultra-realistic fashion photography style featuring light blue and pale amber tones, an astronaut in a spacesuit walks through the fog. The background consists of enchanting white and golden lights, creating a minimalist still life and an impressive panoramic scene."}
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: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 the 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("state")!="success":raise SystemExit("Poll the same original job until its owned result is returned.")
creations=r.get("creations")
if not isinstance(creations,list) or not creations:raise SystemExit("No completed video creations.")
urls=[]
for item in creations:
value=item.get("url") if isinstance(item,dict) else None
values=[value] if isinstance(value,str) else value
if not isinstance(values,list) or not values:raise SystemExit("No completed video URL.")
for u in values:
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 the actual Ailoot-owned signed result.")
urls.append(u)
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
O JSON conserva o estado nativo e a matriz creations, acrescentando id/provider_task_id/polling_url públicos. Os URLs de vídeo selecionados ficam vazios antes da publicação e tornam-se URLs assinados pertencentes à Ailoot após a conclusão.
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.
Transfira todos os URL efetivamente devolvidos em creations[].url; um índice de conteúdo identifica um resultado real devolvido.
Se for necessário verificar a resposta original
A declaração fixada não enumera qualquer estado terminal de falha. Conserve a resposta/cabeçalhos/id originais e consulte essa mesma operação perante qualquer estado não reconhecido ou erro result_pending_check; nunca volte a enviar uma criação de resultado desconhecido.
Campos da resposta
| Campo | Tipo | Significado |
|---|---|---|
Campoid | Tipostring | SignificadoIdentificador público de tarefa ou operação devolvido pela Ailoot. |
Campoprovider_task_id | Tipostring | SignificadoIdentificador da tarefa original, distinto do id público. |
Campopolling_url | Tipostring | SignificadoCaminho de consulta devolvido pela Ailoot para a tarefa original. |
Campotask_id | Tipostring when supplied | SignificadoIdentificador original presente na resposta de criação. |
Campostate | Tipostring when supplied | SignificadoEstado nativo da tarefa: created para o estado pendente fixado e success para a conclusão. |
Campoerr_code | Tipostring when supplied | SignificadoDiagnóstico da tarefa; a especificação guardada não declara uma lista enumerada de códigos de erro. |
Campocreations[].url | Tipostring|string[] | SignificadoCada URL selecionado de vídeo concluído é substituído por um URL assinado pertencente à Ailoot. |
Campocreations[].video.duration | Tiponumber when supplied | SignificadoDuração do vídeo devolvido; verifique o resultado efetivamente concluído. |
Campocreations[].video.fps | Tipointeger when supplied | SignificadoFrequência de fotogramas devolvida; não é prometida uma frequência fixa. |
Campocreations[].video.resolution.width | Tipointeger when supplied | SignificadoLargura da saída devolvida em píxeis. |
Campocreations[].video.resolution.height | Tipointeger when supplied | SignificadoAltura da saída devolvida em píxeis. |
Erros e passos seguintes
| Resposta | Condição | Passo seguinte |
|---|---|---|
Resposta400 · invalid_request_error | CondiçãoJSON/model inválido, cadeias obrigatórias em falta ou vazias, ou um índice de conteúdo inválido. | Passo seguinte |
Resposta401 · authentication_error | CondiçãoChave API da Ailoot inválida. | Passo seguinte |
Resposta403 · permission_error | CondiçãoO grupo da chave API não tem acesso a esta rota multimédia. | Passo seguinte |
Resposta404 · not_found_error | CondiçãoA tarefa original ou o resultado pedido não existe ou não pertence ao mesmo utilizador/chave API/grupo. | Passo seguinte |
Resposta502 · result_pending_check | CondiçãoO envio original ou o respetivo estado está incompleto ou não pode ser reconciliado; conserve o ID original e não volte a enviar. | Passo seguinte |
Resposta503 · result_pending_check | CondiçãoA associação original, a rota ou o conteúdo multimédia pertencente ao utilizador ainda está em verificação; continue a consultar essa operação original. | Passo seguinte |
Resposta503 · server_error | CondiçãoO serviço multimédia ou o armazenamento da tarefa original não está disponível. | Passo seguinte |
Aliases
Aliases do modelo
Ailoot Ultra viduq2
Aliases dos caminhos dos métodos
/v1/videos/generations
IDs de chamada relacionados
FAQ · Vidu: Q2 Text-to-Video
- Que entradas e resultados estão disponíveis?
POST /v1/videos·viduq2:text→video- Que campos utiliza o pedido?
POST /v1/videos·viduq2:model,prompt,duration,seed,aspect_ratio,resolution,style,movement_amplitude- Que limites se aplicam?
POST /v1/videos·viduq2:duration.minimum:1;duration.maximum:10