{
  "aboutHtml": "<p>GLM-Image est le modèle de génération d’images à partir de texte de Zhipu, proposé sous le sélecteur exact glm-image. Utilisez POST /v1/images/generations avec model et prompt. Décrivez le sujet, son environnement, le traitement visuel et la composition à produire. L’entrée prise en charge par ce profil est une description écrite de l’image; le prompt doit donc communiquer directement les éléments importants de l’apparence et de la disposition.</p><p>Pour une composition de produit, décrivez l’objet, le point de vue de la caméra, l’arrière-plan, l’éclairage et la position des éléments secondaires. Pour une illustration, indiquez l’action principale, la palette de couleurs et le traitement du dessin. Un brief utile peut demander une tasse en céramique sur une table claire, une vue latérale, une douce lumière de fenêtre et une zone dégagée au-dessus du sujet pour un titre distinct. Décrivez l’espace et la hiérarchie souhaités au lieu de vous reposer sur une instruction générale comme « créer une publicité ».</p><p>La taille par défaut est 1280x1280. Les valeurs de taille documentées pour ce modèle exact sont 1280x1280, 1568x1056, 1056x1568, 1472x1088, 1088x1472, 1728x960 et 960x1728. Choisissez une taille paysage ou portrait adaptée à la destination avant d’envoyer le brief. Gardez ces chaînes exactes dans le champ size; elles indiquent des pixels plutôt qu’une résolution d’affichage nommée.</p><p>GLM-Image prend en charge quality=hd, qui est son réglage de qualité par défaut. Le booléen watermark_enabled vaut true par défaut et contrôle le réglage de filigrane documenté. Si vous fournissez user_id, la longueur documentée est de 6 à 128 caractères. Ces paramètres décrivent différentes parties de la requête : size définit le cadre, quality sélectionne le réglage de rendu pris en charge et watermark_enabled sélectionne le comportement du filigrane.</p><p>La génération est synchrone : la réponse terminée contient created et un tableau data avec des URL d’images. Conservez chaque élément data renvoyé et récupérez chaque image que vous comptez utiliser. Évaluez la composition réelle, les détails du sujet et les éventuelles inscriptions rendues par rapport au brief, puis conservez l’image choisie avec son prompt et ses paramètres. Une réponse d’image terminée fournit directement le résultat; ce profil n’introduit pas de tâche de génération distincte à interroger.</p>",
  "aboutText": "GLM-Image est le modèle de génération d’images à partir de texte de Zhipu, proposé sous le sélecteur exact glm-image. Utilisez POST /v1/images/generations avec model et prompt. Décrivez le sujet, son environnement, le traitement visuel et la composition à produire. L’entrée prise en charge par ce profil est une description écrite de l’image; le prompt doit donc communiquer directement les éléments importants de l’apparence et de la disposition.\n\nPour une composition de produit, décrivez l’objet, le point de vue de la caméra, l’arrière-plan, l’éclairage et la position des éléments secondaires. Pour une illustration, indiquez l’action principale, la palette de couleurs et le traitement du dessin. Un brief utile peut demander une tasse en céramique sur une table claire, une vue latérale, une douce lumière de fenêtre et une zone dégagée au-dessus du sujet pour un titre distinct. Décrivez l’espace et la hiérarchie souhaités au lieu de vous reposer sur une instruction générale comme « créer une publicité ».\n\nLa taille par défaut est 1280x1280. Les valeurs de taille documentées pour ce modèle exact sont 1280x1280, 1568x1056, 1056x1568, 1472x1088, 1088x1472, 1728x960 et 960x1728. Choisissez une taille paysage ou portrait adaptée à la destination avant d’envoyer le brief. Gardez ces chaînes exactes dans le champ size; elles indiquent des pixels plutôt qu’une résolution d’affichage nommée.\n\nGLM-Image prend en charge quality=hd, qui est son réglage de qualité par défaut. Le booléen watermark_enabled vaut true par défaut et contrôle le réglage de filigrane documenté. Si vous fournissez user_id, la longueur documentée est de 6 à 128 caractères. Ces paramètres décrivent différentes parties de la requête : size définit le cadre, quality sélectionne le réglage de rendu pris en charge et watermark_enabled sélectionne le comportement du filigrane.\n\nLa génération est synchrone : la réponse terminée contient created et un tableau data avec des URL d’images. Conservez chaque élément data renvoyé et récupérez chaque image que vous comptez utiliser. Évaluez la composition réelle, les détails du sujet et les éventuelles inscriptions rendues par rapport au brief, puis conservez l’image choisie avec son prompt et ses paramètres. Une réponse d’image terminée fournit directement le résultat; ce profil n’introduit pas de tâche de génération distincte à interroger.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "eebdfc6a782388aff099556c4e41d32a232a119afb0fd7b789163cc7440bb465",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "fr-ca",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">glm-image</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Fermer\">×</button></div><div class=\"idline\"><span>ZHIPU /</span><code>glm-image</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\">Pour commencer</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|images|/v1/images/generations|glm-image\">Images</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\">Pour commencer</h3><p class=\"mdesc-full\">GLM-Image transforme un brief visuel écrit en images. Utilisez le sélecteur exact glm-image pour des illustrations, des concepts de scène et des compositions de produits, en choisissant parmi ses tailles carrées, paysage et portrait documentées. Ce profil accepte du texte et renvoie les images dans une réponse synchrone.</p><dl class=\"card-io\" data-card-io><div><dt>Entrées acceptées</dt><dd>Texte</dd></div><div><dt>Résultats</dt><dd>Images</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>GLM-Image est le modèle de génération d’images à partir de texte de Zhipu, proposé sous le sélecteur exact glm-image. Utilisez POST /v1/images/generations avec model et prompt. Décrivez le sujet, son environnement, le traitement visuel et la composition à produire. L’entrée prise en charge par ce profil est une description écrite de l’image; le prompt doit donc communiquer directement les éléments importants de l’apparence et de la disposition.</p><p>Pour une composition de produit, décrivez l’objet, le point de vue de la caméra, l’arrière-plan, l’éclairage et la position des éléments secondaires. Pour une illustration, indiquez l’action principale, la palette de couleurs et le traitement du dessin. Un brief utile peut demander une tasse en céramique sur une table claire, une vue latérale, une douce lumière de fenêtre et une zone dégagée au-dessus du sujet pour un titre distinct. Décrivez l’espace et la hiérarchie souhaités au lieu de vous reposer sur une instruction générale comme « créer une publicité ».</p><p>La taille par défaut est 1280x1280. Les valeurs de taille documentées pour ce modèle exact sont 1280x1280, 1568x1056, 1056x1568, 1472x1088, 1088x1472, 1728x960 et 960x1728. Choisissez une taille paysage ou portrait adaptée à la destination avant d’envoyer le brief. Gardez ces chaînes exactes dans le champ size; elles indiquent des pixels plutôt qu’une résolution d’affichage nommée.</p><p>GLM-Image prend en charge quality=hd, qui est son réglage de qualité par défaut. Le booléen watermark_enabled vaut true par défaut et contrôle le réglage de filigrane documenté. Si vous fournissez user_id, la longueur documentée est de 6 à 128 caractères. Ces paramètres décrivent différentes parties de la requête : size définit le cadre, quality sélectionne le réglage de rendu pris en charge et watermark_enabled sélectionne le comportement du filigrane.</p><p>La génération est synchrone : la réponse terminée contient created et un tableau data avec des URL d’images. Conservez chaque élément data renvoyé et récupérez chaque image que vous comptez utiliser. Évaluez la composition réelle, les détails du sujet et les éventuelles inscriptions rendues par rapport au brief, puis conservez l’image choisie avec son prompt et ses paramètres. Une réponse d’image terminée fournit directement le résultat; ce profil n’introduit pas de tâche de génération distincte à interroger.</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 · Images</b> <code>POST /v1/images/generations</code></summary><dl class=\"method-capabilities\"><div><dt>Entrée</dt><dd><code>text</code></dd></div><div><dt>Sortie</dt><dd><code>image</code></dd></div><div><dt>Format de sortie</dt><dd>Fichier image</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><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>glm-image</div></td><td data-cell-label=\"Par défaut\" data-default=\"unspecified\"><span class=\"card-cell-label\">Par défaut</span>—</td></tr><tr><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><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">size</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>1280x1280, 1568x1056, 1056x1568, 1472x1088, 1088x1472, 1728x960, 960x1728</div></td><td data-cell-label=\"Par défaut\" data-default=\"known\"><span class=\"card-cell-label\">Par défaut</span>1280x1280</td></tr><tr><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">user_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><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">quality</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>hd, standard</div></td><td data-cell-label=\"Par défaut\" data-default=\"unspecified\"><span class=\"card-cell-label\">Par défaut</span>—</td></tr><tr><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">watermark_enabled</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></td><td data-cell-label=\"Par défaut\" data-default=\"known\"><span class=\"card-cell-label\">Par défaut</span>true</td></tr><tr><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">stream</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</div></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=\"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</td></tr><tr><th data-cell-label=\"Paramètre\" scope=\"row\"><span class=\"card-cell-label\">Paramètre</span><code>optional</code></th><td data-cell-label=\"Contrat\"><span class=\"card-cell-label\">Contrat</span>size, user_id, quality, watermark_enabled, stream</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</td></tr><tr><th data-cell-label=\"Paramètre\" scope=\"row\"><span class=\"card-cell-label\">Paramètre</span><code>conditions</code></th><td data-cell-label=\"Contrat\"><span class=\"card-cell-label\">Contrat</span>Use stream:false or omit stream. The complete buffered JSON result contains all generated images.</td></tr></tbody></table></div><p>Cycle de vie : <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/assets</code></p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}</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>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=\"Coût\"><span class=\"card-cell-label\">Coût</span><div><span>Entrée · Jetons en entrée · Estimation à des fins de comparaison uniquement</span> <b>—</b> <span class=\"price-unit\">/ 1K jetons</span></div><div><span>Sortie · Jetons en sortie · Estimation à des fins de comparaison uniquement</span> <b>—</b> <span class=\"price-unit\">/ 1K jetons</span></div><div><span>Entrée · Lecture du cache · Estimation à des fins de comparaison uniquement</span> <b>—</b> <span class=\"price-unit\">/ 1K jetons</span></div><div><span>Entrée · Écriture dans le cache · Estimation à des fins de comparaison uniquement</span> <b>—</b> <span class=\"price-unit\">/ 1K jetons</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 jetons</span></div></td></tr><tr><th data-cell-label=\"Configuration\" scope=\"row\"><span class=\"card-cell-label\">Configuration</span>Estimated generation cost</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=\"Coût\"><span class=\"card-cell-label\">Coût</span><div><span>Entrée · Coût estimé de génération · Estimation à des fins de comparaison uniquement</span> <b>$0.09</b> <span class=\"price-unit\">estimation avant génération</span></div><p class=\"note-s\">This estimate is not an additional charge or a fixed rate for the completed generation.</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-ca/billing/reserve/\">Fonctionnement de la réservation et du débit →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Exemples de requêtes</h3><h4>Ailoot Ultra · Images</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-11-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-11-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · créez une seule fois et conservez le résultat complet</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-11-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-11-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_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;glm-image&quot;, &quot;prompt&quot;: &quot;A calm studio product photograph with a plain background.&quot;}&#39;)\n\nPath(&quot;request.json&quot;).write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \\\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\n# Submit once. Retain the complete result, original identifiers and every response header.\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 · Images</h4><p class=\"note-s\">Téléchargez chaque image renvoyée ou enregistrez son contenu Base64</p><ul class=\"card-result-paths\"><li><code>GET /v1/media/assets</code></li><li><code>GET /v1/media/assets/{asset_id}</code></li></ul><div class=\"card-result-process\" data-all-results><h5>Conserver tous les résultats terminés</h5><p class=\"note-s\">Enregistrez chaque image terminée ; récupérez chaque URL renvoyée ou décodez son contenu Base64.</p><p class=\"note-s\">Retain every returned image and field. Use owned content_url values and actual asset_id records; refresh the same asset when a link expires.</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\">Preserve the original response, headers and X-Client-Request-ID. An uncertain outcome does not authorize another creation.</p></div></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=glm-image&amp;route=Ultra&amp;caller=glm-image&amp;fmt=images\"><code>glm-image</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=glm-image&amp;route=Ultra&amp;caller=glm-image&amp;fmt=images\"><code>glm-image</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "glm-image",
        "fmt": "images",
        "http": "POST",
        "path": "/v1/images/generations",
        "request_model_id": "glm-image",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|images|/v1/images/generations|glm-image",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "The displayed rates estimate the cost before generation. The final charge is calculated from the cost recorded for the original generation. Measured output duration and forecast quantities are not the final billable quantity.",
          "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": "Retain the complete response, all actual results, original identifiers, usage and response headers.",
            "authentication": {
              "api_key_source": "AILOOT_API_KEY",
              "header": "Authorization: Bearer"
            },
            "example_body": {
              "model": "glm-image",
              "prompt": "A calm studio product photograph with a plain background."
            },
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets",
                  "query": {
                    "cursor": "actual returned next_cursor, when present",
                    "family": "image"
                  }
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "cancel_endpoint": null,
              "create": {
                "http": "POST",
                "path": "/v1/images/generations"
              },
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "owned_content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "Use the exact returned content_url. Refresh an expired link by reading the same existing asset."
              },
              "status": [],
              "unknown": "Preserve the original response, headers and X-Client-Request-ID. An uncertain outcome does not authorize another creation.",
              "unknown_no_replay": true
            },
            "outputs": {
              "all_results": "Retain every returned image and field. Use owned content_url values and actual asset_id records; refresh the same asset when a link expires.",
              "family": "image",
              "format": "JSON with all URL or base64 outputs"
            },
            "parameters": [
              {
                "default_known": false,
                "enum": [
                  "glm-image"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "default_known": false,
                "enum_known": false,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "default": "1280x1280",
                "default_known": true,
                "enum": [
                  "1280x1280",
                  "1568x1056",
                  "1056x1568",
                  "1472x1088",
                  "1088x1472",
                  "1728x960",
                  "960x1728"
                ],
                "enum_known": true,
                "name": "size",
                "required": false,
                "type": "string"
              },
              {
                "default_known": false,
                "enum_known": false,
                "name": "user_id",
                "required": false,
                "type": "string"
              },
              {
                "default_known": false,
                "enum": [
                  "hd",
                  "standard"
                ],
                "enum_known": true,
                "name": "quality",
                "required": false,
                "type": "string"
              },
              {
                "default": true,
                "default_known": true,
                "enum_known": false,
                "name": "watermark_enabled",
                "required": false,
                "type": "boolean"
              },
              {
                "default_known": false,
                "enum": [
                  false
                ],
                "enum_known": true,
                "name": "stream",
                "required": false,
                "type": "boolean"
              }
            ],
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "model": {
                  "enum": [
                    "glm-image"
                  ],
                  "type": "string"
                },
                "prompt": {
                  "type": "string"
                },
                "quality": {
                  "enum": [
                    "hd",
                    "standard"
                  ],
                  "type": "string"
                },
                "size": {
                  "default": "1280x1280",
                  "enum": [
                    "1280x1280",
                    "1568x1056",
                    "1056x1568",
                    "1472x1088",
                    "1088x1472",
                    "1728x960",
                    "960x1728"
                  ],
                  "type": "string"
                },
                "stream": {
                  "enum": [
                    false
                  ],
                  "type": "boolean"
                },
                "user_id": {
                  "type": "string"
                },
                "watermark_enabled": {
                  "default": true,
                  "type": "boolean"
                }
              },
              "required": [
                "model",
                "prompt"
              ],
              "type": "object"
            },
            "schema_template": {
              "body": {
                "model": "glm-image",
                "prompt": "A calm studio product photograph with a plain background."
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "conditions": [
              "Use stream:false or omit stream. The complete buffered JSON result contains all generated images."
            ],
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional": [
              "size",
              "user_id",
              "quality",
              "watermark_enabled",
              "stream"
            ],
            "required": [
              "model",
              "prompt"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets",
                "query": {
                  "cursor": "actual returned next_cursor, when present",
                  "family": "image"
                }
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "cancel_endpoint": null,
            "create": {
              "http": "POST",
              "path": "/v1/images/generations"
            },
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "owned_content": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}/content",
              "url_source": "Use the exact returned content_url. Refresh an expired link by reading the same existing asset."
            },
            "status": [],
            "unknown": "Preserve the original response, headers and X-Client-Request-ID. An uncertain outcome does not authorize another creation.",
            "unknown_no_replay": true
          },
          "method": {
            "http": "POST",
            "path": "/v1/images/generations"
          },
          "method_aliases": [],
          "output": {
            "all_results": "Retain every returned image and field. Use owned content_url values and actual asset_id records; refresh the same asset when a link expires.",
            "family": "image",
            "format": "JSON with all URL or base64 outputs"
          }
        },
        "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"
              }
            ]
          },
          {
            "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.09",
                "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.09",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"glm-image\", \"prompt\": \"A calm studio product photograph with a plain background.\"}')\n\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\n# Submit once. Retain the complete result, original identifiers and every response header.\n",
            "label": "curl · create once and retain the complete result",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "images",
        "http": "POST",
        "img_in": null,
        "img_out": null,
        "in": null,
        "input": [
          "text"
        ],
        "label": "Images",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "image"
        ],
        "path": "/v1/images/generations",
        "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",
          "cache_read_price": null,
          "cache_write_1h_price": null,
          "cache_write_price": null,
          "fast_multiplier": null,
          "flex_multiplier": null,
          "image_input_price": null,
          "image_output_price": null,
          "input_price": null,
          "intervals": null,
          "max_reasoning_effort_multiplier": null,
          "output_price": null,
          "per_request_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"
              }
            ]
          },
          {
            "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.09",
                "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.09",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "request_model_id": "glm-image",
        "route_label": "Ultra",
        "status_reads": [],
        "tiers": [],
        "unit": "image",
        "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.09",
            "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.09",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "request_estimate"
          }
        ]
      }
    }
  ],
  "model_id": "glm-image",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "c676ae4cdd4b01a70c489db5f0265f94042e7ea4ae4588320e7f4d15f8f9dce3",
    "input_html_sha256": "35c022ab40a0dc79f249fa21f0bf8a017d12993ce44954741f09dc056656e1b6",
    "private_audit_sha256": "b749d8e43e091e3cecb90fcb3acc956cbcf243caeb72e248ce664b4a553d6d0b",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/fr-ca/glm-image/",
    "description": "GLM-Image transforme un brief visuel écrit en images. Utilisez le sélecteur exact glm-image pour des illustrations, des concepts de scène et des compositions de produits, en choisissant parmi ses tailles carrées, paysage et portrait documentées. Ce profil accepte du texte et renvoie les images dans une réponse synchrone.",
    "locale": "fr-ca",
    "md_url": "https://ailoot.ai/models/fr-ca/glm-image/index.md",
    "title": "glm-image — Ailoot",
    "url": "https://ailoot.ai/models/fr-ca/glm-image/"
  },
  "rawModel": {
    "about": "GLM-Image est le modèle de génération d’images à partir de texte de Zhipu, proposé sous le sélecteur exact glm-image. Utilisez POST /v1/images/generations avec model et prompt. Décrivez le sujet, son environnement, le traitement visuel et la composition à produire. L’entrée prise en charge par ce profil est une description écrite de l’image; le prompt doit donc communiquer directement les éléments importants de l’apparence et de la disposition.\n\nPour une composition de produit, décrivez l’objet, le point de vue de la caméra, l’arrière-plan, l’éclairage et la position des éléments secondaires. Pour une illustration, indiquez l’action principale, la palette de couleurs et le traitement du dessin. Un brief utile peut demander une tasse en céramique sur une table claire, une vue latérale, une douce lumière de fenêtre et une zone dégagée au-dessus du sujet pour un titre distinct. Décrivez l’espace et la hiérarchie souhaités au lieu de vous reposer sur une instruction générale comme « créer une publicité ».\n\nLa taille par défaut est 1280x1280. Les valeurs de taille documentées pour ce modèle exact sont 1280x1280, 1568x1056, 1056x1568, 1472x1088, 1088x1472, 1728x960 et 960x1728. Choisissez une taille paysage ou portrait adaptée à la destination avant d’envoyer le brief. Gardez ces chaînes exactes dans le champ size; elles indiquent des pixels plutôt qu’une résolution d’affichage nommée.\n\nGLM-Image prend en charge quality=hd, qui est son réglage de qualité par défaut. Le booléen watermark_enabled vaut true par défaut et contrôle le réglage de filigrane documenté. Si vous fournissez user_id, la longueur documentée est de 6 à 128 caractères. Ces paramètres décrivent différentes parties de la requête : size définit le cadre, quality sélectionne le réglage de rendu pris en charge et watermark_enabled sélectionne le comportement du filigrane.\n\nLa génération est synchrone : la réponse terminée contient created et un tableau data avec des URL d’images. Conservez chaque élément data renvoyé et récupérez chaque image que vous comptez utiliser. Évaluez la composition réelle, les détails du sujet et les éventuelles inscriptions rendues par rapport au brief, puis conservez l’image choisie avec son prompt et ses paramètres. Une réponse d’image terminée fournit directement le résultat; ce profil n’introduit pas de tâche de génération distincte à interroger.",
    "alias_of": null,
    "aliases": [],
    "author": "ZHIPU",
    "ctx": null,
    "formats": [
      "images"
    ],
    "id": "glm-image",
    "input": [
      "text"
    ],
    "kind": "image",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "The displayed rates estimate the cost before generation. The final charge is calculated from the cost recorded for the original generation. Measured output duration and forecast quantities are not the final billable quantity.",
          "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": "Retain the complete response, all actual results, original identifiers, usage and response headers.",
            "authentication": {
              "api_key_source": "AILOOT_API_KEY",
              "header": "Authorization: Bearer"
            },
            "example_body": {
              "model": "glm-image",
              "prompt": "A calm studio product photograph with a plain background."
            },
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets",
                  "query": {
                    "cursor": "actual returned next_cursor, when present",
                    "family": "image"
                  }
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "cancel_endpoint": null,
              "create": {
                "http": "POST",
                "path": "/v1/images/generations"
              },
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "owned_content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "Use the exact returned content_url. Refresh an expired link by reading the same existing asset."
              },
              "status": [],
              "unknown": "Preserve the original response, headers and X-Client-Request-ID. An uncertain outcome does not authorize another creation.",
              "unknown_no_replay": true
            },
            "outputs": {
              "all_results": "Retain every returned image and field. Use owned content_url values and actual asset_id records; refresh the same asset when a link expires.",
              "family": "image",
              "format": "JSON with all URL or base64 outputs"
            },
            "parameters": [
              {
                "default_known": false,
                "enum": [
                  "glm-image"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "default_known": false,
                "enum_known": false,
                "name": "prompt",
                "required": true,
                "type": "string"
              },
              {
                "default": "1280x1280",
                "default_known": true,
                "enum": [
                  "1280x1280",
                  "1568x1056",
                  "1056x1568",
                  "1472x1088",
                  "1088x1472",
                  "1728x960",
                  "960x1728"
                ],
                "enum_known": true,
                "name": "size",
                "required": false,
                "type": "string"
              },
              {
                "default_known": false,
                "enum_known": false,
                "name": "user_id",
                "required": false,
                "type": "string"
              },
              {
                "default_known": false,
                "enum": [
                  "hd",
                  "standard"
                ],
                "enum_known": true,
                "name": "quality",
                "required": false,
                "type": "string"
              },
              {
                "default": true,
                "default_known": true,
                "enum_known": false,
                "name": "watermark_enabled",
                "required": false,
                "type": "boolean"
              },
              {
                "default_known": false,
                "enum": [
                  false
                ],
                "enum_known": true,
                "name": "stream",
                "required": false,
                "type": "boolean"
              }
            ],
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "model": {
                  "enum": [
                    "glm-image"
                  ],
                  "type": "string"
                },
                "prompt": {
                  "type": "string"
                },
                "quality": {
                  "enum": [
                    "hd",
                    "standard"
                  ],
                  "type": "string"
                },
                "size": {
                  "default": "1280x1280",
                  "enum": [
                    "1280x1280",
                    "1568x1056",
                    "1056x1568",
                    "1472x1088",
                    "1088x1472",
                    "1728x960",
                    "960x1728"
                  ],
                  "type": "string"
                },
                "stream": {
                  "enum": [
                    false
                  ],
                  "type": "boolean"
                },
                "user_id": {
                  "type": "string"
                },
                "watermark_enabled": {
                  "default": true,
                  "type": "boolean"
                }
              },
              "required": [
                "model",
                "prompt"
              ],
              "type": "object"
            },
            "schema_template": {
              "body": {
                "model": "glm-image",
                "prompt": "A calm studio product photograph with a plain background."
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "conditions": [
              "Use stream:false or omit stream. The complete buffered JSON result contains all generated images."
            ],
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional": [
              "size",
              "user_id",
              "quality",
              "watermark_enabled",
              "stream"
            ],
            "required": [
              "model",
              "prompt"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets",
                "query": {
                  "cursor": "actual returned next_cursor, when present",
                  "family": "image"
                }
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "cancel_endpoint": null,
            "create": {
              "http": "POST",
              "path": "/v1/images/generations"
            },
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "owned_content": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}/content",
              "url_source": "Use the exact returned content_url. Refresh an expired link by reading the same existing asset."
            },
            "status": [],
            "unknown": "Preserve the original response, headers and X-Client-Request-ID. An uncertain outcome does not authorize another creation.",
            "unknown_no_replay": true
          },
          "method": {
            "http": "POST",
            "path": "/v1/images/generations"
          },
          "method_aliases": [],
          "output": {
            "all_results": "Retain every returned image and field. Use owned content_url values and actual asset_id records; refresh the same asset when a link expires.",
            "family": "image",
            "format": "JSON with all URL or base64 outputs"
          }
        },
        "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"
              }
            ]
          },
          {
            "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.09",
                "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.09",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"glm-image\", \"prompt\": \"A calm studio product photograph with a plain background.\"}')\n\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\n# Submit once. Retain the complete result, original identifiers and every response header.\n",
            "label": "curl · create once and retain the complete result",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "images",
        "http": "POST",
        "img_in": null,
        "img_out": null,
        "in": null,
        "input": [
          "text"
        ],
        "label": "Images",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "image"
        ],
        "path": "/v1/images/generations",
        "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",
          "cache_read_price": null,
          "cache_write_1h_price": null,
          "cache_write_price": null,
          "fast_multiplier": null,
          "flex_multiplier": null,
          "image_input_price": null,
          "image_output_price": null,
          "input_price": null,
          "intervals": null,
          "max_reasoning_effort_multiplier": null,
          "output_price": null,
          "per_request_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"
              }
            ]
          },
          {
            "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.09",
                "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.09",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "request_model_id": "glm-image",
        "route_label": "Ultra",
        "status_reads": [],
        "tiers": [],
        "unit": "image",
        "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.09",
            "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.09",
            "native_quantity": 1,
            "public_unit_label": "estimate before generation",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "request_estimate"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "glm-image",
        "request_model_id": "glm-image",
        "route_label": "Ultra"
      }
    ],
    "name": "glm-image",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "short": "GLM-Image transforme un brief visuel écrit en images. Utilisez le sélecteur exact glm-image pour des illustrations, des concepts de scène et des compositions de produits, en choisissant parmi ses tailles carrées, paysage et portrait documentées. Ce profil accepte du texte et renvoie les images dans une réponse synchrone."
  },
  "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": "GLM-Image transforme un brief visuel écrit en images. Utilisez le sélecteur exact glm-image pour des illustrations, des concepts de scène et des compositions de produits, en choisissant parmi ses tailles carrées, paysage et portrait documentées. Ce profil accepte du texte et renvoie les images dans une réponse synchrone.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "e2515171ce71db3de3a11ba32b5eb28cf5dc604e82c5309f34ef8f7b8316c71f",
    "renderer_sha256": "98cb81b9c4ef4923c22e586170e7cdf67056351148a1666fb03dd6a4a26716a3"
  },
  "sourceRevision": "bd86618616d211c09bef2d01185a952a47eab1f4c948cc5301328666ea2439d5"
}
