Vidu: Q2 Text-to-Video
Vidu Q2 crée une vidéo à partir d’un brief de scène textuel, avec une durée de 1 à 10 secondes, une sortie 540p, 720p ou 1080p et cinq rapports d’aspect. Ce profil viduq2 précis utilise le prompt pour le style et le mouvement et renvoie son résultat par une tâche asynchrone.
À propos du modèle
Cette description présente les capacités du modèle. Les entrées, sorties et options disponibles dans Ailoot pour la méthode sélectionnée figurent ci-dessous.
Vidu Q2 crée une vidéo à partir d’une scène écrite au moyen du profil texte-vers-vidéo sélectionné par viduq2. Ses entrées obligatoires sont l’identifiant exact du modèle et un prompt décrivant la scène. Utilisez-le pour un court concept de produit, un plan d’ensemble ou une action de personnage dont l’apparence et le mouvement peuvent être précisés par des mots. Cette méthode configurée est texte-vers-vidéo ; sa description n’attribue pas au sélecteur un mode distinct de référence image ou de modification vidéo.
Construisez le brief autour d’une séquence visible. Identifiez le sujet, le lieu, l’action, l’échelle de plan, le mouvement de caméra et la composition finale. Pour un concept de produit, décrivez un objet sur une table, la lumière se déplaçant sur sa matière et une lente approche de caméra qui se termine sur un détail reconnaissable. Pour une scène de lieu, présentez l’environnement avant de vous rapprocher du point d’intérêt. Adaptez l’action à la durée de clip choisie afin que la scène ait le temps d’atteindre la fin voulue.
La limite du prompt est de 2 000 caractères. Placez d’abord le sujet et l’action essentiels, puis ajoutez les détails d’éclairage, de matière, d’environnement et de caméra qui modifient le résultat voulu. Précisez le style visuel dans le prompt. Le guide propre à Q2 indique que les paramètres distincts style et movement_amplitude sont sans effet pour ce modèle : le préréglage general ou anime et les options d’amplitude de mouvement ne remplacent donc pas une description claire de la scène.
Le réglage de durée propre au modèle accepte des secondes entières de un à dix. Les choix de résolution propres à Q2 sont 540p, 720p et 1080p, avec 720p comme valeur par défaut documentée. Choisissez ensemble la durée et la résolution selon l’action et la destination. Une brève mise en valeur et un mouvement plus long demandent des rythmes différents ; augmenter la durée demandée doit servir la séquence visible plutôt que simplement étirer un brief inchangé. Vérifiez les dimensions et la longueur réelles du clip renvoyé lors de la préparation de son intégration finale.
Les choix documentés du paramètre aspect_ratio sont 16:9, 9:16, 3:4, 4:3 et 1:1, avec 16:9 par défaut. Le guide inclut explicitement 3:4 et 4:3 pour la famille Q2. Choisissez le cadrage avant la génération et décrivez une composition adaptée : gardez un sujet principal lisible dans une vue en portrait, ou utilisez la largeur d’un cadre paysage pour le décor environnant. Gardez la vue finale assez claire pour la page, la présentation ou l’ajout ultérieur de légendes prévu.
Le champ seed contrôle la variation. L’omettre ou fournir 0 sélectionne une valeur aléatoire ; une valeur non nulle sélectionne l’option documentée de graine fixe pour une génération reproductible. Conservez la graine renvoyée avec le prompt et les réglages pour comparer les versions. L’opération commune documente aussi les réglages audio et off_peak spécifiquement pour les modèles Q3. Ces options Q3 ne sont pas des capacités attribuées à ce profil Q2 ; préparez cette requête autour de son entrée textuelle et de sa sortie vidéo documentées.
La génération est asynchrone. La soumission renvoie task_id et un état initial, avec created pour une tâche nouvellement créée. Conservez cette identité de tâche pendant le suivi du traitement. La consultation de résultat documentée utilise state=success pour un résultat réussi et renvoie un tableau creations. Chaque élément contient l’URL de sa vidéo dans creations[].url ; enregistrez chaque vidéo renvoyée plutôt que de supposer que la tâche contient toujours exactement une création.
La documentation de résultat rapporte aussi la durée et les fps de la vidéo réelle ainsi que la largeur et la hauteur de sa résolution. Gardez ces valeurs rapportées avec le clip achevé au lieu de considérer la cadence ou les dimensions d’un exemple comme une spécification fixe de Q2. La réponse de création de tâche comprend une valeur credits avec la configuration de requête. Conservez ces métadonnées de tâche rapportées et l’identité de la tâche achevée avec le résultat, afin que chaque vidéo reste liée à ses réglages de génération.
Vérifiez toute la séquence par rapport au brief d’origine : l’apparence du sujet, la forme des objets, la direction du mouvement, la continuité de caméra et la vue finale voulue. Pour une révision, identifiez le détail concret qui ne correspond pas au brief et préservez les parties réussies de la scène. Gardez ensemble le prompt, le sélecteur exact, les réglages, l’identité de tâche et les vidéos achevées afin qu’une comparaison ultérieure repose sur les résultats réels.
Ailoot Ultra · Vidéo POST /v1/videos viduq2
viduq2Premiers pas
Vidu Q2 crée une vidéo à partir d’un brief de scène textuel, avec une durée de 1 à 10 secondes, une sortie 540p, 720p ou 1080p et cinq rapports d’aspect. Ce profil viduq2 précis utilise le prompt pour le style et le mouvement et renvoie son résultat par une tâche asynchrone.
- Entrées acceptées
- Texte
- Résultats
- Vidéo
Disponible dans Ailoot · entrées et méthodes
Ailoot Ultra · Vidéo POST /v1/videos
- Entrée
text- Sortie
video
| Champ | Type | Exigence | Valeurs et limites | Par défaut |
|---|---|---|---|---|
Champmodel | Typestring | ExigenceObligatoire | Valeurs et limites viduq2 | Par défaut— |
Champprompt | Typestring | ExigenceObligatoire | Valeurs et limites Conditions: Décrivez la scène à générer. La limite documentée est de 2000 caractères ; Ailoot vérifie que la chaîne n’est pas vide et conserve le texte. | Par défaut— |
Champduration | Typeinteger | ExigenceFacultatif | Valeurs et limites Minimum: 1 Maximum: 10 Conditions: La description propre au modèle viduq2 précise une durée de 1–10 secondes entières. Aucune durée par défaut propre au modèle n’est documentée. Unité: secondes | Par défaut— |
Champseed | Typestring | ExigenceFacultatif | Valeurs et limites Conditions: Omettez le champ ou envoyez la chaîne "0" pour un résultat aléatoire. Une valeur seed fournie non nulle sélectionne le comportement documenté avec seed fixe ; aucune plage numérique n’est précisée. | Par défaut— |
Champaspect_ratio | Typestring | ExigenceFacultatif | Valeurs et limites 16:9, 9:16, 3:4, 4:3, 1:1 | Par défaut16:9 |
Champresolution | Typestring | ExigenceFacultatif | Valeurs et limites 540p, 720p, 1080p Conditions: La liste propre au modèle viduq2 documente ces paliers pour 1–10 secondes. Une énumération et un tableau communs mentionnent également 360p ; son applicabilité contredit cette liste et n’est pas affirmée ici. | Par défaut720p |
Champstyle | Typestring | ExigenceFacultatif | Valeurs et limites general, anime Conditions: La requête commune accepte ce champ, mais la documentation indique explicitement qu’il n’a aucun effet pour viduq2. | Par défautgeneral |
Champmovement_amplitude | Typestring | ExigenceFacultatif | Valeurs et limites auto, small, medium, large Conditions: La requête commune accepte ce champ, mais la documentation indique explicitement qu’il n’a aucun effet pour les modèles q2. | Par défautauto |
Combinaisons d’éléments d’entrée
Paramètres et cycle de vie de la méthode
| Paramètre | Contrat |
|---|---|
Paramètrecontent_type | Contratapplication/json |
Paramètrerequired | Contratmodel, prompt |
Paramètreoptional | Contratduration, seed, aspect_ratio, resolution, style, movement_amplitude |
Paramètrematerial_types | Contrattext |
Paramètreadditional_properties | Contrattrue |
Paramètrevalidation_scope | ContratAiloot valide les chaînes model/prompt non vides. Les types facultatifs et les limites ci-dessous constituent le contrat documenté de la requête ; les autres champs de la requête sont conservés pour le modèle sélectionné. |
Alias de méthode : /v1/videos/generations
Cycle de vie : 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
Créez une seule fois et conservez l’id public et polling_url renvoyés.
Interrogez périodiquement l’opération d’origine et consultez state ; success et un résultat creations[].url dont vous êtes propriétaire constituent la condition d’achèvement.
Téléchargez chaque URL de vidéo renvoyée dont vous êtes propriétaire ; l’exemple ne permet pas de déduire un nombre fixe de résultats, une durée ou une fréquence d’images.
Tarifs
Calcul du coût final
Les tarifs affichés servent à estimer le coût avant la génération. Le montant final est calculé à partir du coût enregistré pour la génération d’origine. La durée mesurée du résultat et les quantités prévisionnelles ne constituent pas la quantité finale facturable.
Les tarifs n’ajoutent pas d’options de requête. Les paramètres pris en charge figurent dans la méthode sélectionnée.
- Mode rapide
- Non précisé Lorsque le mode rapide est sélectionné
- Mode Flex
- Non précisé Lorsque le mode flex est sélectionné
- Effort de raisonnement maximal
- Non précisé Lorsque l’effort de raisonnement maximal utilise l’ajustement par défaut (default)
Tarifs estimés à des fins de comparaison
Prix par configuration
Associez chaque coût aux conditions indiquées. Utilisez un seul tarif pour chaque ensemble de configurations alternatives.
| Configuration | Barème tarifaire | Quantité prévisionnelle | Coût |
|---|---|---|---|
| ConfigurationTarifs de base des jetons | Barème tarifaireTarif de base | Quantité prévisionnelle— | Coût Entrée · Tokens en entrée · Estimation à des fins de comparaison uniquement — / 1K tokens Sortie · Tokens en sortie · Estimation à des fins de comparaison uniquement — / 1K tokens Entrée · Lecture du cache · Estimation à des fins de comparaison uniquement — / 1K tokens Entrée · Écriture dans le cache · Estimation à des fins de comparaison uniquement — / 1K tokens Entrée · Écriture dans le cache, 1 h · Estimation à des fins de comparaison uniquement — / 1K tokens |
| ConfigurationCoût estimé de la génération | Barème tarifaire— | Quantité prévisionnelleEstimation pour une génération | Coût Sortie · Coût estimé de génération · Estimation à des fins de comparaison uniquement $5.12 estimation avant génération Cette estimation ne constitue ni des frais supplémentaires ni un tarif fixe pour la génération terminée. |
Ailoot réserve un montant estimé avant une requête. Après le résultat, le montant final est débité selon l’utilisation mesurée. Pour le streaming, le montant final à débiter est calculé à partir du relevé final d’utilisation. Fonctionnement de la réservation et du débit →
Exemples de requêtes
Ailoot Ultra · Vidéo
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
Recevoir et enregistrer les résultats
Ailoot Ultra · Vidéo
Le JSON conserve l’état natif et le tableau creations, auxquels s’ajoutent les valeurs publiques id/provider_task_id/polling_url. Les URL vidéo sélectionnées sont vides avant publication et deviennent des URL signées appartenant à Ailoot après achèvement.
GET /v1/videos/{request_id}GET /v1/videos/generations/{request_id}GET /v1/videos/{request_id}/contentGET /v1/videos/generations/{request_id}/content
Conserver tous les résultats terminés
Enregistrez chaque vidéo terminée ou fichier renvoyé ; récupérez chaque URL de ressource effectivement renvoyée.
Téléchargez chaque URL réelle renvoyée dans creations[].url ; un index de contenu identifie un résultat réellement renvoyé.
Si la réponse d’origine doit être vérifiée
La déclaration figée n’énumère aucun état d’échec terminal. Conservez la réponse, les en-têtes et l’id d’origine, puis vérifiez cette même opération en cas d’état non reconnu ou d’erreur result_pending_check ; ne soumettez jamais de nouveau une création dont l’issue est inconnue.
Champs de la réponse
| Champ | Type | Signification |
|---|---|---|
Champid | Typestring | SignificationIdentifiant public de tâche ou d’opération Ailoot renvoyé. |
Champprovider_task_id | Typestring | SignificationIdentifiant de la tâche d’origine, distinct de l’id public. |
Champpolling_url | Typestring | SignificationChemin de consultation Ailoot renvoyé pour la tâche d’origine. |
Champtask_id | Typestring when supplied | SignificationIdentifiant d’origine présent dans la réponse de création. |
Champstate | Typestring when supplied | SignificationÉtat natif de la tâche : created pour l’état d’attente figé et success pour l’achèvement. |
Champerr_code | Typestring when supplied | SignificationDiagnostic de la tâche ; la spécification enregistrée ne déclare aucune liste énumérée de codes d’erreur. |
Champcreations[].url | Typestring|string[] | SignificationChaque URL de vidéo terminée sélectionnée est remplacée par une URL signée appartenant à Ailoot. |
Champcreations[].video.duration | Typenumber when supplied | SignificationDurée vidéo renvoyée ; vérifiez le résultat réellement terminé. |
Champcreations[].video.fps | Typeinteger when supplied | SignificationFréquence d’images renvoyée ; aucune fréquence fixe n’est promise. |
Champcreations[].video.resolution.width | Typeinteger when supplied | SignificationLargeur de sortie renvoyée en pixels. |
Champcreations[].video.resolution.height | Typeinteger when supplied | SignificationHauteur de sortie renvoyée en pixels. |
Erreurs et étapes suivantes
| Réponse | Condition | Étape suivante |
|---|---|---|
Réponse400 · invalid_request_error | ConditionJSON/modèle invalide, chaînes obligatoires manquantes ou vides, ou index de contenu invalide. | Étape suivante |
Réponse401 · authentication_error | ConditionClé API Ailoot invalide. | Étape suivante |
Réponse403 · permission_error | ConditionLe groupe de la clé API n’est pas autorisé à utiliser cette route média. | Étape suivante |
Réponse404 · not_found_error | ConditionLa tâche d’origine ou le résultat demandé est absent ou n’appartient pas au même utilisateur, à la même clé API et au même groupe. | Étape suivante |
Réponse502 · result_pending_check | ConditionLa soumission initiale ou son état est incomplet ou ne peut pas être rapproché des données disponibles ; conservez l’ID d’origine et ne soumettez pas de nouveau la requête. | Étape suivante |
Réponse503 · result_pending_check | ConditionL’association d’origine, la route ou le média dont vous êtes propriétaire fait encore l’objet de vérifications ; poursuivez la vérification de cette opération d’origine. | Étape suivante |
Réponse503 · server_error | ConditionLe service de médias ou le stockage des tâches d’origine est indisponible. | Étape suivante |
Alias
Alias du modèle
Ailoot Ultra viduq2
Alias des chemins de méthode
/v1/videos/generations
ID d’appel associés
FAQ · Vidu: Q2 Text-to-Video
- Quelles entrées et quels résultats sont disponibles ?
POST /v1/videos·viduq2:text→video- Quels champs la requête utilise-t-elle ?
POST /v1/videos·viduq2:model,prompt,duration,seed,aspect_ratio,resolution,style,movement_amplitude- Quelles limites s’appliquent ?
POST /v1/videos·viduq2:duration.minimum:1;duration.maximum:10