Vidu: Q2 Text-to-Video
Vidu Q2 crea video a partir de una descripción de escena en texto, con una duración de 1–10 segundos, salida de 540p, 720p o 1080p y cinco relaciones de aspecto. Este perfil viduq2 concreto utiliza el campo prompt para el estilo y el movimiento y devuelve su resultado mediante una tarea asíncrona.
Sobre el modelo
Esta descripción cubre las capacidades del modelo. Las entradas, salidas y opciones disponibles en Ailoot se indican a continuación para el método seleccionado.
Vidu Q2 crea video a partir de una escena escrita mediante el perfil de texto a video seleccionado por viduq2. Sus entradas obligatorias son el identificador exacto del modelo y un prompt que describa la escena. Utilízalo para un concepto breve de producto, un plano general o una acción de personaje cuyo aspecto y movimiento se puedan especificar con palabras. Este método configurado es de texto a video; su descripción no asigna al selector un modo separado de imagen de referencia o edición de video.
Construye las instrucciones en torno a una secuencia visible. Identifica el sujeto, el lugar, la acción, el tamaño del plano, el movimiento de cámara y la composición final. Para un concepto de producto, describe un objeto sobre una mesa, la luz que recorre su material y un lento acercamiento de cámara que termine en un detalle reconocible. Para una escena de un lugar, establece el entorno antes de acercarte al punto de interés. Ajusta la acción a la duración del clip elegida para que la escena tenga espacio para el final previsto.
El límite de prompt es de 2,000 caracteres. Pon primero el sujeto y la acción esenciales; después, añade los detalles de iluminación, material, entorno y cámara que cambien el resultado deseado. Especifica el estilo visual en el prompt. La guía específica de Q2 indica que los parámetros separados style y movement_amplitude no surten efecto en este modelo, así que los ajustes predefinidos general o anime y las opciones de amplitud de movimiento no sustituyen una descripción clara de la escena.
El ajuste de duración específico del modelo acepta segundos enteros de uno a diez. Las opciones de resolución específicas de Q2 son 540p, 720p y 1080p, con 720p como valor predeterminado documentado. Elige la duración y la resolución conjuntamente según la acción y el destino. Una breve presentación del sujeto y un movimiento más largo necesitan tiempos diferentes; aumentar la duración solicitada debe servir a la secuencia visible, en lugar de limitarse a alargar una escena sin cambiar sus instrucciones. Revisa las dimensiones y la duración reales del clip devuelto al preparar su colocación final.
Las opciones documentadas de aspect_ratio son 16:9, 9:16, 3:4, 4:3 y 1:1, con 16:9 como valor predeterminado. La guía incluye expresamente 3:4 y 4:3 para la familia Q2. Elige el encuadre antes de generar y describe una composición adecuada: mantén claramente visible el sujeto principal en una vista vertical o utiliza el ancho de un encuadre horizontal para mostrar el entorno. Deja la vista final lo bastante clara para la página, presentación o incorporación posterior de rótulos prevista.
El campo seed controla la variación. Omitirlo o proporcionar 0 selecciona un valor aleatorio; un valor distinto de cero selecciona la opción de semilla fija documentada para una generación reproducible. Conserva el seed devuelto junto con el prompt y los ajustes al comparar versiones. La operación compartida también documenta los controles audio y off_peak específicamente para modelos Q3. Esas opciones de Q3 no son capacidades asignadas a este perfil Q2; planifica esta solicitud en torno a su entrada de texto y salida de video documentadas.
La generación es asíncrona. El envío devuelve task_id y un estado inicial, con created para una tarea recién creada. Conserva esa identidad de tarea mientras sigues el procesamiento. La consulta de resultados documentada utiliza state=success para un resultado correcto y devuelve una lista creations. Cada entrada tiene la URL de su video en creations[].url; guarda todos los videos devueltos en lugar de asumir que la tarea siempre contiene exactamente una creación.
La documentación de resultados también comunica la duración real del video, fps y el ancho y alto de la resolución. Conserva esos valores comunicados junto con el clip terminado, en lugar de tratar la frecuencia de fotogramas o las dimensiones de un ejemplo como una especificación fija de Q2. La respuesta de creación de la tarea incluye un valor credits junto con la configuración de la solicitud. Conserva esos metadatos de tarea comunicados y el identificador de la tarea completada junto con el resultado, para que cada video siga vinculado a sus ajustes de generación.
Revisa toda la secuencia frente a las instrucciones originales: aspecto del sujeto, forma del objeto, dirección de movimiento, continuidad de cámara y vista final prevista. Para una revisión, identifica el detalle concreto que no cumplió las instrucciones y conserva las partes de la escena que funcionaron. Guarda juntos el prompt, el selector exacto, los ajustes, la identidad de tarea y los videos terminados, para que una comparación posterior se base en los resultados reales.
Ailoot Ultra · Generación de video POST /v1/videos viduq2
viduq2Inicio
Vidu Q2 crea video a partir de una descripción de escena en texto, con una duración de 1–10 segundos, salida de 540p, 720p o 1080p y cinco relaciones de aspecto. Este perfil viduq2 concreto utiliza el campo prompt para el estilo y el movimiento y devuelve su resultado mediante una tarea asíncrona.
- Entradas aceptadas
- Texto
- Resultados
- Video
Disponible en Ailoot · entradas y métodos
Ailoot Ultra · Generación de video POST /v1/videos
- Entrada
text- Salida
video
| Campo | Tipo | Requisito | Valores y límites | Predeterminado |
|---|---|---|---|---|
Campomodel | Tipostring | RequisitoObligatorio | Valores y límites viduq2 | Predeterminado— |
Campoprompt | Tipostring | RequisitoObligatorio | Valores y límites Condiciones: Describe la escena que se generará. El límite documentado es de 2000 caracteres; Ailoot verifica que la cadena no esté vacía y conserva el texto. | Predeterminado— |
Campoduration | Tipointeger | RequisitoOpcional | Valores y límites Mínimo: 1 Máximo: 10 Condiciones: La descripción específica del modelo viduq2 indica 1–10 segundos enteros. No se documenta una duración predeterminada específica del modelo. Unidad: segundos | Predeterminado— |
Camposeed | Tipostring | RequisitoOpcional | Valores y límites Condiciones: Omite el campo o envía la cadena "0" para un resultado aleatorio. Un seed proporcionado distinto de cero selecciona el comportamiento de seed fijo documentado; no se especifica un intervalo numérico. | Predeterminado— |
Campoaspect_ratio | Tipostring | RequisitoOpcional | Valores y límites 16:9, 9:16, 3:4, 4:3, 1:1 | Predeterminado16:9 |
Camporesolution | Tipostring | RequisitoOpcional | Valores y límites 540p, 720p, 1080p Condiciones: La lista específica del modelo viduq2 documenta estos niveles para 1–10 segundos. Un conjunto compartido de valores y una tabla también mencionan 360p; su aplicación contradice esa lista y no se afirma aquí. | Predeterminado720p |
Campostyle | Tipostring | RequisitoOpcional | Valores y límites general, anime Condiciones: La solicitud compartida acepta este campo, pero la documentación indica expresamente que no tiene efecto en viduq2. | Predeterminadogeneral |
Campomovement_amplitude | Tipostring | RequisitoOpcional | Valores y límites auto, small, medium, large Condiciones: La solicitud compartida acepta este campo, pero la documentación indica expresamente que no tiene efecto en los modelos q2. | Predeterminadoauto |
Combinaciones de materiales de entrada
Parámetros del método y ciclo de vida
| 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 | ContratoAiloot valida que las cadenas model/prompt no estén vacías. Los tipos y límites opcionales siguientes constituyen el contrato documentado de la solicitud; los demás campos se conservan para el modelo seleccionado. |
Alias de 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
Crea una sola vez y conserva el id público y polling_url devueltos.
Consulta periódicamente la operación original y lee state; la finalización requiere success y un resultado creations[].url que te pertenezca.
Descarga cada URL de video devuelta que te pertenezca; no deduzcas una cantidad de salidas, duración o frecuencia de fotogramas fija a partir del ejemplo.
Tarifas
Cómo se calcula el cargo definitivo
Las tarifas mostradas permiten estimar el costo antes de la generación. El cargo final se calcula a partir del costo registrado para la generación original. La duración medida de la salida y las cantidades estimadas no son la cantidad facturable final.
Las referencias tarifarias no añaden opciones a la solicitud. Los parámetros admitidos se indican en el método seleccionado.
- Modo fast
- Sin especificar Cuando se selecciona el modo fast
- Modo flex
- Sin especificar Cuando se selecciona el modo flex
- Esfuerzo máximo de razonamiento
- Sin especificar Cuando el esfuerzo máximo de razonamiento usa el ajuste default
Tarifas estimadas para comparar
Precios por configuración
Relaciona cada cargo con las condiciones mostradas. Usa una tarifa para cada conjunto de configuraciones alternativas.
| Configuración | Tabla de tarifas | Cantidad prevista | Cargo |
|---|---|---|---|
| ConfiguraciónTarifas base por token | Tabla de tarifasTarifa base | Cantidad prevista— | Cargo Entrada · Tokens de entrada · Estimación solo para comparar — / 1K tokens Salida · Tokens de salida · Estimación solo para comparar — / 1K tokens Entrada · Lectura de caché · Estimación solo para comparar — / 1K tokens Entrada · Escritura en caché · Estimación solo para comparar — / 1K tokens Entrada · Escritura en caché, 1 hora · Estimación solo para comparar — / 1K tokens |
| ConfiguraciónCosto estimado de generación | Tabla de tarifas— | Cantidad previstaestimación para una generación | Cargo Salida · Costo estimado de generación · Estimación solo para comparar $5.12 estimación previa a la generación Esta estimación no es un cargo adicional ni una tarifa fija por la generación completada. |
Ailoot reserva un monto estimado antes de la solicitud. Tras obtener el resultado, liquida el cargo definitivo según el uso medido. En las respuestas en flujo, la liquidación usa el registro de uso final. Cómo funcionan la reserva y la liquidación →
Solicitudes de ejemplo
Ailoot Ultra · Generación de video
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
Recibir y guardar resultados
Ailoot Ultra · Generación de video
El JSON conserva el estado nativo y el arreglo creations, y agrega id/provider_task_id/polling_url públicos. Las URL de video seleccionadas están vacías antes de la publicación y pasan a ser URL firmadas bajo control de Ailoot después de completarse.
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
Conserva todos los resultados completados
Guarda todos los videos completados o archivos recibidos; descarga cada URL de archivo que se haya devuelto.
Descarga cada URL real devuelta en creations[].url; un índice de contenido identifica una salida real devuelta.
Si es necesario revisar la respuesta original
La declaración fijada no enumera ningún estado final de fallo. Conserva la respuesta, los encabezados y el id originales, y consulta esa misma operación ante cualquier estado no reconocido o error result_pending_check; nunca vuelvas a enviar una creación de resultado desconocido.
Campos de respuesta
| Campo | Tipo | Significado |
|---|---|---|
Campoid | Tipostring | SignificadoIdentificador público de tarea u operación de Ailoot devuelto. |
Campoprovider_task_id | Tipostring | SignificadoIdentificador de la tarea original, independiente del id público. |
Campopolling_url | Tipostring | SignificadoRuta de consulta de Ailoot devuelta para la tarea original. |
Campotask_id | Tipostring when supplied | SignificadoIdentificador original presente en la respuesta de creación. |
Campostate | Tipostring when supplied | SignificadoEstado nativo de la tarea: created para el estado pendiente fijado y success para la finalización. |
Campoerr_code | Tipostring when supplied | SignificadoDiagnóstico de la tarea; la especificación guardada no declara una lista enumerada de códigos de error. |
Campocreations[].url | Tipostring|string[] | SignificadoCada URL de video completado seleccionada se sustituye por una URL firmada bajo control de Ailoot. |
Campocreations[].video.duration | Tiponumber when supplied | SignificadoDuración del video devuelta; revisa el resultado real completado. |
Campocreations[].video.fps | Tipointeger when supplied | SignificadoFrecuencia de fotogramas devuelta; no se promete una frecuencia fija. |
Campocreations[].video.resolution.width | Tipointeger when supplied | SignificadoAncho de salida devuelto en píxeles. |
Campocreations[].video.resolution.height | Tipointeger when supplied | SignificadoAlto de salida devuelto en píxeles. |
Errores y siguientes pasos
| Respuesta | Condición | Siguiente paso |
|---|---|---|
Respuesta400 · invalid_request_error | CondiciónJSON o modelo no válido, cadenas obligatorias ausentes o vacías, o índice de contenido no válido. | Siguiente paso |
Respuesta401 · authentication_error | CondiciónClave API de Ailoot no válida. | Siguiente paso |
Respuesta403 · permission_error | CondiciónEl grupo de la clave API no tiene acceso a esta ruta multimedia. | Siguiente paso |
Respuesta404 · not_found_error | CondiciónLa tarea original o la salida solicitada no existe o no pertenece al mismo usuario, clave API y grupo. | Siguiente paso |
Respuesta502 · result_pending_check | CondiciónEl envío original o su estado está incompleto o no se puede conciliar; conserva el ID original y no vuelvas a enviarlo. | Siguiente paso |
Respuesta503 · result_pending_check | CondiciónTodavía se verifica la vinculación original, la ruta o el contenido multimedia que te pertenece; continúa consultando esa operación original. | Siguiente paso |
Respuesta503 · server_error | CondiciónEl servicio multimedia o el almacenamiento de la tarea original no están disponibles. | Siguiente paso |
Alias
Alias del modelo
Ailoot Ultra viduq2
Alias de rutas de métodos
/v1/videos/generations
ID de modelo relacionados
FAQ · Vidu: Q2 Text-to-Video
- ¿Qué entradas y resultados están disponibles?
POST /v1/videos·viduq2:text→video- ¿Qué campos utiliza la solicitud?
POST /v1/videos·viduq2:model,prompt,duration,seed,aspect_ratio,resolution,style,movement_amplitude- ¿Qué límites se aplican?
POST /v1/videos·viduq2:duration.minimum:1;duration.maximum:10