{
  "aboutHtml": "<p>Alibaba Wan 3.0 Prime est l’édition accélérée de la famille vidéo Wan 3.0. Le producteur la nomme wan3.0-video-prime et documente les mêmes catégories de tâches tout-en-un que Wan 3.0 standard, la vitesse constituant la particularité mise en avant de cette édition. Un brief écrit, une image de départ, des références visuelles ou sonores, ou une vidéo source peuvent guider un clip avec son audio. Les livrables utiles comprennent une scène de produit, une courte séquence narrative, une image fixe animée ou une révision dirigée d’un plan existant.</p><p>Pour la génération de vidéo à partir de texte, décrivez le sujet, la scène, le mouvement, la caméra, le traitement visuel et le son. Le guide 3.0 prend en charge les plans uniques ou un storyboard avec des étiquettes de plans et des plages temporelles, en recommandant environ quatre à six secondes par plan. Pour un clip de produit, passez d’une vue large stable d’un sac sur une table à un détail de matière plus rapproché, puis maintenez une composition finale pendant une courte réplique. Donnez un objectif clair à la séquence et vérifiez que la caméra, le rythme et l’identité du produit restent cohérents.</p><p>Pour la génération à partir d’une première image, l’image fournie définit l’ouverture et le prompt décrit le mouvement et le travail de caméra. La génération avec première et dernière image fournit les deux extrémités et demande la transition entre elles. Préparez des extrémités qui appartiennent à la même scène et un format cible cohérent avec la sortie prévue. Le producteur recommande le cadrage adaptatif pour les tâches basées sur des images. Le mode d’images de début et de fin et les modes de références distincts ont des règles différentes de combinaison des matériaux : les premières ou dernières images ne sont pas mélangées avec des entrées d’images, de vidéos ou de sons de référence dans une même requête.</p><p>Le mode de références accepte jusqu’à dix images, cinq clips vidéo et cinq clips audio, dans une limite de vingt matériaux de référence multimodaux. Les limites documentées par fichier sont de 20 Mo pour une image de référence, 100 Mo pour une vidéo et 15 Mo pour le son. Les clips vidéo de référence peuvent totaliser au maximum quinze secondes ; les clips audio de référence ont leur propre limite totale de quinze secondes. Nommez le rôle de chaque matériau et utilisez son indice propre au type, par exemple Image 1, Video 1 ou Audio 1. Une personne, un produit, un mouvement de caméra et une voix ne doivent pas rester des références interchangeables.</p><p>Le producteur prend aussi en charge un document ou une référence de page web publique, qui peuvent accompagner d’autres références. Un fichier et un lien web s’excluent mutuellement, et la source doit être accessible sans connexion. Une scène basée sur un document peut utiliser le contenu pertinent d’un produit ou d’une histoire comme contexte, tandis qu’une référence visuelle définit l’apparence. Préparez les matériaux qui doivent réellement informer le clip et précisez les éléments importants. Vérifiez les détails visuels factuels et le texte de la scène générée par rapport à cette source, au lieu d’accepter une interprétation séduisante mais altérée.</p><p>Le dialogue vocal, l’ambiance, les effets sonores et la musique de fond sont générés avec l’image. Décrivez les mots prononcés, l’identité de la personne qui parle, l’interprétation et la place du son dans la scène. Le guide documente le son activé par défaut et un contrôle de vidéo muette. Dans un dialogue, donnez aux personnes qui parlent des signes visuels et vocaux distinctifs et laissez assez de temps à l’échange. Écoutez le résultat pour les mots réellement prononcés, l’attribution des voix et la relation entre un effet et l’action visible. Le son intégré fait partie de la scène et nécessite donc la même revue que l’image.</p><p>Le guide tout-en-un du producteur documente aussi la modification et le prolongement à partir d’une vidéo de référence. Un brief de modification doit préciser l’élément à ajouter, supprimer ou remplacer et les caractéristiques à conserver. Un brief de prolongement doit décrire le contenu avant, après ou autour du clip existant. Utilisez le cadrage adaptatif et la durée intelligente pour ces fonctions. Lorsqu’une entrée vidéo est fournie, la durée combinée documentée de la vidéo d’entrée et de celle de sortie ne doit pas dépasser 30 secondes. Préparez clairement le passage source et le changement souhaité ; vérifiez la transition, le sujet conservé et le son au lieu de juger une seule image attrayante.</p><p>La sortie documentée est un MP4 à 30 images par seconde, en 480p, 720p ou 1080p, avec une durée de nouvelle génération de deux à trente secondes. La durée intelligente laisse le modèle choisir une longueur adaptée. Des cadrages carrés, paysage et portrait sont disponibles, et le cadrage adaptatif suit les matériaux fournis. Le producteur traite la génération comme une tâche et renvoie l’adresse de la vidéo terminée ; son guide indique que cette adresse de résultat est valide pendant vingt-quatre heures. Conservez le clip lui-même et le brief créatif lorsque vous préparez un montage ou une séquence et examinez le livrable entier avant de l’utiliser.</p><p>Prime et Wan 3.0 standard partagent les modes et la structure de préparation documentés. Prime est le choix optimisé pour la vitesse, sans garantie de délai fixe d’achèvement. Les modes antérieurs de Wan 2.7 et 2.6 ont leurs propres règles de durée, de références et de sortie ; ces limites ne définissent pas cette édition 3.0. Pour une revue utile, vérifiez la continuité des objets et des personnages, le cadrage des images de début et de fin, les modifications demandées, le dialogue et tous les détails dépendants des sources. Gardez la correction suivante précise afin que les éléments réussis de la scène restent stables pendant la révision du problème identifié.</p>",
  "aboutText": "Alibaba Wan 3.0 Prime est l’édition accélérée de la famille vidéo Wan 3.0. Le producteur la nomme wan3.0-video-prime et documente les mêmes catégories de tâches tout-en-un que Wan 3.0 standard, la vitesse constituant la particularité mise en avant de cette édition. Un brief écrit, une image de départ, des références visuelles ou sonores, ou une vidéo source peuvent guider un clip avec son audio. Les livrables utiles comprennent une scène de produit, une courte séquence narrative, une image fixe animée ou une révision dirigée d’un plan existant.\n\nPour la génération de vidéo à partir de texte, décrivez le sujet, la scène, le mouvement, la caméra, le traitement visuel et le son. Le guide 3.0 prend en charge les plans uniques ou un storyboard avec des étiquettes de plans et des plages temporelles, en recommandant environ quatre à six secondes par plan. Pour un clip de produit, passez d’une vue large stable d’un sac sur une table à un détail de matière plus rapproché, puis maintenez une composition finale pendant une courte réplique. Donnez un objectif clair à la séquence et vérifiez que la caméra, le rythme et l’identité du produit restent cohérents.\n\nPour la génération à partir d’une première image, l’image fournie définit l’ouverture et le prompt décrit le mouvement et le travail de caméra. La génération avec première et dernière image fournit les deux extrémités et demande la transition entre elles. Préparez des extrémités qui appartiennent à la même scène et un format cible cohérent avec la sortie prévue. Le producteur recommande le cadrage adaptatif pour les tâches basées sur des images. Le mode d’images de début et de fin et les modes de références distincts ont des règles différentes de combinaison des matériaux : les premières ou dernières images ne sont pas mélangées avec des entrées d’images, de vidéos ou de sons de référence dans une même requête.\n\nLe mode de références accepte jusqu’à dix images, cinq clips vidéo et cinq clips audio, dans une limite de vingt matériaux de référence multimodaux. Les limites documentées par fichier sont de 20 Mo pour une image de référence, 100 Mo pour une vidéo et 15 Mo pour le son. Les clips vidéo de référence peuvent totaliser au maximum quinze secondes ; les clips audio de référence ont leur propre limite totale de quinze secondes. Nommez le rôle de chaque matériau et utilisez son indice propre au type, par exemple Image 1, Video 1 ou Audio 1. Une personne, un produit, un mouvement de caméra et une voix ne doivent pas rester des références interchangeables.\n\nLe producteur prend aussi en charge un document ou une référence de page web publique, qui peuvent accompagner d’autres références. Un fichier et un lien web s’excluent mutuellement, et la source doit être accessible sans connexion. Une scène basée sur un document peut utiliser le contenu pertinent d’un produit ou d’une histoire comme contexte, tandis qu’une référence visuelle définit l’apparence. Préparez les matériaux qui doivent réellement informer le clip et précisez les éléments importants. Vérifiez les détails visuels factuels et le texte de la scène générée par rapport à cette source, au lieu d’accepter une interprétation séduisante mais altérée.\n\nLe dialogue vocal, l’ambiance, les effets sonores et la musique de fond sont générés avec l’image. Décrivez les mots prononcés, l’identité de la personne qui parle, l’interprétation et la place du son dans la scène. Le guide documente le son activé par défaut et un contrôle de vidéo muette. Dans un dialogue, donnez aux personnes qui parlent des signes visuels et vocaux distinctifs et laissez assez de temps à l’échange. Écoutez le résultat pour les mots réellement prononcés, l’attribution des voix et la relation entre un effet et l’action visible. Le son intégré fait partie de la scène et nécessite donc la même revue que l’image.\n\nLe guide tout-en-un du producteur documente aussi la modification et le prolongement à partir d’une vidéo de référence. Un brief de modification doit préciser l’élément à ajouter, supprimer ou remplacer et les caractéristiques à conserver. Un brief de prolongement doit décrire le contenu avant, après ou autour du clip existant. Utilisez le cadrage adaptatif et la durée intelligente pour ces fonctions. Lorsqu’une entrée vidéo est fournie, la durée combinée documentée de la vidéo d’entrée et de celle de sortie ne doit pas dépasser 30 secondes. Préparez clairement le passage source et le changement souhaité ; vérifiez la transition, le sujet conservé et le son au lieu de juger une seule image attrayante.\n\nLa sortie documentée est un MP4 à 30 images par seconde, en 480p, 720p ou 1080p, avec une durée de nouvelle génération de deux à trente secondes. La durée intelligente laisse le modèle choisir une longueur adaptée. Des cadrages carrés, paysage et portrait sont disponibles, et le cadrage adaptatif suit les matériaux fournis. Le producteur traite la génération comme une tâche et renvoie l’adresse de la vidéo terminée ; son guide indique que cette adresse de résultat est valide pendant vingt-quatre heures. Conservez le clip lui-même et le brief créatif lorsque vous préparez un montage ou une séquence et examinez le livrable entier avant de l’utiliser.\n\nPrime et Wan 3.0 standard partagent les modes et la structure de préparation documentés. Prime est le choix optimisé pour la vitesse, sans garantie de délai fixe d’achèvement. Les modes antérieurs de Wan 2.7 et 2.6 ont leurs propres règles de durée, de références et de sortie ; ces limites ne définissent pas cette édition 3.0. Pour une revue utile, vérifiez la continuité des objets et des personnages, le cadrage des images de début et de fin, les modifications demandées, le dialogue et tous les détails dépendants des sources. Gardez la correction suivante précise afin que les éléments réussis de la scène restent stables pendant la révision du problème identifié.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "d855291b1e562a847693fc87de4e2250e71ac15da0865bef0064f99c67c8445a",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "fr-be",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">Al</span><h2 id=\"sheet-title\">Alibaba: Wan 3.0 Prime</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Fermer\">×</button></div><div class=\"idline\"><span>Alibaba /</span><code>alibaba/wan-3.0-prime</code><button type=\"button\" id=\"copy-id\">Copier l’ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Rubriques de la fiche modèle\"><button type=\"button\" data-card-jump=\"overview\">Premiers pas</button><button type=\"button\" data-card-jump=\"methods\">Entrées et méthodes</button><button type=\"button\" data-card-jump=\"pricing\">Tarifs</button><button type=\"button\" data-card-jump=\"examples\">Exemples</button><button type=\"button\" data-card-jump=\"results\">Résultats</button><button type=\"button\" data-card-jump=\"aliases\">Alias</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Méthodes API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|videos|/v1/videos|alibaba%2Fwan-3.0-prime\">Vidéo</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">Premiers pas</h3><p class=\"mdesc-full\">Alibaba Wan 3.0 Prime est le modèle vidéo Wan 3.0 optimisé pour la vitesse. Son profil producteur prend en charge la génération à partir de texte, d’une première image ou d’images de début et de fin, ainsi que les références multimodales, avec du son intégré. Il produit des clips MP4 de 2 à 30 secondes à 30 images par seconde en 480p, 720p ou 1080p, avec cadrage adaptatif et fonctions de modification.</p><dl class=\"card-io\" data-card-io><div><dt>Entrées acceptées</dt><dd>Texte · Images</dd></div><div><dt>Résultats</dt><dd>Vidéo</dd></div></dl><details class=\"card-about\"><summary>À propos du modèle</summary><p class=\"note-s\" data-model-method-boundary>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.</p><div class=\"mabout\" id=\"m-about\"><p>Alibaba Wan 3.0 Prime est l’édition accélérée de la famille vidéo Wan 3.0. Le producteur la nomme wan3.0-video-prime et documente les mêmes catégories de tâches tout-en-un que Wan 3.0 standard, la vitesse constituant la particularité mise en avant de cette édition. Un brief écrit, une image de départ, des références visuelles ou sonores, ou une vidéo source peuvent guider un clip avec son audio. Les livrables utiles comprennent une scène de produit, une courte séquence narrative, une image fixe animée ou une révision dirigée d’un plan existant.</p><p>Pour la génération de vidéo à partir de texte, décrivez le sujet, la scène, le mouvement, la caméra, le traitement visuel et le son. Le guide 3.0 prend en charge les plans uniques ou un storyboard avec des étiquettes de plans et des plages temporelles, en recommandant environ quatre à six secondes par plan. Pour un clip de produit, passez d’une vue large stable d’un sac sur une table à un détail de matière plus rapproché, puis maintenez une composition finale pendant une courte réplique. Donnez un objectif clair à la séquence et vérifiez que la caméra, le rythme et l’identité du produit restent cohérents.</p><p>Pour la génération à partir d’une première image, l’image fournie définit l’ouverture et le prompt décrit le mouvement et le travail de caméra. La génération avec première et dernière image fournit les deux extrémités et demande la transition entre elles. Préparez des extrémités qui appartiennent à la même scène et un format cible cohérent avec la sortie prévue. Le producteur recommande le cadrage adaptatif pour les tâches basées sur des images. Le mode d’images de début et de fin et les modes de références distincts ont des règles différentes de combinaison des matériaux : les premières ou dernières images ne sont pas mélangées avec des entrées d’images, de vidéos ou de sons de référence dans une même requête.</p><p>Le mode de références accepte jusqu’à dix images, cinq clips vidéo et cinq clips audio, dans une limite de vingt matériaux de référence multimodaux. Les limites documentées par fichier sont de 20 Mo pour une image de référence, 100 Mo pour une vidéo et 15 Mo pour le son. Les clips vidéo de référence peuvent totaliser au maximum quinze secondes ; les clips audio de référence ont leur propre limite totale de quinze secondes. Nommez le rôle de chaque matériau et utilisez son indice propre au type, par exemple Image 1, Video 1 ou Audio 1. Une personne, un produit, un mouvement de caméra et une voix ne doivent pas rester des références interchangeables.</p><p>Le producteur prend aussi en charge un document ou une référence de page web publique, qui peuvent accompagner d’autres références. Un fichier et un lien web s’excluent mutuellement, et la source doit être accessible sans connexion. Une scène basée sur un document peut utiliser le contenu pertinent d’un produit ou d’une histoire comme contexte, tandis qu’une référence visuelle définit l’apparence. Préparez les matériaux qui doivent réellement informer le clip et précisez les éléments importants. Vérifiez les détails visuels factuels et le texte de la scène générée par rapport à cette source, au lieu d’accepter une interprétation séduisante mais altérée.</p><p>Le dialogue vocal, l’ambiance, les effets sonores et la musique de fond sont générés avec l’image. Décrivez les mots prononcés, l’identité de la personne qui parle, l’interprétation et la place du son dans la scène. Le guide documente le son activé par défaut et un contrôle de vidéo muette. Dans un dialogue, donnez aux personnes qui parlent des signes visuels et vocaux distinctifs et laissez assez de temps à l’échange. Écoutez le résultat pour les mots réellement prononcés, l’attribution des voix et la relation entre un effet et l’action visible. Le son intégré fait partie de la scène et nécessite donc la même revue que l’image.</p><p>Le guide tout-en-un du producteur documente aussi la modification et le prolongement à partir d’une vidéo de référence. Un brief de modification doit préciser l’élément à ajouter, supprimer ou remplacer et les caractéristiques à conserver. Un brief de prolongement doit décrire le contenu avant, après ou autour du clip existant. Utilisez le cadrage adaptatif et la durée intelligente pour ces fonctions. Lorsqu’une entrée vidéo est fournie, la durée combinée documentée de la vidéo d’entrée et de celle de sortie ne doit pas dépasser 30 secondes. Préparez clairement le passage source et le changement souhaité ; vérifiez la transition, le sujet conservé et le son au lieu de juger une seule image attrayante.</p><p>La sortie documentée est un MP4 à 30 images par seconde, en 480p, 720p ou 1080p, avec une durée de nouvelle génération de deux à trente secondes. La durée intelligente laisse le modèle choisir une longueur adaptée. Des cadrages carrés, paysage et portrait sont disponibles, et le cadrage adaptatif suit les matériaux fournis. Le producteur traite la génération comme une tâche et renvoie l’adresse de la vidéo terminée ; son guide indique que cette adresse de résultat est valide pendant vingt-quatre heures. Conservez le clip lui-même et le brief créatif lorsque vous préparez un montage ou une séquence et examinez le livrable entier avant de l’utiliser.</p><p>Prime et Wan 3.0 standard partagent les modes et la structure de préparation documentés. Prime est le choix optimisé pour la vitesse, sans garantie de délai fixe d’achèvement. Les modes antérieurs de Wan 2.7 et 2.6 ont leurs propres règles de durée, de références et de sortie ; ces limites ne définissent pas cette édition 3.0. Pour une revue utile, vérifiez la continuité des objets et des personnages, le cadrage des images de début et de fin, les modifications demandées, le dialogue et tous les détails dépendants des sources. Gardez la correction suivante précise afin que les éléments réussis de la scène restent stables pendant la révision du problème identifié.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Disponible dans Ailoot · entrées et méthodes</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Vidéo</b> <code>POST /v1/videos</code></summary><dl class=\"method-capabilities\"><div><dt>Entrée</dt><dd><code>text</code>, <code>image</code></dd></div><div><dt>Sortie</dt><dd><code>video</code></dd></div><div><dt>Format de sortie</dt><dd>Octets MP4 d’origine ; sans normalisation ni transcodage</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Champ</th><th>Type</th><th>Exigence</th><th>Valeurs et limites</th><th>Par défaut</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Exigence\"><span class=\"card-cell-label\">Exigence</span>Obligatoire</td><td data-cell-label=\"Valeurs et limites\"><span class=\"card-cell-label\">Valeurs et limites</span><div>alibaba/wan-3.0-prime</div></td><td data-cell-label=\"Par défaut\" data-default=\"unspecified\"><span class=\"card-cell-label\">Par défaut</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">prompt</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Exigence\"><span class=\"card-cell-label\">Exigence</span>Obligatoire</td><td data-cell-label=\"Valeurs et limites\"><span class=\"card-cell-label\">Valeurs et limites</span></td><td data-cell-label=\"Par défaut\" data-default=\"unspecified\"><span class=\"card-cell-label\">Par défaut</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">duration</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>integer</code></td><td data-cell-label=\"Exigence\"><span class=\"card-cell-label\">Exigence</span>Obligatoire</td><td data-cell-label=\"Valeurs et limites\"><span class=\"card-cell-label\">Valeurs et limites</span><div>2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30</div><div>Minimum: 1</div><div>Maximum: 600</div></td><td data-cell-label=\"Par défaut\" data-default=\"unspecified\"><span class=\"card-cell-label\">Par défaut</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">resolution</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Exigence\"><span class=\"card-cell-label\">Exigence</span>Facultatif</td><td data-cell-label=\"Valeurs et limites\"><span class=\"card-cell-label\">Valeurs et limites</span><div>480p, 720p, 1080p</div></td><td data-cell-label=\"Par défaut\" data-default=\"unspecified\"><span class=\"card-cell-label\">Par défaut</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">aspect_ratio</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Exigence\"><span class=\"card-cell-label\">Exigence</span>Facultatif</td><td data-cell-label=\"Valeurs et limites\"><span class=\"card-cell-label\">Valeurs et limites</span><div>16:9, 4:3, 1:1, 3:4, 9:16</div></td><td data-cell-label=\"Par défaut\" data-default=\"unspecified\"><span class=\"card-cell-label\">Par défaut</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">generate_audio</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>boolean</code></td><td data-cell-label=\"Exigence\"><span class=\"card-cell-label\">Exigence</span>Facultatif</td><td data-cell-label=\"Valeurs et limites\"><span class=\"card-cell-label\">Valeurs et limites</span><div>false, true</div></td><td data-cell-label=\"Par défaut\" data-default=\"unspecified\"><span class=\"card-cell-label\">Par défaut</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">frame_images</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>array</code></td><td data-cell-label=\"Exigence\"><span class=\"card-cell-label\">Exigence</span>Facultatif</td><td data-cell-label=\"Valeurs et limites\"><span class=\"card-cell-label\">Valeurs et limites</span><div>Nombre minimal d’éléments: 1</div><div>Nombre maximal d’éléments: 1</div><div>Contenu en entrée: Tableau d’objets représentant les images de la séquence. Chaque objet comporte type=image_url, image_url contenant url et frame_type. Utilisez une URL d’image HTTPS et définissez frame_type sur first_frame. Chaque rôle d’image apparaît au plus une fois.</div><div>Clés exactes: type, image_url, frame_type</div><div>Conditions: Ces clés décrivent chaque objet représentant une image de la séquence ; image_url contient uniquement url. Omettez frame_images pour une requête contenant uniquement du texte.</div></td><td data-cell-label=\"Par défaut\" data-default=\"unspecified\"><span class=\"card-cell-label\">Par défaut</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">input_references</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>array</code></td><td data-cell-label=\"Exigence\"><span class=\"card-cell-label\">Exigence</span>Facultatif</td><td data-cell-label=\"Valeurs et limites\"><span class=\"card-cell-label\">Valeurs et limites</span></td><td data-cell-label=\"Par défaut\" data-default=\"unspecified\"><span class=\"card-cell-label\">Par défaut</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">seed</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>integer</code></td><td data-cell-label=\"Exigence\"><span class=\"card-cell-label\">Exigence</span>Facultatif</td><td data-cell-label=\"Valeurs et limites\"><span class=\"card-cell-label\">Valeurs et limites</span><div>Minimum: -9 223 372 036 854 775 808</div><div>Maximum: 9 223 372 036 854 775 807</div></td><td data-cell-label=\"Par défaut\" data-default=\"unspecified\"><span class=\"card-cell-label\">Par défaut</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">callback_url</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Exigence\"><span class=\"card-cell-label\">Exigence</span>Facultatif</td><td data-cell-label=\"Valeurs et limites\"><span class=\"card-cell-label\">Valeurs et limites</span><div>Motif: ^https://</div></td><td data-cell-label=\"Par défaut\" data-default=\"unspecified\"><span class=\"card-cell-label\">Par défaut</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">session_id</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Exigence\"><span class=\"card-cell-label\">Exigence</span>Facultatif</td><td data-cell-label=\"Valeurs et limites\"><span class=\"card-cell-label\">Valeurs et limites</span></td><td data-cell-label=\"Par défaut\" data-default=\"unspecified\"><span class=\"card-cell-label\">Par défaut</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">trace</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>object</code></td><td data-cell-label=\"Exigence\"><span class=\"card-cell-label\">Exigence</span>Facultatif</td><td data-cell-label=\"Valeurs et limites\"><span class=\"card-cell-label\">Valeurs et limites</span></td><td data-cell-label=\"Par défaut\" data-default=\"unspecified\"><span class=\"card-cell-label\">Par défaut</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">user</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Exigence\"><span class=\"card-cell-label\">Exigence</span>Facultatif</td><td data-cell-label=\"Valeurs et limites\"><span class=\"card-cell-label\">Valeurs et limites</span></td><td data-cell-label=\"Par défaut\" data-default=\"unspecified\"><span class=\"card-cell-label\">Par défaut</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Combinaisons d’éléments d’entrée</summary><p class=\"note-s\"><b>Texte vers vidéo</b> · Une consigne écrite. · Obligatoire : model, prompt, duration</p><p class=\"note-s\"><code>Fournissez prompt sous forme de texte et duration en secondes entières. Choisissez une résolution prise en charge et, si nécessaire, un rapport largeur/hauteur.</code></p><p class=\"note-s\"><code class=\"card-field-name\">model</code>: Type : string · alibaba/wan-3.0-prime</p><p class=\"note-s\"><code class=\"card-field-name\">prompt</code>: Type : string · Nombre maximal d’octets UTF-8: 10 000 · Caractères autres que des espaces requis: Oui</p><p class=\"note-s\"><b>Image vers vidéo</b> · Une consigne écrite et une image de début de séquence. · Obligatoire : model, prompt, duration, frame_images</p><p class=\"note-s\"><code>frame_images est un tableau. Chaque objet représentant une image de la séquence comporte type, image_url et frame_type ; image_url contient url. Définissez type sur image_url. Utilisez first_frame. Chaque rôle d’image apparaît au plus une fois. Fournissez une URL d’image HTTPS publique pour chaque image de la séquence. Choisissez une résolution prise en charge et, si nécessaire, un rapport largeur/hauteur.</code></p><p class=\"note-s\">Clés exactes : type, image_url, frame_type</p><p class=\"note-s\"><code class=\"card-field-name\">model</code>: Type : string · alibaba/wan-3.0-prime</p><p class=\"note-s\"><code class=\"card-field-name\">prompt</code>: Type : string · Nombre maximal d’octets UTF-8: 10 000 · Caractères autres que des espaces requis: Oui</p></details><details class=\"note-s\" data-method-contract><summary>Paramètres et cycle de vie de la méthode</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Paramètre</th><th>Contrat</th></tr></thead><tbody><tr><th data-cell-label=\"Paramètre\" scope=\"row\"><span class=\"card-cell-label\">Paramètre</span><code>content_type</code></th><td data-cell-label=\"Contrat\"><span class=\"card-cell-label\">Contrat</span>application/json</td></tr><tr><th data-cell-label=\"Paramètre\" scope=\"row\"><span class=\"card-cell-label\">Paramètre</span><code>required</code></th><td data-cell-label=\"Contrat\"><span class=\"card-cell-label\">Contrat</span>model, prompt, duration</td></tr><tr><th data-cell-label=\"Paramètre\" scope=\"row\"><span class=\"card-cell-label\">Paramètre</span><code>material_types</code></th><td data-cell-label=\"Contrat\"><span class=\"card-cell-label\">Contrat</span>text, image</td></tr><tr><th data-cell-label=\"Paramètre\" scope=\"row\"><span class=\"card-cell-label\">Paramètre</span><code>additional_properties</code></th><td data-cell-label=\"Contrat\"><span class=\"card-cell-label\">Contrat</span>false</td></tr><tr><th data-cell-label=\"Paramètre\" scope=\"row\"><span class=\"card-cell-label\">Paramètre</span><code>optional_controls</code></th><td data-cell-label=\"Contrat\"><span class=\"card-cell-label\">Contrat</span>resolution, aspect_ratio, generate_audio, frame_images, input_references, seed, callback_url, session_id, trace, user</td></tr></tbody></table></div><p>Cycle de vie : <code>submit_once_poll_original</code></p><p class=\"note-s\"><code>GET /v1/videos/{public_id}</code></p><p class=\"note-s\"><code>GET /v1/videos/{public_id}/content</code></p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Tarifs</h3><div class=\"card-result-process\" data-billing-basis><h5>Calcul du coût final</h5><p class=\"note-s\">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.</p></div><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Les tarifs n’ajoutent pas d’options de requête. Les paramètres pris en charge figurent dans la méthode sélectionnée.</p><dl data-price-conditions><dt>Mode rapide</dt><dd>Non précisé <span class=\"note-s\">Lorsque le mode rapide est sélectionné</span></dd><dt>Mode Flex</dt><dd>Non précisé <span class=\"note-s\">Lorsque le mode flex est sélectionné</span></dd><dt>Effort de raisonnement maximal</dt><dd>Non précisé <span class=\"note-s\">Lorsque l’effort de raisonnement maximal utilise l’ajustement par défaut (default)</span></dd></dl></div><div data-declared-tariff-pricing><h4>Tarifs estimés à des fins de comparaison</h4><h4>Prix par configuration</h4><p class=\"note-s\">Associez chaque coût aux conditions indiquées. Utilisez un seul tarif pour chaque ensemble de configurations alternatives.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Configuration</th><th>Barème tarifaire</th><th>Quantité prévisionnelle</th><th>Unité de facturation</th><th>Conditions de facturation</th><th>Coût</th></tr></thead><tbody><tr><th data-cell-label=\"Configuration\" scope=\"row\"><span class=\"card-cell-label\">Configuration</span>Tarifs de base des jetons</th><td data-cell-label=\"Barème tarifaire\"><span class=\"card-cell-label\">Barème tarifaire</span>Tarif de base</td><td data-cell-label=\"Quantité prévisionnelle\"><span class=\"card-cell-label\">Quantité prévisionnelle</span>—</td><td data-cell-label=\"Unité de facturation\"><span class=\"card-cell-label\">Unité de facturation</span>—</td><td data-cell-label=\"Conditions de facturation\"><span class=\"card-cell-label\">Conditions de facturation</span>—</td><td data-cell-label=\"Coût\"><span class=\"card-cell-label\">Coût</span><div><span>Entrée · Tokens en entrée · Estimation à des fins de comparaison uniquement</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Sortie · Tokens en sortie · Estimation à des fins de comparaison uniquement</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Entrée · Lecture du cache · Estimation à des fins de comparaison uniquement</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Entrée · Écriture dans le cache · Estimation à des fins de comparaison uniquement</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Entrée · Écriture dans le cache, 1 h · Estimation à des fins de comparaison uniquement</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div></td></tr><tr><th data-cell-label=\"Configuration\" scope=\"row\"><span class=\"card-cell-label\">Configuration</span>Tarif vidéo</th><td data-cell-label=\"Barème tarifaire\"><span class=\"card-cell-label\">Barème tarifaire</span>—</td><td data-cell-label=\"Quantité prévisionnelle\"><span class=\"card-cell-label\">Quantité prévisionnelle</span>—</td><td data-cell-label=\"Unité de facturation\"><span class=\"card-cell-label\">Unité de facturation</span>par seconde de vidéo</td><td data-cell-label=\"Conditions de facturation\"><span class=\"card-cell-label\">Conditions de facturation</span>resolution: 1080p</td><td data-cell-label=\"Coût\"><span class=\"card-cell-label\">Coût</span><div><span>Sortie · Tarif vidéo · Estimation à des fins de comparaison uniquement</span> <b>$0.56</b> <span class=\"price-unit\">par seconde de vidéo</span></div></td></tr><tr><th data-cell-label=\"Configuration\" scope=\"row\"><span class=\"card-cell-label\">Configuration</span>Tarif vidéo</th><td data-cell-label=\"Barème tarifaire\"><span class=\"card-cell-label\">Barème tarifaire</span>—</td><td data-cell-label=\"Quantité prévisionnelle\"><span class=\"card-cell-label\">Quantité prévisionnelle</span>—</td><td data-cell-label=\"Unité de facturation\"><span class=\"card-cell-label\">Unité de facturation</span>par seconde de vidéo</td><td data-cell-label=\"Conditions de facturation\"><span class=\"card-cell-label\">Conditions de facturation</span>resolution: 480p</td><td data-cell-label=\"Coût\"><span class=\"card-cell-label\">Coût</span><div><span>Sortie · Tarif vidéo · Estimation à des fins de comparaison uniquement</span> <b>$0.136</b> <span class=\"price-unit\">par seconde de vidéo</span></div></td></tr><tr><th data-cell-label=\"Configuration\" scope=\"row\"><span class=\"card-cell-label\">Configuration</span>Tarif vidéo</th><td data-cell-label=\"Barème tarifaire\"><span class=\"card-cell-label\">Barème tarifaire</span>—</td><td data-cell-label=\"Quantité prévisionnelle\"><span class=\"card-cell-label\">Quantité prévisionnelle</span>—</td><td data-cell-label=\"Unité de facturation\"><span class=\"card-cell-label\">Unité de facturation</span>par seconde de vidéo</td><td data-cell-label=\"Conditions de facturation\"><span class=\"card-cell-label\">Conditions de facturation</span>resolution: 720p</td><td data-cell-label=\"Coût\"><span class=\"card-cell-label\">Coût</span><div><span>Sortie · Tarif vidéo · Estimation à des fins de comparaison uniquement</span> <b>$0.28</b> <span class=\"price-unit\">par seconde de vidéo</span></div></td></tr><tr><th data-cell-label=\"Configuration\" scope=\"row\"><span class=\"card-cell-label\">Configuration</span>Coût estimé de la génération</th><td data-cell-label=\"Barème tarifaire\"><span class=\"card-cell-label\">Barème tarifaire</span>—</td><td data-cell-label=\"Quantité prévisionnelle\"><span class=\"card-cell-label\">Quantité prévisionnelle</span>Estimation pour une génération</td><td data-cell-label=\"Unité de facturation\"><span class=\"card-cell-label\">Unité de facturation</span>—</td><td data-cell-label=\"Conditions de facturation\"><span class=\"card-cell-label\">Conditions de facturation</span>—</td><td data-cell-label=\"Coût\"><span class=\"card-cell-label\">Coût</span><div><span>Sortie · Coût estimé de génération · Estimation à des fins de comparaison uniquement</span> <b>$0.272</b> <span class=\"price-unit\">estimation avant génération</span></div><p class=\"note-s\">Cette estimation ne constitue ni des frais supplémentaires ni un tarif fixe pour la génération terminée.</p></td></tr></tbody></table></div></div><p class=\"note-s\">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. <a href=\"/docs/fr-be/billing/reserve/\">Fonctionnement de la réservation et du débit →</a></p><div data-declared-reference-pricing><h4>Détails du tarif de référence</h4><p class=\"note-s\">Les barèmes de référence du modèle ne modifient ni la sélection de méthode, ni les devis, ni les coûts. Les frais actifs utilisent les tarifs de la méthode Ailoot sélectionnée.</p><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>Références tarifaires des configurations vidéo</summary><h4>Prix par configuration</h4><p class=\"note-s\">Associez chaque coût aux conditions indiquées. Utilisez un seul tarif pour chaque ensemble de configurations alternatives.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Configuration</th><th>Conditions de facturation</th><th>Coût</th></tr></thead><tbody><tr><th data-cell-label=\"Configuration\" scope=\"row\"><span class=\"card-cell-label\">Configuration</span>Tarif vidéo</th><td data-cell-label=\"Conditions de facturation\"><span class=\"card-cell-label\">Conditions de facturation</span>resolution: 480p</td><td data-cell-label=\"Coût\"><span class=\"card-cell-label\">Coût</span><div><span>Sortie · Tarif vidéo</span> <b>$0.136</b> <span class=\"price-unit\">par seconde de vidéo</span></div><p class=\"note-s\">Tarif publié de référence pour la configuration affichée. Les frais définitifs correspondent à la configuration réellement facturée.</p></td></tr><tr><th data-cell-label=\"Configuration\" scope=\"row\"><span class=\"card-cell-label\">Configuration</span>Tarif vidéo</th><td data-cell-label=\"Conditions de facturation\"><span class=\"card-cell-label\">Conditions de facturation</span>resolution: 720p</td><td data-cell-label=\"Coût\"><span class=\"card-cell-label\">Coût</span><div><span>Sortie · Tarif vidéo</span> <b>$0.28</b> <span class=\"price-unit\">par seconde de vidéo</span></div><p class=\"note-s\">Tarif publié de référence pour la configuration affichée. Les frais définitifs correspondent à la configuration réellement facturée.</p></td></tr><tr><th data-cell-label=\"Configuration\" scope=\"row\"><span class=\"card-cell-label\">Configuration</span>Tarif vidéo</th><td data-cell-label=\"Conditions de facturation\"><span class=\"card-cell-label\">Conditions de facturation</span>resolution: 1080p</td><td data-cell-label=\"Coût\"><span class=\"card-cell-label\">Coût</span><div><span>Sortie · Tarif vidéo</span> <b>$0.56</b> <span class=\"price-unit\">par seconde de vidéo</span></div><p class=\"note-s\">Tarif publié de référence pour la configuration affichée. Les frais définitifs correspondent à la configuration réellement facturée.</p></td></tr></tbody></table></div></details></div></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Exemples de requêtes</h3><h4>Ailoot Ultra · Vidéo</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Variantes du code\"><button class=\"cg-tab\" id=\"model-code-1012-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1012-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · créer une vidéo</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Copier le code\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1012-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1012-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nfrom pathlib import Path\nPath(&#39;request.json&#39;).write_text(&#39;{&quot;aspect_ratio&quot;:&quot;16:9&quot;,&quot;duration&quot;:8,&quot;model&quot;:&quot;alibaba/wan-3.0-prime&quot;,&quot;prompt&quot;:&quot;A serene mountain landscape at sunset&quot;,&quot;resolution&quot;:&quot;720p&quot;}&#39;, encoding=&#39;utf-8&#39;)\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nr=json.loads(Path(&#39;result.json&#39;).read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint(&#39;Keep the complete JSON and response headers; do not resubmit an unknown creation.&#39;)\nPY_RESULT\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Recevoir et enregistrer les résultats</h3><h4>Ailoot Ultra · Vidéo</h4><p class=\"note-s\">URL de contenu signées dont vous êtes propriétaire</p><ul class=\"card-result-paths\"><li><code>GET /v1/videos/{public_id}</code></li><li><code>GET /v1/videos/{public_id}/content</code></li></ul><h5>Vérifier l’état de la tâche</h5><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Variantes du code\"><button class=\"cg-tab\" id=\"model-code-1013-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1013-panel-0\" aria-selected=\"true\" tabindex=\"0\">GET état de l’opération d’origine</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Copier le code\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1013-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1013-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_STATUS_URL&#39;\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nr=json.loads(Path(&#39;result.json&#39;).read_text())\nif not isinstance(r.get(&#39;id&#39;),str) or not r[&#39;id&#39;]:raise SystemExit(&#39;Keep the original response and headers for reconciliation; no returned ID&#39;)\nPath(&#39;status-url.txt&#39;).write_text(&#39;https://api.ailoot.ai/v1/videos/&#39;+quote(r[&#39;id&#39;],safe=&#39;&#39;))\nPY_STATUS_URL\ncurl --fail-with-body --silent --show-error &quot;$(cat status-url.txt)&quot; \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -D status-headers.txt -o status.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nr=json.loads(Path(&#39;status.json&#39;).read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint(&#39;Keep the complete JSON and response headers; do not resubmit an unknown creation.&#39;)\nPY_RESULT\n</code></pre></div></div></div><details class=\"card-about\"><summary>Autres lectures de contenu</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Variantes du code\"><button class=\"cg-tab\" id=\"model-code-1014-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1014-panel-0\" aria-selected=\"true\" tabindex=\"0\">Enregistrer chaque sortie terminée dont vous êtes propriétaire</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Copier le code\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1014-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1014-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\nexport AILOOT_API_KEY\npython3 - &lt;&lt;&#39;PY_ASSETS&#39;\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path(&#39;status.json&#39;).read_text())\nif r.get(&#39;status&#39;)!=&#39;completed&#39;:raise SystemExit(&#39;Keep the original ID and read its status; never recreate an unknown job&#39;)\nif not isinstance(r.get(&#39;data&#39;),list) or not r[&#39;data&#39;]:raise SystemExit(&#39;Keep the complete original status; no completed outputs supplied&#39;)\nurls=[]\nfor i,u in enumerate(r.get(&#39;data&#39;,[])):\n    if not isinstance(u,str):raise SystemExit(&#39;Keep the original response; unexpected asset shape&#39;)\n    urls.append((str(i),u))\nfor label,path in urls:\n    u=urljoin(&#39;https://api.ailoot.ai&#39;,path);z=urlsplit(u)\n    if z.scheme!=&#39;https&#39; or z.netloc!=&#39;api.ailoot.ai&#39; or z.username or z.password:raise SystemExit(&#39;Use the actual returned Ailoot owned content URL&#39;)\n    target=Path(&#39;owned-&#39;+label+&#39;.bin&#39;)\n    subprocess.run([&#39;curl&#39;,&#39;--fail-with-body&#39;,&#39;--silent&#39;,&#39;--show-error&#39;,u,&#39;-H&#39;,&#39;Authorization: Bearer &#39;+os.environ[&#39;AILOOT_API_KEY&#39;],&#39;-D&#39;,str(target)+&#39;.headers&#39;,&#39;-o&#39;,str(target)],check=True)\nprint(&#39;All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.&#39;)\nPY_ASSETS\n</code></pre></div></div></div></details><div class=\"card-result-process\" data-all-results><h5>Conserver tous les résultats terminés</h5><p class=\"note-s\">Enregistrez chaque vidéo terminée ou fichier renvoyé ; récupérez chaque URL de ressource effectivement renvoyée.</p><p class=\"note-s\">Conservez chaque résultat réel dont vous êtes propriétaire ainsi que les métadonnées mesurées renvoyées avec celui-ci.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Si la réponse d’origine doit être vérifiée</h5><p class=\"note-s\">503 result_pending_check + originalid + X-Should-Retry:false ; ne rejouez jamais la requête d’origine</p></div><details class=\"card-about\" data-output-fields><summary>Champs de la réponse</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Champ</th><th>Type</th><th>Signification</th></tr></thead><tbody><tr><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">index</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>integer</td><td data-cell-label=\"Signification\"><span class=\"card-cell-label\">Signification</span>Position de cette vidéo dans la liste des résultats, avec une numérotation commençant à zéro.</td></tr><tr><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">content_url</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>string</td><td data-cell-label=\"Signification\"><span class=\"card-cell-label\">Signification</span>URL de téléchargement HTTPS signée pour cette vidéo terminée.</td></tr><tr><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">sha256</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>string | null</td><td data-cell-label=\"Signification\"><span class=\"card-cell-label\">Signification</span>Empreinte SHA-256 des octets vidéo d’origine ; null si elle est indisponible.</td></tr><tr><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">size_bytes</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>integer | null</td><td data-cell-label=\"Signification\"><span class=\"card-cell-label\">Signification</span>Taille du fichier vidéo d’origine en octets ; null si elle est indisponible.</td></tr><tr><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">duration_ms</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>integer | null</td><td data-cell-label=\"Signification\"><span class=\"card-cell-label\">Signification</span>Durée mesurée de la vidéo en millisecondes ; null si elle est indisponible.</td></tr><tr><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">width</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>integer | null</td><td data-cell-label=\"Signification\"><span class=\"card-cell-label\">Signification</span>Largeur de la vidéo en pixels ; null si elle est indisponible.</td></tr><tr><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">height</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>integer | null</td><td data-cell-label=\"Signification\"><span class=\"card-cell-label\">Signification</span>Hauteur de la vidéo en pixels ; null si elle est indisponible.</td></tr><tr><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">video_codec</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>string | null</td><td data-cell-label=\"Signification\"><span class=\"card-cell-label\">Signification</span>Identifiant du codec vidéo ; null s’il n’a pas été enregistré.</td></tr><tr><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">has_audio</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>boolean | null</td><td data-cell-label=\"Signification\"><span class=\"card-cell-label\">Signification</span>Indique si la vidéo contient une piste audio ; null si cela n’a pas été mesuré.</td></tr><tr><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">audio_codec</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>string | null</td><td data-cell-label=\"Signification\"><span class=\"card-cell-label\">Signification</span>Identifiant du codec audio ; null lorsqu’aucun identifiant n’a été enregistré.</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Erreurs et étapes suivantes</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Réponse</th><th>Condition</th><th>Étape suivante</th></tr></thead><tbody><tr><th data-cell-label=\"Réponse\" scope=\"row\"><span class=\"card-cell-label\">Réponse</span>404 · <code>not_found_error</code></th><td data-cell-label=\"Condition\"><span class=\"card-cell-label\">Condition</span>L’accès à la vidéo est indisponible, ou cet ID vidéo est introuvable.</td><td data-cell-label=\"Étape suivante\"><span class=\"card-cell-label\">Étape suivante</span>Vérifiez l’accès à la vidéo. Pour une vidéo existante, utilisez son ID public d’origine et la même clé API.</td></tr><tr><th data-cell-label=\"Réponse\" scope=\"row\"><span class=\"card-cell-label\">Réponse</span>401 · <code>authentication_error</code></th><td data-cell-label=\"Condition\"><span class=\"card-cell-label\">Condition</span>La clé API ne correspond pas au compte authentifié.</td><td data-cell-label=\"Étape suivante\"><span class=\"card-cell-label\">Étape suivante</span>Vérifiez votre clé API et l’accès au compte avant de soumettre la requête.</td></tr><tr><th data-cell-label=\"Réponse\" scope=\"row\"><span class=\"card-cell-label\">Réponse</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Condition\"><span class=\"card-cell-label\">Condition</span>La requête n’a pas pu être lue, ou l’index de téléchargement est invalide.</td><td data-cell-label=\"Étape suivante\"><span class=\"card-cell-label\">Étape suivante</span>Corrigez le corps de la requête. Pour un téléchargement, choisissez un index de sortie renvoyé par la tâche d’origine.</td></tr><tr><th data-cell-label=\"Réponse\" scope=\"row\"><span class=\"card-cell-label\">Réponse</span>422 · <code>price_unavailable</code></th><td data-cell-label=\"Condition\"><span class=\"card-cell-label\">Condition</span>La configuration vidéo sélectionnée ne peut pas être tarifée.</td><td data-cell-label=\"Étape suivante\"><span class=\"card-cell-label\">Étape suivante</span>Choisissez une configuration vidéo prise en charge et renseignez ses options obligatoires avant de soumettre une requête corrigée.</td></tr><tr><th data-cell-label=\"Réponse\" scope=\"row\"><span class=\"card-cell-label\">Réponse</span>422 · <code>invalid_request_error</code></th><td data-cell-label=\"Condition\"><span class=\"card-cell-label\">Condition</span>Une entrée vidéo ou la tâche de continuation d’origine est invalide.</td><td data-cell-label=\"Étape suivante\"><span class=\"card-cell-label\">Étape suivante</span>Utilisez des entrées HTTPS valides. Pour une continuation, utilisez l’ID vidéo public de votre résultat d’origine terminé avec la même clé API.</td></tr><tr><th data-cell-label=\"Réponse\" scope=\"row\"><span class=\"card-cell-label\">Réponse</span>402 · <code>billing_error</code></th><td data-cell-label=\"Condition\"><span class=\"card-cell-label\">Condition</span>Le solde disponible ou les limites ne permettent pas de réserver le montant nécessaire.</td><td data-cell-label=\"Étape suivante\"><span class=\"card-cell-label\">Étape suivante</span>Vérifiez votre solde disponible et vos limites avant d’envoyer une nouvelle requête.</td></tr><tr><th data-cell-label=\"Réponse\" scope=\"row\"><span class=\"card-cell-label\">Réponse</span>503 · <code>server_error</code></th><td data-cell-label=\"Condition\"><span class=\"card-cell-label\">Condition</span>La vérification vidéo, le stockage ou l’accès au service est temporairement indisponible.</td><td data-cell-label=\"Étape suivante\"><span class=\"card-cell-label\">Étape suivante</span>Attendez que le service soit disponible. Si vous disposez déjà d’un ID vidéo, vérifiez cette tâche d’origine au lieu de créer une autre génération.</td></tr><tr><th data-cell-label=\"Réponse\" scope=\"row\"><span class=\"card-cell-label\">Réponse</span>503 · <code>result_pending_check</code></th><td data-cell-label=\"Condition\"><span class=\"card-cell-label\">Condition</span>Le résultat vidéo d’origine et sa facturation doivent être vérifiés.</td><td data-cell-label=\"Étape suivante\"><span class=\"card-cell-label\">Étape suivante</span>Conservez l’ID vidéo renvoyé et vérifiez cette tâche. N’envoyez pas de requête de génération de remplacement pendant sa vérification.</td></tr><tr><th data-cell-label=\"Réponse\" scope=\"row\"><span class=\"card-cell-label\">Réponse</span>503 · <code>owned_result_unavailable</code></th><td data-cell-label=\"Condition\"><span class=\"card-cell-label\">Condition</span>Le téléchargement de la vidéo existante est temporairement indisponible.</td><td data-cell-label=\"Étape suivante\"><span class=\"card-cell-label\">Étape suivante</span>Vérifiez la même tâche vidéo plus tard et téléchargez son résultat existant. Une nouvelle génération crée une opération distincte.</td></tr><tr><th data-cell-label=\"Réponse\" scope=\"row\"><span class=\"card-cell-label\">Réponse</span>409 · <code>video_not_ready</code></th><td data-cell-label=\"Condition\"><span class=\"card-cell-label\">Condition</span>Le contenu vidéo n’a pas été publié.</td><td data-cell-label=\"Étape suivante\"><span class=\"card-cell-label\">Étape suivante</span>Vérifiez l’état de la tâche d’origine. Téléchargez lorsqu’il indique completed ; s’il indique failed, suivez son avis de vérification de facturation.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Alias</h3><h4>Alias du modèle</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=alibaba%2Fwan-3.0-prime&amp;route=Ultra&amp;caller=alibaba%2Fwan-3.0-prime&amp;fmt=videos\"><code>alibaba/wan-3.0-prime</code></a></span></p><h4>Alias des chemins de méthode</h4><p class=\"note-s\">Utilisez les chemins de méthode indiqués ci-dessus.</p><h4>ID d’appel associés</h4><p class=\"note-s\"><a href=\"#m=alibaba%2Fwan-3.0-prime&amp;route=Ultra&amp;caller=alibaba%2Fwan-3.0-prime&amp;fmt=videos\"><code>alibaba/wan-3.0-prime</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "alibaba/wan-3.0-prime",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "alibaba/wan-3.0-prime",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|alibaba%2Fwan-3.0-prime",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "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.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Conservez chaque résultat réel dont vous êtes propriétaire ainsi que les métadonnées mesurées renvoyées avec celui-ci.",
            "defaults": {
              "aspect_ratio": null,
              "duration": null,
              "generate_audio": "endpoint capability flag when published; omitted unknown stays unknown; never guarantees audio track",
              "resolution": null,
              "seed": null,
              "size": null,
              "wire_omissions_preserved": true
            },
            "errors": [
              {
                "condition": "L’accès à la vidéo est indisponible, ou cet ID vidéo est introuvable.",
                "http_status": 404,
                "public_identifier_field": "error.type",
                "recovery": "Vérifiez l’accès à la vidéo. Pour une vidéo existante, utilisez son ID public d’origine et la même clé API.",
                "type": "not_found_error"
              },
              {
                "condition": "La clé API ne correspond pas au compte authentifié.",
                "http_status": 401,
                "public_identifier_field": "error.type",
                "recovery": "Vérifiez votre clé API et l’accès au compte avant de soumettre la requête.",
                "type": "authentication_error"
              },
              {
                "condition": "La requête n’a pas pu être lue, ou l’index de téléchargement est invalide.",
                "http_status": 400,
                "public_identifier_field": "error.type",
                "recovery": "Corrigez le corps de la requête. Pour un téléchargement, choisissez un index de sortie renvoyé par la tâche d’origine.",
                "type": "invalid_request_error"
              },
              {
                "condition": "La configuration vidéo sélectionnée ne peut pas être tarifée.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Choisissez une configuration vidéo prise en charge et renseignez ses options obligatoires avant de soumettre une requête corrigée.",
                "type": "price_unavailable"
              },
              {
                "condition": "Une entrée vidéo ou la tâche de continuation d’origine est invalide.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Utilisez des entrées HTTPS valides. Pour une continuation, utilisez l’ID vidéo public de votre résultat d’origine terminé avec la même clé API.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Le solde disponible ou les limites ne permettent pas de réserver le montant nécessaire.",
                "http_status": 402,
                "public_identifier_field": "error.type",
                "recovery": "Vérifiez votre solde disponible et vos limites avant d’envoyer une nouvelle requête.",
                "type": "billing_error"
              },
              {
                "condition": "La vérification vidéo, le stockage ou l’accès au service est temporairement indisponible.",
                "http_status": 503,
                "public_identifier_field": "error.type",
                "recovery": "Attendez que le service soit disponible. Si vous disposez déjà d’un ID vidéo, vérifiez cette tâche d’origine au lieu de créer une autre génération.",
                "type": "server_error"
              },
              {
                "code": "result_pending_check",
                "condition": "Le résultat vidéo d’origine et sa facturation doivent être vérifiés.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Conservez l’ID vidéo renvoyé et vérifiez cette tâche. N’envoyez pas de requête de génération de remplacement pendant sa vérification.",
                "type": "server_error"
              },
              {
                "code": "owned_result_unavailable",
                "condition": "Le téléchargement de la vidéo existante est temporairement indisponible.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Vérifiez la même tâche vidéo plus tard et téléchargez son résultat existant. Une nouvelle génération crée une opération distincte.",
                "type": "server_error"
              },
              {
                "condition": "Le contenu vidéo n’a pas été publié.",
                "http_status": 409,
                "public_identifier_field": "error.type",
                "recovery": "Vérifiez l’état de la tâche d’origine. Téléchargez lorsqu’il indique completed ; s’il indique failed, suivez son avis de vérification de facturation.",
                "type": "video_not_ready"
              }
            ],
            "hints": [
              "No null values or duplicate keys at any JSON object level",
              "No duration/resolution/aspect default is inserted",
              "Prompt required for all21 despite broader official image-only schema",
              "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
              "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
              "No n/output-count/client price fields accepted",
              "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
            ],
            "ignored_fields": [],
            "lifecycle": {
              "cancel_endpoint": null,
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}/content",
                  "query": {
                    "index": "actual output index"
                  }
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "mode": "submit_once_poll_original",
              "public_id": "video_<uuid>; owner user/key/group scope",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}"
                }
              ],
              "submit_status": 202,
              "terminal_failure_public": "200 failed + charge_pending_check=true; inspect original operation",
              "terminal_provider_states": [
                "failed",
                "cancelled",
                "expired"
              ],
              "unknown": "503 result_pending_check + originalid + X-Should-Retry:false ; ne rejouez jamais la requête d’origine"
            },
            "material_combinations": [
              {
                "mode": "text_to_video",
                "model": {
                  "enum": [
                    "alibaba/wan-3.0-prime"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "Fournissez prompt sous forme de texte et duration en secondes entières. Choisissez une résolution prise en charge et, si nécessaire, un rapport largeur/hauteur.",
                "required": [
                  "model",
                  "prompt",
                  "duration"
                ],
                "required_material": "Une consigne écrite."
              },
              {
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "mode": "image_to_video",
                "model": {
                  "enum": [
                    "alibaba/wan-3.0-prime"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "frame_images est un tableau. Chaque objet représentant une image de la séquence comporte type, image_url et frame_type ; image_url contient url. Définissez type sur image_url. Utilisez first_frame. Chaque rôle d’image apparaît au plus une fois. Fournissez une URL d’image HTTPS publique pour chaque image de la séquence. Choisissez une résolution prise en charge et, si nécessaire, un rapport largeur/hauteur.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "frame_images"
                ],
                "required_material": "Une consigne écrite et une image de début de séquence."
              }
            ],
            "operation_modes": [
              "text_to_video",
              "image_to_video_frame_images"
            ],
            "outputs": {
              "content_range_supported": true,
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "condition": "Always present for each completed output.",
                  "description": "Position de cette vidéo dans la liste des résultats, avec une numérotation commençant à zéro.",
                  "field_path": "outputs[].index",
                  "json_schema": {
                    "type": "integer"
                  },
                  "name": "index",
                  "nullable": false,
                  "type": "integer"
                },
                {
                  "condition": "Present after the owned result is available and a signed URL is created.",
                  "description": "URL de téléchargement HTTPS signée pour cette vidéo terminée.",
                  "field_path": "outputs[].content_url",
                  "json_schema": {
                    "type": "string"
                  },
                  "name": "content_url",
                  "nullable": false,
                  "type": "string"
                },
                {
                  "condition": "A nonempty recorded digest is returned; otherwise null.",
                  "description": "Empreinte SHA-256 des octets vidéo d’origine ; null si elle est indisponible.",
                  "field_path": "outputs[].sha256",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "sha256",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when the recorded file size is positive.",
                  "description": "Taille du fichier vidéo d’origine en octets ; null si elle est indisponible.",
                  "field_path": "outputs[].size_bytes",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "size_bytes",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned when the measured duration is positive.",
                  "description": "Durée mesurée de la vidéo en millisecondes ; null si elle est indisponible.",
                  "field_path": "outputs[].duration_ms",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "duration_ms",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "Largeur de la vidéo en pixels ; null si elle est indisponible.",
                  "field_path": "outputs[].width",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "width",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "Hauteur de la vidéo en pixels ; null si elle est indisponible.",
                  "field_path": "outputs[].height",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "height",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned together with positive recorded width and height.",
                  "description": "Identifiant du codec vidéo ; null s’il n’a pas été enregistré.",
                  "field_path": "outputs[].video_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "video_codec",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                  "description": "Indique si la vidéo contient une piste audio ; null si cela n’a pas été mesuré.",
                  "field_path": "outputs[].has_audio",
                  "json_schema": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "name": "has_audio",
                  "nullable": true,
                  "type": "boolean | null"
                },
                {
                  "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                  "description": "Identifiant du codec audio ; null lorsqu’aucun identifiant n’a été enregistré.",
                  "field_path": "outputs[].audio_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "audio_codec",
                  "nullable": true,
                  "type": "string | null"
                }
              ],
              "format": "original MP4 bytes; no normalization/transcode",
              "max_aggregate_seconds": 2400,
              "max_bytes_per_output": 67108864,
              "max_seconds_per_output": 600,
              "result": "URL de contenu signées dont vous êtes propriétaire",
              "unmeasured_fields_nullable": true
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "alibaba/wan-3.0-prime"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "schema": {
                  "const": "alibaba/wan-3.0-prime"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minLength": 1,
                "name": "prompt",
                "required": true,
                "schema": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  2,
                  3,
                  4,
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15,
                  16,
                  17,
                  18,
                  19,
                  20,
                  21,
                  22,
                  23,
                  24,
                  25,
                  26,
                  27,
                  28,
                  29,
                  30
                ],
                "enum_known": true,
                "maximum": 600,
                "minimum": 1,
                "name": "duration",
                "required": true,
                "schema": {
                  "enum": [
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15,
                    16,
                    17,
                    18,
                    19,
                    20,
                    21,
                    22,
                    23,
                    24,
                    25,
                    26,
                    27,
                    28,
                    29,
                    30
                  ],
                  "maximum": 600,
                  "minimum": 1,
                  "type": "integer"
                },
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "480p",
                  "720p",
                  "1080p"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "schema": {
                  "enum": [
                    "480p",
                    "720p",
                    "1080p"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "16:9",
                  "4:3",
                  "1:1",
                  "3:4",
                  "9:16"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "schema": {
                  "enum": [
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  false,
                  true
                ],
                "enum_known": true,
                "name": "generate_audio",
                "required": false,
                "schema": {
                  "enum": [
                    false,
                    true
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "conditions": "Ces clés décrivent chaque objet représentant une image de la séquence ; image_url contient uniquement url. Omettez frame_images pour une requête contenant uniquement du texte.",
                "content": "Tableau d’objets représentant les images de la séquence. Chaque objet comporte type=image_url, image_url contenant url et frame_type. Utilisez une URL d’image HTTPS et définissez frame_type sur first_frame. Chaque rôle d’image apparaît au plus une fois.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "maxItems": 1,
                "max_items": 1,
                "minItems": 1,
                "min_items": 1,
                "name": "frame_images",
                "required": false,
                "schema": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_frame"
                        ]
                      },
                      "image_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "format": "uri",
                            "pattern": "^https://",
                            "type": "string",
                            "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url",
                      "frame_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 1,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxItems": 0,
                "name": "input_references",
                "required": false,
                "schema": {
                  "items": false,
                  "maxItems": 0,
                  "type": "array"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum": 9223372036854775807,
                "minimum": -9223372036854775808,
                "name": "seed",
                "required": false,
                "schema": {
                  "maximum": 9223372036854775807,
                  "minimum": -9223372036854775808,
                  "type": "integer"
                },
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "callback_url",
                "pattern": "^https://",
                "required": false,
                "schema": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "session_id",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "trace",
                "required": false,
                "schema": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "object"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "user",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              }
            ],
            "request_schema": {
              "$schema": "https://json-schema.org/draft/2020-12/schema",
              "additionalProperties": false,
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16"
                  ]
                },
                "callback_url": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "creativity": false,
                "duration": {
                  "enum": [
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15,
                    16,
                    17,
                    18,
                    19,
                    20,
                    21,
                    22,
                    23,
                    24,
                    25,
                    26,
                    27,
                    28,
                    29,
                    30
                  ],
                  "maximum": 600,
                  "minimum": 1,
                  "type": "integer"
                },
                "frame_images": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_frame"
                        ]
                      },
                      "image_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "format": "uri",
                            "pattern": "^https://",
                            "type": "string",
                            "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url",
                      "frame_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 1,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "generate_audio": {
                  "enum": [
                    false,
                    true
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "input_references": {
                  "items": false,
                  "maxItems": 0,
                  "type": "array"
                },
                "model": {
                  "const": "alibaba/wan-3.0-prime"
                },
                "previous_job_id": false,
                "prompt": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "provider": false,
                "resolution": {
                  "enum": [
                    "480p",
                    "720p",
                    "1080p"
                  ]
                },
                "seed": {
                  "maximum": 9223372036854775807,
                  "minimum": -9223372036854775808,
                  "type": "integer"
                },
                "session_id": {
                  "maxLength": 256,
                  "type": "string"
                },
                "size": false,
                "trace": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "upscale_factor": false,
                "user": {
                  "maxLength": 256,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt",
                "duration"
              ],
              "title": "Video generation request",
              "type": "object",
              "x-source-global-rules": [
                "No null values or duplicate keys at any JSON object level",
                "No duration/resolution/aspect default is inserted",
                "Prompt required for all21 despite broader official image-only schema",
                "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
                "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
                "No n/output-count/client price fields accepted",
                "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
              ],
              "x-source-material-combinations": [
                "Exact model/card, positive published duration, model resolution/aspect membership and valid frozen quote are all required; independent enum arrays are not proven provider Cartesian combinations.",
                "Use exact published size or compatible resolution/aspect. Omitted options stay omitted; no guessed geometry.",
                "first_frame/last_frame roles each occur at most once; frame_images wins mode precedence over input_references.",
                "provider options are unavailable for this model despite any published passthrough-name allowlist."
              ]
            },
            "unsupported": [
              "size",
              "provider",
              "previous_job_id",
              "upscale_factor",
              "creativity"
            ]
          },
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "text",
              "image"
            ],
            "optional_controls": [
              "resolution",
              "aspect_ratio",
              "generate_audio",
              "frame_images",
              "input_references",
              "seed",
              "callback_url",
              "session_id",
              "trace",
              "user"
            ],
            "required": [
              "model",
              "prompt",
              "duration"
            ]
          },
          "lifecycle": {
            "cancel_endpoint": null,
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{public_id}/content",
                "query": {
                  "index": "actual output index"
                }
              }
            ],
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "mode": "submit_once_poll_original",
            "public_id": "video_<uuid>; owner user/key/group scope",
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{public_id}"
              }
            ],
            "submit_status": 202,
            "terminal_failure_public": "200 failed + charge_pending_check=true; inspect original operation",
            "terminal_provider_states": [
              "failed",
              "cancelled",
              "expired"
            ],
            "unknown": "503 result_pending_check + originalid + X-Should-Retry:false; never replay original"
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_video",
            "image_to_video_frame_images"
          ],
          "output": {
            "content_range_supported": true,
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "condition": "Always present for each completed output.",
                "description": "Zero-based position of this video in the outputs list.",
                "field_path": "outputs[].index",
                "json_schema": {
                  "type": "integer"
                },
                "name": "index",
                "nullable": false,
                "type": "integer"
              },
              {
                "condition": "Present after the owned result is available and a signed URL is created.",
                "description": "Signed HTTPS download URL for this completed video.",
                "field_path": "outputs[].content_url",
                "json_schema": {
                  "type": "string"
                },
                "name": "content_url",
                "nullable": false,
                "type": "string"
              },
              {
                "condition": "A nonempty recorded digest is returned; otherwise null.",
                "description": "SHA-256 digest of the original video bytes; null if unavailable.",
                "field_path": "outputs[].sha256",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "sha256",
                "nullable": true,
                "type": "string | null"
              },
              {
                "condition": "Returned when the recorded file size is positive.",
                "description": "Size of the original video file in bytes; null if unavailable.",
                "field_path": "outputs[].size_bytes",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "size_bytes",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Returned when the measured duration is positive.",
                "description": "Measured video duration in milliseconds; null if unavailable.",
                "field_path": "outputs[].duration_ms",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "duration_ms",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Width, height and the video codec are returned together when recorded.",
                "description": "Video width in pixels; null if unavailable.",
                "field_path": "outputs[].width",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "width",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Width, height and the video codec are returned together when recorded.",
                "description": "Video height in pixels; null if unavailable.",
                "field_path": "outputs[].height",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "height",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Returned together with positive recorded width and height.",
                "description": "Video codec identifier; null if not recorded.",
                "field_path": "outputs[].video_codec",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "video_codec",
                "nullable": true,
                "type": "string | null"
              },
              {
                "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                "description": "Whether the video contains an audio track; null if not measured.",
                "field_path": "outputs[].has_audio",
                "json_schema": {
                  "type": [
                    "boolean",
                    "null"
                  ]
                },
                "name": "has_audio",
                "nullable": true,
                "type": "boolean | null"
              },
              {
                "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                "description": "Audio codec identifier; null when no identifier is recorded.",
                "field_path": "outputs[].audio_codec",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "audio_codec",
                "nullable": true,
                "type": "string | null"
              }
            ],
            "format": "original MP4 bytes; no normalization/transcode",
            "max_aggregate_seconds": 2400,
            "max_bytes_per_output": 67108864,
            "max_seconds_per_output": 600,
            "result": "signed owned content URLs",
            "unmeasured_fields_nullable": true
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 1080p",
              "quoted_unit": "per video second"
            },
            "label": "Tarif vidéo",
            "units": [
              {
                "amount": "0.56",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_1080p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.56",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 480p",
              "quoted_unit": "per video second"
            },
            "label": "Tarif vidéo",
            "units": [
              {
                "amount": "0.136",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_480p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.136",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 720p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.28",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_720p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.28",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "Cette estimation ne constitue ni des frais supplémentaires ni un tarif fixe pour la génération terminée.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Coût estimé de la génération",
            "units": [
              {
                "amount": "0.272",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.272",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nfrom pathlib import Path\nPath('request.json').write_text('{\"aspect_ratio\":\"16:9\",\"duration\":8,\"model\":\"alibaba/wan-3.0-prime\",\"prompt\":\"A serene mountain landscape at sunset\",\"resolution\":\"720p\"}', encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('result.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "curl · create video",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_STATUS_URL'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nr=json.loads(Path('result.json').read_text())\nif not isinstance(r.get('id'),str) or not r['id']:raise SystemExit('Keep the original response and headers for reconciliation; no returned ID')\nPath('status-url.txt').write_text('https://api.ailoot.ai/v1/videos/'+quote(r['id'],safe=''))\nPY_STATUS_URL\ncurl --fail-with-body --silent --show-error \"$(cat status-url.txt)\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -D status-headers.txt -o status.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('status.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "GET original status",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_ASSETS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path('status.json').read_text())\nif r.get('status')!='completed':raise SystemExit('Keep the original ID and read its status; never recreate an unknown job')\nif not isinstance(r.get('data'),list) or not r['data']:raise SystemExit('Keep the complete original status; no completed outputs supplied')\nurls=[]\nfor i,u in enumerate(r.get('data',[])):\n    if not isinstance(u,str):raise SystemExit('Keep the original response; unexpected asset shape')\n    urls.append((str(i),u))\nfor label,path in urls:\n    u=urljoin('https://api.ailoot.ai',path);z=urlsplit(u)\n    if z.scheme!='https' or z.netloc!='api.ailoot.ai' or z.username or z.password:raise SystemExit('Use the actual returned Ailoot owned content URL')\n    target=Path('owned-'+label+'.bin')\n    subprocess.run(['curl','--fail-with-body','--silent','--show-error',u,'-H','Authorization: Bearer '+os.environ['AILOOT_API_KEY'],'-D',str(target)+'.headers','-o',str(target)],check=True)\nprint('All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.')\nPY_ASSETS\n",
            "label": "Save every completed owned output",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image"
        ],
        "label": "Видео",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 1080p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.56",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_1080p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.56",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 480p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.136",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_480p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.136",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 720p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.28",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_720p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.28",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.272",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.272",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "request_model_id": "alibaba/wan-3.0-prime",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{public_id}",
          "GET /v1/videos/{public_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.56",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds_1080p",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.56",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.136",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds_480p",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.136",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.28",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds_720p",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.28",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.272",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.272",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ]
      }
    }
  ],
  "model_id": "alibaba/wan-3.0-prime",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "8e865b586343306393630623ca535d8532f0bc5c34ea2fad2431365b4640aacb",
    "input_html_sha256": "464d5b95816c6525b102d0ddec6c625d320b05cf5f051f5fec254375fbe517cd",
    "private_audit_sha256": "c649eb8aab2d603b981d02e54f6675c010005e81ea0cac5404d1b617ee9b259c",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/fr-be/alibaba-wan-3-0-prime/",
    "description": "Alibaba Wan 3.0 Prime est le modèle vidéo Wan 3.0 optimisé pour la vitesse. Son profil producteur prend en charge la génération à partir de texte, d’une première image ou d’images de début et de fin, ainsi que les références multimodales, avec du son intégré. Il produit des clips MP4 de 2 à 30 secondes à 30 images par seconde en 480p, 720p ou 1080p, avec cadrage adaptatif et fonctions de modification.",
    "locale": "fr-be",
    "md_url": "https://ailoot.ai/models/fr-be/alibaba-wan-3-0-prime/index.md",
    "title": "Alibaba: Wan 3.0 Prime — Ailoot",
    "url": "https://ailoot.ai/models/fr-be/alibaba-wan-3-0-prime/"
  },
  "rawModel": {
    "about": "Alibaba Wan 3.0 Prime est l’édition accélérée de la famille vidéo Wan 3.0. Le producteur la nomme wan3.0-video-prime et documente les mêmes catégories de tâches tout-en-un que Wan 3.0 standard, la vitesse constituant la particularité mise en avant de cette édition. Un brief écrit, une image de départ, des références visuelles ou sonores, ou une vidéo source peuvent guider un clip avec son audio. Les livrables utiles comprennent une scène de produit, une courte séquence narrative, une image fixe animée ou une révision dirigée d’un plan existant.\n\nPour la génération de vidéo à partir de texte, décrivez le sujet, la scène, le mouvement, la caméra, le traitement visuel et le son. Le guide 3.0 prend en charge les plans uniques ou un storyboard avec des étiquettes de plans et des plages temporelles, en recommandant environ quatre à six secondes par plan. Pour un clip de produit, passez d’une vue large stable d’un sac sur une table à un détail de matière plus rapproché, puis maintenez une composition finale pendant une courte réplique. Donnez un objectif clair à la séquence et vérifiez que la caméra, le rythme et l’identité du produit restent cohérents.\n\nPour la génération à partir d’une première image, l’image fournie définit l’ouverture et le prompt décrit le mouvement et le travail de caméra. La génération avec première et dernière image fournit les deux extrémités et demande la transition entre elles. Préparez des extrémités qui appartiennent à la même scène et un format cible cohérent avec la sortie prévue. Le producteur recommande le cadrage adaptatif pour les tâches basées sur des images. Le mode d’images de début et de fin et les modes de références distincts ont des règles différentes de combinaison des matériaux : les premières ou dernières images ne sont pas mélangées avec des entrées d’images, de vidéos ou de sons de référence dans une même requête.\n\nLe mode de références accepte jusqu’à dix images, cinq clips vidéo et cinq clips audio, dans une limite de vingt matériaux de référence multimodaux. Les limites documentées par fichier sont de 20 Mo pour une image de référence, 100 Mo pour une vidéo et 15 Mo pour le son. Les clips vidéo de référence peuvent totaliser au maximum quinze secondes ; les clips audio de référence ont leur propre limite totale de quinze secondes. Nommez le rôle de chaque matériau et utilisez son indice propre au type, par exemple Image 1, Video 1 ou Audio 1. Une personne, un produit, un mouvement de caméra et une voix ne doivent pas rester des références interchangeables.\n\nLe producteur prend aussi en charge un document ou une référence de page web publique, qui peuvent accompagner d’autres références. Un fichier et un lien web s’excluent mutuellement, et la source doit être accessible sans connexion. Une scène basée sur un document peut utiliser le contenu pertinent d’un produit ou d’une histoire comme contexte, tandis qu’une référence visuelle définit l’apparence. Préparez les matériaux qui doivent réellement informer le clip et précisez les éléments importants. Vérifiez les détails visuels factuels et le texte de la scène générée par rapport à cette source, au lieu d’accepter une interprétation séduisante mais altérée.\n\nLe dialogue vocal, l’ambiance, les effets sonores et la musique de fond sont générés avec l’image. Décrivez les mots prononcés, l’identité de la personne qui parle, l’interprétation et la place du son dans la scène. Le guide documente le son activé par défaut et un contrôle de vidéo muette. Dans un dialogue, donnez aux personnes qui parlent des signes visuels et vocaux distinctifs et laissez assez de temps à l’échange. Écoutez le résultat pour les mots réellement prononcés, l’attribution des voix et la relation entre un effet et l’action visible. Le son intégré fait partie de la scène et nécessite donc la même revue que l’image.\n\nLe guide tout-en-un du producteur documente aussi la modification et le prolongement à partir d’une vidéo de référence. Un brief de modification doit préciser l’élément à ajouter, supprimer ou remplacer et les caractéristiques à conserver. Un brief de prolongement doit décrire le contenu avant, après ou autour du clip existant. Utilisez le cadrage adaptatif et la durée intelligente pour ces fonctions. Lorsqu’une entrée vidéo est fournie, la durée combinée documentée de la vidéo d’entrée et de celle de sortie ne doit pas dépasser 30 secondes. Préparez clairement le passage source et le changement souhaité ; vérifiez la transition, le sujet conservé et le son au lieu de juger une seule image attrayante.\n\nLa sortie documentée est un MP4 à 30 images par seconde, en 480p, 720p ou 1080p, avec une durée de nouvelle génération de deux à trente secondes. La durée intelligente laisse le modèle choisir une longueur adaptée. Des cadrages carrés, paysage et portrait sont disponibles, et le cadrage adaptatif suit les matériaux fournis. Le producteur traite la génération comme une tâche et renvoie l’adresse de la vidéo terminée ; son guide indique que cette adresse de résultat est valide pendant vingt-quatre heures. Conservez le clip lui-même et le brief créatif lorsque vous préparez un montage ou une séquence et examinez le livrable entier avant de l’utiliser.\n\nPrime et Wan 3.0 standard partagent les modes et la structure de préparation documentés. Prime est le choix optimisé pour la vitesse, sans garantie de délai fixe d’achèvement. Les modes antérieurs de Wan 2.7 et 2.6 ont leurs propres règles de durée, de références et de sortie ; ces limites ne définissent pas cette édition 3.0. Pour une revue utile, vérifiez la continuité des objets et des personnages, le cadrage des images de début et de fin, les modifications demandées, le dialogue et tous les détails dépendants des sources. Gardez la correction suivante précise afin que les éléments réussis de la scène restent stables pendant la révision du problème identifié.",
    "alias_of": null,
    "aliases": [],
    "author": "Alibaba",
    "available": null,
    "canonical_model": "alibaba/wan-3.0-prime",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text",
        "image"
      ],
      "manufacturer_output": [
        "video"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.272",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.272",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ],
        "summary": "La tarification complète de la configuration figure dans les détails."
      }
    ],
    "ctx": null,
    "declared_tariff_references": [
      {
        "client_selectable": false,
        "key": "4d56ae1870fd9bce66f2952d",
        "label": "Références tarifaires des configurations vidéo",
        "profiles": [
          {
            "basis": "Tarif publié de référence pour la configuration affichée. Les frais définitifs correspondent à la configuration réellement facturée.",
            "dimensions": {
              "conditions": "resolution: 480p"
            },
            "label": "Tarif vidéo",
            "units": [
              {
                "amount": "0.136",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "key": "video_second",
                "label": "Video price",
                "public_unit_label": "per video second",
                "quantity": 1,
                "rate_role": "typed_video_second_reference",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "Tarif publié de référence pour la configuration affichée. Les frais définitifs correspondent à la configuration réellement facturée.",
            "dimensions": {
              "conditions": "resolution: 720p"
            },
            "label": "Tarif vidéo",
            "units": [
              {
                "amount": "0.28",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "key": "video_second",
                "label": "Video price",
                "public_unit_label": "per video second",
                "quantity": 1,
                "rate_role": "typed_video_second_reference",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "Tarif publié de référence pour la configuration affichée. Les frais définitifs correspondent à la configuration réellement facturée.",
            "dimensions": {
              "conditions": "resolution: 1080p"
            },
            "label": "Tarif vidéo",
            "units": [
              {
                "amount": "0.56",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "key": "video_second",
                "label": "Video price",
                "public_unit_label": "per video second",
                "quantity": 1,
                "rate_role": "typed_video_second_reference",
                "side": "out",
                "unit": "video_second"
              }
            ]
          }
        ]
      }
    ],
    "entity_type": "model",
    "formats": [
      "videos"
    ],
    "id": "alibaba/wan-3.0-prime",
    "input": [
      "text",
      "image"
    ],
    "kind": "video",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "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.",
          "forecast_quantity_is_estimate": true,
          "physical_output_is_billable_quantity": false,
          "version": "original_invoice_usd_v1"
        },
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Conservez chaque résultat réel dont vous êtes propriétaire ainsi que les métadonnées mesurées renvoyées avec celui-ci.",
            "defaults": {
              "aspect_ratio": null,
              "duration": null,
              "generate_audio": "endpoint capability flag when published; omitted unknown stays unknown; never guarantees audio track",
              "resolution": null,
              "seed": null,
              "size": null,
              "wire_omissions_preserved": true
            },
            "errors": [
              {
                "condition": "L’accès à la vidéo est indisponible, ou cet ID vidéo est introuvable.",
                "http_status": 404,
                "public_identifier_field": "error.type",
                "recovery": "Vérifiez l’accès à la vidéo. Pour une vidéo existante, utilisez son ID public d’origine et la même clé API.",
                "type": "not_found_error"
              },
              {
                "condition": "La clé API ne correspond pas au compte authentifié.",
                "http_status": 401,
                "public_identifier_field": "error.type",
                "recovery": "Vérifiez votre clé API et l’accès au compte avant de soumettre la requête.",
                "type": "authentication_error"
              },
              {
                "condition": "La requête n’a pas pu être lue, ou l’index de téléchargement est invalide.",
                "http_status": 400,
                "public_identifier_field": "error.type",
                "recovery": "Corrigez le corps de la requête. Pour un téléchargement, choisissez un index de sortie renvoyé par la tâche d’origine.",
                "type": "invalid_request_error"
              },
              {
                "condition": "La configuration vidéo sélectionnée ne peut pas être tarifée.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Choisissez une configuration vidéo prise en charge et renseignez ses options obligatoires avant de soumettre une requête corrigée.",
                "type": "price_unavailable"
              },
              {
                "condition": "Une entrée vidéo ou la tâche de continuation d’origine est invalide.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Utilisez des entrées HTTPS valides. Pour une continuation, utilisez l’ID vidéo public de votre résultat d’origine terminé avec la même clé API.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Le solde disponible ou les limites ne permettent pas de réserver le montant nécessaire.",
                "http_status": 402,
                "public_identifier_field": "error.type",
                "recovery": "Vérifiez votre solde disponible et vos limites avant d’envoyer une nouvelle requête.",
                "type": "billing_error"
              },
              {
                "condition": "La vérification vidéo, le stockage ou l’accès au service est temporairement indisponible.",
                "http_status": 503,
                "public_identifier_field": "error.type",
                "recovery": "Attendez que le service soit disponible. Si vous disposez déjà d’un ID vidéo, vérifiez cette tâche d’origine au lieu de créer une autre génération.",
                "type": "server_error"
              },
              {
                "code": "result_pending_check",
                "condition": "Le résultat vidéo d’origine et sa facturation doivent être vérifiés.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Conservez l’ID vidéo renvoyé et vérifiez cette tâche. N’envoyez pas de requête de génération de remplacement pendant sa vérification.",
                "type": "server_error"
              },
              {
                "code": "owned_result_unavailable",
                "condition": "Le téléchargement de la vidéo existante est temporairement indisponible.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Vérifiez la même tâche vidéo plus tard et téléchargez son résultat existant. Une nouvelle génération crée une opération distincte.",
                "type": "server_error"
              },
              {
                "condition": "Le contenu vidéo n’a pas été publié.",
                "http_status": 409,
                "public_identifier_field": "error.type",
                "recovery": "Vérifiez l’état de la tâche d’origine. Téléchargez lorsqu’il indique completed ; s’il indique failed, suivez son avis de vérification de facturation.",
                "type": "video_not_ready"
              }
            ],
            "hints": [
              "No null values or duplicate keys at any JSON object level",
              "No duration/resolution/aspect default is inserted",
              "Prompt required for all21 despite broader official image-only schema",
              "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
              "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
              "No n/output-count/client price fields accepted",
              "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
            ],
            "ignored_fields": [],
            "lifecycle": {
              "cancel_endpoint": null,
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}/content",
                  "query": {
                    "index": "actual output index"
                  }
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "mode": "submit_once_poll_original",
              "public_id": "video_<uuid>; owner user/key/group scope",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}"
                }
              ],
              "submit_status": 202,
              "terminal_failure_public": "200 failed + charge_pending_check=true; inspect original operation",
              "terminal_provider_states": [
                "failed",
                "cancelled",
                "expired"
              ],
              "unknown": "503 result_pending_check + originalid + X-Should-Retry:false ; ne rejouez jamais la requête d’origine"
            },
            "material_combinations": [
              {
                "mode": "text_to_video",
                "model": {
                  "enum": [
                    "alibaba/wan-3.0-prime"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "Fournissez prompt sous forme de texte et duration en secondes entières. Choisissez une résolution prise en charge et, si nécessaire, un rapport largeur/hauteur.",
                "required": [
                  "model",
                  "prompt",
                  "duration"
                ],
                "required_material": "Une consigne écrite."
              },
              {
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "mode": "image_to_video",
                "model": {
                  "enum": [
                    "alibaba/wan-3.0-prime"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "frame_images est un tableau. Chaque objet représentant une image de la séquence comporte type, image_url et frame_type ; image_url contient url. Définissez type sur image_url. Utilisez first_frame. Chaque rôle d’image apparaît au plus une fois. Fournissez une URL d’image HTTPS publique pour chaque image de la séquence. Choisissez une résolution prise en charge et, si nécessaire, un rapport largeur/hauteur.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "frame_images"
                ],
                "required_material": "Une consigne écrite et une image de début de séquence."
              }
            ],
            "operation_modes": [
              "text_to_video",
              "image_to_video_frame_images"
            ],
            "outputs": {
              "content_range_supported": true,
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "condition": "Always present for each completed output.",
                  "description": "Position de cette vidéo dans la liste des résultats, avec une numérotation commençant à zéro.",
                  "field_path": "outputs[].index",
                  "json_schema": {
                    "type": "integer"
                  },
                  "name": "index",
                  "nullable": false,
                  "type": "integer"
                },
                {
                  "condition": "Present after the owned result is available and a signed URL is created.",
                  "description": "URL de téléchargement HTTPS signée pour cette vidéo terminée.",
                  "field_path": "outputs[].content_url",
                  "json_schema": {
                    "type": "string"
                  },
                  "name": "content_url",
                  "nullable": false,
                  "type": "string"
                },
                {
                  "condition": "A nonempty recorded digest is returned; otherwise null.",
                  "description": "Empreinte SHA-256 des octets vidéo d’origine ; null si elle est indisponible.",
                  "field_path": "outputs[].sha256",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "sha256",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when the recorded file size is positive.",
                  "description": "Taille du fichier vidéo d’origine en octets ; null si elle est indisponible.",
                  "field_path": "outputs[].size_bytes",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "size_bytes",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned when the measured duration is positive.",
                  "description": "Durée mesurée de la vidéo en millisecondes ; null si elle est indisponible.",
                  "field_path": "outputs[].duration_ms",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "duration_ms",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "Largeur de la vidéo en pixels ; null si elle est indisponible.",
                  "field_path": "outputs[].width",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "width",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "Hauteur de la vidéo en pixels ; null si elle est indisponible.",
                  "field_path": "outputs[].height",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "height",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned together with positive recorded width and height.",
                  "description": "Identifiant du codec vidéo ; null s’il n’a pas été enregistré.",
                  "field_path": "outputs[].video_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "video_codec",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                  "description": "Indique si la vidéo contient une piste audio ; null si cela n’a pas été mesuré.",
                  "field_path": "outputs[].has_audio",
                  "json_schema": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "name": "has_audio",
                  "nullable": true,
                  "type": "boolean | null"
                },
                {
                  "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                  "description": "Identifiant du codec audio ; null lorsqu’aucun identifiant n’a été enregistré.",
                  "field_path": "outputs[].audio_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "audio_codec",
                  "nullable": true,
                  "type": "string | null"
                }
              ],
              "format": "original MP4 bytes; no normalization/transcode",
              "max_aggregate_seconds": 2400,
              "max_bytes_per_output": 67108864,
              "max_seconds_per_output": 600,
              "result": "URL de contenu signées dont vous êtes propriétaire",
              "unmeasured_fields_nullable": true
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "alibaba/wan-3.0-prime"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "schema": {
                  "const": "alibaba/wan-3.0-prime"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minLength": 1,
                "name": "prompt",
                "required": true,
                "schema": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  2,
                  3,
                  4,
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15,
                  16,
                  17,
                  18,
                  19,
                  20,
                  21,
                  22,
                  23,
                  24,
                  25,
                  26,
                  27,
                  28,
                  29,
                  30
                ],
                "enum_known": true,
                "maximum": 600,
                "minimum": 1,
                "name": "duration",
                "required": true,
                "schema": {
                  "enum": [
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15,
                    16,
                    17,
                    18,
                    19,
                    20,
                    21,
                    22,
                    23,
                    24,
                    25,
                    26,
                    27,
                    28,
                    29,
                    30
                  ],
                  "maximum": 600,
                  "minimum": 1,
                  "type": "integer"
                },
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "480p",
                  "720p",
                  "1080p"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "schema": {
                  "enum": [
                    "480p",
                    "720p",
                    "1080p"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "16:9",
                  "4:3",
                  "1:1",
                  "3:4",
                  "9:16"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "schema": {
                  "enum": [
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  false,
                  true
                ],
                "enum_known": true,
                "name": "generate_audio",
                "required": false,
                "schema": {
                  "enum": [
                    false,
                    true
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "conditions": "Ces clés décrivent chaque objet représentant une image de la séquence ; image_url contient uniquement url. Omettez frame_images pour une requête contenant uniquement du texte.",
                "content": "Tableau d’objets représentant les images de la séquence. Chaque objet comporte type=image_url, image_url contenant url et frame_type. Utilisez une URL d’image HTTPS et définissez frame_type sur first_frame. Chaque rôle d’image apparaît au plus une fois.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "maxItems": 1,
                "max_items": 1,
                "minItems": 1,
                "min_items": 1,
                "name": "frame_images",
                "required": false,
                "schema": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_frame"
                        ]
                      },
                      "image_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "format": "uri",
                            "pattern": "^https://",
                            "type": "string",
                            "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url",
                      "frame_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 1,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxItems": 0,
                "name": "input_references",
                "required": false,
                "schema": {
                  "items": false,
                  "maxItems": 0,
                  "type": "array"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maximum": 9223372036854775807,
                "minimum": -9223372036854775808,
                "name": "seed",
                "required": false,
                "schema": {
                  "maximum": 9223372036854775807,
                  "minimum": -9223372036854775808,
                  "type": "integer"
                },
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "callback_url",
                "pattern": "^https://",
                "required": false,
                "schema": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "session_id",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "trace",
                "required": false,
                "schema": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "object"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "user",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              }
            ],
            "request_schema": {
              "$schema": "https://json-schema.org/draft/2020-12/schema",
              "additionalProperties": false,
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16"
                  ]
                },
                "callback_url": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "creativity": false,
                "duration": {
                  "enum": [
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15,
                    16,
                    17,
                    18,
                    19,
                    20,
                    21,
                    22,
                    23,
                    24,
                    25,
                    26,
                    27,
                    28,
                    29,
                    30
                  ],
                  "maximum": 600,
                  "minimum": 1,
                  "type": "integer"
                },
                "frame_images": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_frame"
                        ]
                      },
                      "image_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "format": "uri",
                            "pattern": "^https://",
                            "type": "string",
                            "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url",
                      "frame_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 1,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "generate_audio": {
                  "enum": [
                    false,
                    true
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "input_references": {
                  "items": false,
                  "maxItems": 0,
                  "type": "array"
                },
                "model": {
                  "const": "alibaba/wan-3.0-prime"
                },
                "previous_job_id": false,
                "prompt": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "provider": false,
                "resolution": {
                  "enum": [
                    "480p",
                    "720p",
                    "1080p"
                  ]
                },
                "seed": {
                  "maximum": 9223372036854775807,
                  "minimum": -9223372036854775808,
                  "type": "integer"
                },
                "session_id": {
                  "maxLength": 256,
                  "type": "string"
                },
                "size": false,
                "trace": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "upscale_factor": false,
                "user": {
                  "maxLength": 256,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt",
                "duration"
              ],
              "title": "Video generation request",
              "type": "object",
              "x-source-global-rules": [
                "No null values or duplicate keys at any JSON object level",
                "No duration/resolution/aspect default is inserted",
                "Prompt required for all21 despite broader official image-only schema",
                "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
                "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
                "No n/output-count/client price fields accepted",
                "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
              ],
              "x-source-material-combinations": [
                "Exact model/card, positive published duration, model resolution/aspect membership and valid frozen quote are all required; independent enum arrays are not proven provider Cartesian combinations.",
                "Use exact published size or compatible resolution/aspect. Omitted options stay omitted; no guessed geometry.",
                "first_frame/last_frame roles each occur at most once; frame_images wins mode precedence over input_references.",
                "provider options are unavailable for this model despite any published passthrough-name allowlist."
              ]
            },
            "unsupported": [
              "size",
              "provider",
              "previous_job_id",
              "upscale_factor",
              "creativity"
            ]
          },
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "text",
              "image"
            ],
            "optional_controls": [
              "resolution",
              "aspect_ratio",
              "generate_audio",
              "frame_images",
              "input_references",
              "seed",
              "callback_url",
              "session_id",
              "trace",
              "user"
            ],
            "required": [
              "model",
              "prompt",
              "duration"
            ]
          },
          "lifecycle": {
            "cancel_endpoint": null,
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{public_id}/content",
                "query": {
                  "index": "actual output index"
                }
              }
            ],
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "mode": "submit_once_poll_original",
            "public_id": "video_<uuid>; owner user/key/group scope",
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{public_id}"
              }
            ],
            "submit_status": 202,
            "terminal_failure_public": "200 failed + charge_pending_check=true; inspect original operation",
            "terminal_provider_states": [
              "failed",
              "cancelled",
              "expired"
            ],
            "unknown": "503 result_pending_check + originalid + X-Should-Retry:false; never replay original"
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_video",
            "image_to_video_frame_images"
          ],
          "output": {
            "content_range_supported": true,
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "condition": "Always present for each completed output.",
                "description": "Zero-based position of this video in the outputs list.",
                "field_path": "outputs[].index",
                "json_schema": {
                  "type": "integer"
                },
                "name": "index",
                "nullable": false,
                "type": "integer"
              },
              {
                "condition": "Present after the owned result is available and a signed URL is created.",
                "description": "Signed HTTPS download URL for this completed video.",
                "field_path": "outputs[].content_url",
                "json_schema": {
                  "type": "string"
                },
                "name": "content_url",
                "nullable": false,
                "type": "string"
              },
              {
                "condition": "A nonempty recorded digest is returned; otherwise null.",
                "description": "SHA-256 digest of the original video bytes; null if unavailable.",
                "field_path": "outputs[].sha256",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "sha256",
                "nullable": true,
                "type": "string | null"
              },
              {
                "condition": "Returned when the recorded file size is positive.",
                "description": "Size of the original video file in bytes; null if unavailable.",
                "field_path": "outputs[].size_bytes",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "size_bytes",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Returned when the measured duration is positive.",
                "description": "Measured video duration in milliseconds; null if unavailable.",
                "field_path": "outputs[].duration_ms",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "duration_ms",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Width, height and the video codec are returned together when recorded.",
                "description": "Video width in pixels; null if unavailable.",
                "field_path": "outputs[].width",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "width",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Width, height and the video codec are returned together when recorded.",
                "description": "Video height in pixels; null if unavailable.",
                "field_path": "outputs[].height",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "height",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Returned together with positive recorded width and height.",
                "description": "Video codec identifier; null if not recorded.",
                "field_path": "outputs[].video_codec",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "video_codec",
                "nullable": true,
                "type": "string | null"
              },
              {
                "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                "description": "Whether the video contains an audio track; null if not measured.",
                "field_path": "outputs[].has_audio",
                "json_schema": {
                  "type": [
                    "boolean",
                    "null"
                  ]
                },
                "name": "has_audio",
                "nullable": true,
                "type": "boolean | null"
              },
              {
                "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                "description": "Audio codec identifier; null when no identifier is recorded.",
                "field_path": "outputs[].audio_codec",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "audio_codec",
                "nullable": true,
                "type": "string | null"
              }
            ],
            "format": "original MP4 bytes; no normalization/transcode",
            "max_aggregate_seconds": 2400,
            "max_bytes_per_output": 67108864,
            "max_seconds_per_output": 600,
            "result": "signed owned content URLs",
            "unmeasured_fields_nullable": true
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 1080p",
              "quoted_unit": "per video second"
            },
            "label": "Tarif vidéo",
            "units": [
              {
                "amount": "0.56",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_1080p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.56",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 480p",
              "quoted_unit": "per video second"
            },
            "label": "Tarif vidéo",
            "units": [
              {
                "amount": "0.136",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_480p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.136",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 720p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.28",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_720p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.28",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "Cette estimation ne constitue ni des frais supplémentaires ni un tarif fixe pour la génération terminée.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Coût estimé de la génération",
            "units": [
              {
                "amount": "0.272",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.272",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nfrom pathlib import Path\nPath('request.json').write_text('{\"aspect_ratio\":\"16:9\",\"duration\":8,\"model\":\"alibaba/wan-3.0-prime\",\"prompt\":\"A serene mountain landscape at sunset\",\"resolution\":\"720p\"}', encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('result.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "curl · create video",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_STATUS_URL'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nr=json.loads(Path('result.json').read_text())\nif not isinstance(r.get('id'),str) or not r['id']:raise SystemExit('Keep the original response and headers for reconciliation; no returned ID')\nPath('status-url.txt').write_text('https://api.ailoot.ai/v1/videos/'+quote(r['id'],safe=''))\nPY_STATUS_URL\ncurl --fail-with-body --silent --show-error \"$(cat status-url.txt)\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -D status-headers.txt -o status.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('status.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "GET original status",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_ASSETS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path('status.json').read_text())\nif r.get('status')!='completed':raise SystemExit('Keep the original ID and read its status; never recreate an unknown job')\nif not isinstance(r.get('data'),list) or not r['data']:raise SystemExit('Keep the complete original status; no completed outputs supplied')\nurls=[]\nfor i,u in enumerate(r.get('data',[])):\n    if not isinstance(u,str):raise SystemExit('Keep the original response; unexpected asset shape')\n    urls.append((str(i),u))\nfor label,path in urls:\n    u=urljoin('https://api.ailoot.ai',path);z=urlsplit(u)\n    if z.scheme!='https' or z.netloc!='api.ailoot.ai' or z.username or z.password:raise SystemExit('Use the actual returned Ailoot owned content URL')\n    target=Path('owned-'+label+'.bin')\n    subprocess.run(['curl','--fail-with-body','--silent','--show-error',u,'-H','Authorization: Bearer '+os.environ['AILOOT_API_KEY'],'-D',str(target)+'.headers','-o',str(target)],check=True)\nprint('All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.')\nPY_ASSETS\n",
            "label": "Save every completed owned output",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image"
        ],
        "label": "Видео",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 1080p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.56",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_1080p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.56",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 480p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.136",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_480p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.136",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 720p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.28",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_720p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.28",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.272",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.272",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "request_model_id": "alibaba/wan-3.0-prime",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{public_id}",
          "GET /v1/videos/{public_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.56",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds_1080p",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.56",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.136",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds_480p",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.136",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.28",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds_720p",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.28",
            "native_quantity": 1,
            "public_unit_label": "per video second",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_second"
          },
          {
            "amount": "0.272",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.272",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "request_estimate"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "alibaba/wan-3.0-prime",
        "request_model_id": "alibaba/wan-3.0-prime",
        "route_label": "Ultra"
      }
    ],
    "name": "Alibaba: Wan 3.0 Prime",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 0.272,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 0.272,
      "varies": false
    },
    "pricing_profiles": [
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "480P",
          "Service deployment scope": "International",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.136",
            "amount_unit": "usd_per_input_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "480P",
              "Service deployment scope": "International",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "input_video_second",
            "label": "input video second",
            "profile_index": 0,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "480P",
          "Service deployment scope": "International",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.136",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "480P",
              "Service deployment scope": "International",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "output_video_second",
            "label": "output video second",
            "profile_index": 1,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "720P",
          "Service deployment scope": "International",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.28",
            "amount_unit": "usd_per_input_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "720P",
              "Service deployment scope": "International",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "input_video_second",
            "label": "input video second",
            "profile_index": 2,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "720P",
          "Service deployment scope": "International",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.28",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "720P",
              "Service deployment scope": "International",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "output_video_second",
            "label": "output video second",
            "profile_index": 3,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "1080P",
          "Service deployment scope": "International",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.56",
            "amount_unit": "usd_per_input_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "1080P",
              "Service deployment scope": "International",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "input_video_second",
            "label": "input video second",
            "profile_index": 4,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "1080P",
          "Service deployment scope": "International",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.56",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "1080P",
              "Service deployment scope": "International",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "output_video_second",
            "label": "output video second",
            "profile_index": 5,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "480P",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.1272",
            "amount_unit": "usd_per_input_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "480P",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "input_video_second",
            "label": "input video second",
            "profile_index": 6,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "480P",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.1272",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "480P",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "output_video_second",
            "label": "output video second",
            "profile_index": 7,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "720P",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.254398",
            "amount_unit": "usd_per_input_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "720P",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "input_video_second",
            "label": "input video second",
            "profile_index": 8,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "720P",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.254398",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "720P",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "output_video_second",
            "label": "output video second",
            "profile_index": 9,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "1080P",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.508798",
            "amount_unit": "usd_per_input_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "1080P",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "input_video_second",
            "label": "input video second",
            "profile_index": 10,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "1080P",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.508798",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "1080P",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "output_video_second",
            "label": "output video second",
            "profile_index": 11,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "480P",
          "Service deployment scope": "Global",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.1272",
            "amount_unit": "usd_per_input_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "480P",
              "Service deployment scope": "Global",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "input_video_second",
            "label": "input video second",
            "profile_index": 12,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "480P",
          "Service deployment scope": "Global",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.1272",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "480P",
              "Service deployment scope": "Global",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "output_video_second",
            "label": "output video second",
            "profile_index": 13,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "720P",
          "Service deployment scope": "Global",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.254398",
            "amount_unit": "usd_per_input_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "720P",
              "Service deployment scope": "Global",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "input_video_second",
            "label": "input video second",
            "profile_index": 14,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "720P",
          "Service deployment scope": "Global",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.254398",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "720P",
              "Service deployment scope": "Global",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "output_video_second",
            "label": "output video second",
            "profile_index": 15,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "1080P",
          "Service deployment scope": "Global",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.508798",
            "amount_unit": "usd_per_input_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "1080P",
              "Service deployment scope": "Global",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "input_video_second",
            "label": "input video second",
            "profile_index": 16,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "1080P",
          "Service deployment scope": "Global",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.508798",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "1080P",
              "Service deployment scope": "Global",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "output_video_second",
            "label": "output video second",
            "profile_index": 17,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "480P",
          "Service deployment scope": "Global",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.1272",
            "amount_unit": "usd_per_input_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "480P",
              "Service deployment scope": "Global",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "input_video_second",
            "label": "input video second",
            "profile_index": 18,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "480P",
          "Service deployment scope": "Global",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.1272",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "480P",
              "Service deployment scope": "Global",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "output_video_second",
            "label": "output video second",
            "profile_index": 19,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "720P",
          "Service deployment scope": "Global",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.254398",
            "amount_unit": "usd_per_input_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "720P",
              "Service deployment scope": "Global",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "input_video_second",
            "label": "input video second",
            "profile_index": 20,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "720P",
          "Service deployment scope": "Global",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.254398",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "720P",
              "Service deployment scope": "Global",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "output_video_second",
            "label": "output video second",
            "profile_index": 21,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "1080P",
          "Service deployment scope": "Global",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.508798",
            "amount_unit": "usd_per_input_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "1080P",
              "Service deployment scope": "Global",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "input_video_second",
            "label": "input video second",
            "profile_index": 22,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "1080P",
          "Service deployment scope": "Global",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.508798",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "1080P",
              "Service deployment scope": "Global",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "output_video_second",
            "label": "output video second",
            "profile_index": 23,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "480P",
          "Service deployment scope": "Global",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.1272",
            "amount_unit": "usd_per_input_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "480P",
              "Service deployment scope": "Global",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "input_video_second",
            "label": "input video second",
            "profile_index": 24,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "480P",
          "Service deployment scope": "Global",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.1272",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "480P",
              "Service deployment scope": "Global",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "output_video_second",
            "label": "output video second",
            "profile_index": 25,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "720P",
          "Service deployment scope": "Global",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.254398",
            "amount_unit": "usd_per_input_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "720P",
              "Service deployment scope": "Global",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "input_video_second",
            "label": "input video second",
            "profile_index": 26,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "720P",
          "Service deployment scope": "Global",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.254398",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "720P",
              "Service deployment scope": "Global",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "output_video_second",
            "label": "output video second",
            "profile_index": 27,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "1080P",
          "Service deployment scope": "Global",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.508798",
            "amount_unit": "usd_per_input_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "1080P",
              "Service deployment scope": "Global",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "input_video_second",
            "label": "input video second",
            "profile_index": 28,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "1080P",
          "Service deployment scope": "Global",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.508798",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "1080P",
              "Service deployment scope": "Global",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "output_video_second",
            "label": "output video second",
            "profile_index": 29,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "480P",
          "Service deployment scope": "Global",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.1272",
            "amount_unit": "usd_per_input_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "480P",
              "Service deployment scope": "Global",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "input_video_second",
            "label": "input video second",
            "profile_index": 30,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "480P",
          "Service deployment scope": "Global",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.1272",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "480P",
              "Service deployment scope": "Global",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "output_video_second",
            "label": "output video second",
            "profile_index": 31,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "720P",
          "Service deployment scope": "Global",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.254398",
            "amount_unit": "usd_per_input_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "720P",
              "Service deployment scope": "Global",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "input_video_second",
            "label": "input video second",
            "profile_index": 32,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "720P",
          "Service deployment scope": "Global",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.254398",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "720P",
              "Service deployment scope": "Global",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "output_video_second",
            "label": "output video second",
            "profile_index": 33,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "1080P",
          "Service deployment scope": "Global",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.508798",
            "amount_unit": "usd_per_input_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "1080P",
              "Service deployment scope": "Global",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "input_video_second",
            "label": "input video second",
            "profile_index": 34,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "Model ID": "wan3.0-video-prime",
          "Output video resolution": "1080P",
          "Service deployment scope": "Global",
          "input_output_charged_separately_additive": true,
          "maker_published_model_id": "wan3.0-video-prime"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.508798",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "Model ID": "wan3.0-video-prime",
              "Output video resolution": "1080P",
              "Service deployment scope": "Global",
              "input_output_charged_separately_additive": true,
              "maker_published_model_id": "wan3.0-video-prime"
            },
            "key": "output_video_second",
            "label": "output video second",
            "profile_index": 35,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "no_method_admission_claim": true,
          "scope": "supplier_tariff_reference"
        },
        "dimensions": {},
        "label": "Ailoot Ultra · Tariff components",
        "units": [
          {
            "amount": "0.136",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "resolution=480p",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.136",
            "key": "duration_seconds_480p",
            "label": "output second",
            "native_amount_usd_per_unit": "0.136",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "output_second"
          },
          {
            "amount": "0.28",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "resolution=720p",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.28",
            "key": "duration_seconds_720p",
            "label": "output second",
            "native_amount_usd_per_unit": "0.28",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "output_second"
          },
          {
            "amount": "0.56",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "resolution=1080p",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.56",
            "key": "duration_seconds_1080p",
            "label": "output second",
            "native_amount_usd_per_unit": "0.56",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "output_second"
          }
        ]
      }
    ],
    "public_id": "alibaba/wan-3.0-prime",
    "short": "Alibaba Wan 3.0 Prime est le modèle vidéo Wan 3.0 optimisé pour la vitesse. Son profil producteur prend en charge la génération à partir de texte, d’une première image ou d’images de début et de fin, ainsi que les références multimodales, avec du son intégré. Il produit des clips MP4 de 2 à 30 secondes à 30 images par seconde en 480p, 720p ou 1080p, avec cadrage adaptatif et fonctions de modification."
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "Alibaba Wan 3.0 Prime est le modèle vidéo Wan 3.0 optimisé pour la vitesse. Son profil producteur prend en charge la génération à partir de texte, d’une première image ou d’images de début et de fin, ainsi que les références multimodales, avec du son intégré. Il produit des clips MP4 de 2 à 30 secondes à 30 images par seconde en 480p, 720p ou 1080p, avec cadrage adaptatif et fonctions de modification.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_exact_canonical_sha256": "1d3b2eaad49645a67559a2b4c6f5550138d96cd1f5df847d1430ad9b511f5d8c",
    "raw_model_js_projection_sha256": "7f1e70d5016e38d865629214976094e95e99dc9d9a0b52be5505eebe2df8c8c3",
    "raw_model_json_sha256": "1d3b2eaad49645a67559a2b4c6f5550138d96cd1f5df847d1430ad9b511f5d8c",
    "renderer_sha256": "9d578ff8df69ef70403308c9943a1179a11b94114c10b333bf1c012005d4a7f4"
  },
  "sourceRevision": "238b6420697c0978983af7219dcc0e07a9f399f1e41fdc994a7dad5aef243236"
}
