{
  "aboutHtml": "<p>Veo 3.1 ist Googles Videogenerierungsmodell zur Erstellung einer kurzen audiovisuellen Szene aus Text oder einem bildgestützten Briefing. Sein Produktionsprofil unterstützt Text-to-Video, Image-to-Video und gesteuerte Erstellung mit erstem/letztem Einzelbild, mit generiertem Ton, Asset-Referenzen und separatem Fortsetzungsablauf. Nutzen Sie es zur Entwicklung eines filmischen Konzepts, einer kurzen Produktgeschichte oder eines visuellen Abschnitts mit definierter Szene, Handlung und Hörerfahrung.</p><p>Beschreiben Sie zuerst Motiv und sichtbares Ereignis. Legen Sie Umgebung, Tageszeit und Licht fest und bestimmen Sie danach Kamerablickwinkel oder -bewegung und gewünschten Bildstil. Ein eigenes Szenenbriefing könnte ein Glasgefäss auf einer dunklen Studiofläche zeigen, mit einer langsamen seitlichen Fahrt, die eine Reflexion enthüllt, begleitet von einem sanften Umgebungsgeräusch. Jede Anweisung liefert ein sichtbares oder hörbares Merkmal, das im fertigen Ergebnis beurteilt werden kann.</p><p>Googles Prompt-Rahmen behandelt Motiv, Handlung, Szene, Kamera und Ästhetik als separate Briefingteile. Nutzen Sie die für die Einstellung hilfreichen Teile, statt jeden möglichen Deskriptor hinzuzufügen. Schreiben Sie Anweisungen für das dokumentierte Prompt-Profil auf Englisch. Hat die Szene mehrere Handlungen, benennen Sie deren Beziehung und passen Sie sie an einen kurzen Clip an, damit Enthüllung oder Reaktion verständlich bleiben.</p><p>Ein Startbild legt Anfangserscheinung und -komposition fest. Nutzen Sie es, wenn Figur, Produkt oder Umgebung bereits als visuelles Material vorliegen, und beschreiben Sie die daraus entstehende Bewegung. Ein letztes Einzelbild ergänzt die Zielkomposition für den Schluss. Bereiten Sie Begrenzungsbilder mit plausiblem Übergang und erhaltenen Identifikationsdetails des Hauptmotivs vor und prüfen Sie nach der Generierung die Bewegung dazwischen.</p><p>Asset-Referenzen haben einen anderen Zweck: Sie führen die Erscheinung einer Figur oder eines Objekts in einer neu generierten Szene, während Begrenzungsbilder konkrete Momente darin definieren. Wählen Sie Referenzen mit den wichtigen Bildmerkmalen und machen Sie die Rolle jedes Materials im Prompt deutlich. Die Reference-Image-to-Video-Spezifikation des Produktionsmodells verwendet achtsekündige Ausgabe für diesen Referenzablauf, getrennt von der gewöhnlichen textgestützten Dauerwahl.</p><p>Das gewöhnliche Produktionsprofil des Herstellers generiert Clips mit vier, sechs oder acht Sekunden und 24 Bildern pro Sekunde. Es nennt Querformat 16:9 und Hochformat 9:16, bis zu vier Videoausgaben pro Prompt und Auflösungen von 720p, 1080p und 4K. Das Ausgabevideoformat ist MP4. Seine bildgestützte Spezifikation akzeptiert JPEG oder PNG, nennt maximal 20 MB pro Eingabebild und unterstützt 720p-/1080p-Eingabekonfigurationen. Wählen Sie das Ausgabeprofil passend zur vorgesehenen Platzierung und halten Sie die Bildkomposition in dieser Grösse lesbar.</p><p>Nativer Ton kann die sichtbare Szene begleiten. Geben Sie gesprochene Sätze, Atmosphäre und Geräuscheffekte als Teile desselben Briefings an und benennen Sie das jeweils erzeugende Motiv oder Ereignis. Eine Dialoganweisung und eine Kameraanweisung beantworten verschiedene Fragen: Die eine bestimmt die Darbietung, die andere, wie das Publikum sie sieht. Halten Sie den Text innerhalb der nutzbaren Sprechzeit des Clips und prüfen Sie Verständlichkeit sowie Bezug des Tons zur Handlung.</p><p>Für eine Fortsetzung bietet der Hersteller einen separaten Videoverlängerungsablauf. Beginnen Sie mit einem geeigneten generierten Quellclip und beschreiben Sie das nächste sichtbare Ereignis oder die Szenenänderung. Bewahren Sie Original und Fortsetzungsabschnitt auf, damit sich ihr Übergang hinsichtlich Erscheinung, Bewegung und Ton prüfen lässt. Gewöhnliche Dauer- und Auflösungsoptionen für neue Generierung dürfen nicht als universeller Vertrag für jede Verlängerungsoperation behandelt werden.</p><p>Eine negative Beschreibung kann Ausschlüsse auf die visuellen Aufgabenanforderungen konzentrieren. Halten Sie bei einer Reihe von Produktvarianten Motiv und Komposition stabil und ändern Sie eine kreative Vorgabe, etwa Beleuchtung oder Kameraabstand. Halten Sie Prompt, Referenzen und gewählte Einstellungen zusammen mit dem Ergebnis fest. So lässt sich ein brauchbarer kreativer Unterschied statt einer Sammlung unzusammenhängender Generierungen vergleichen.</p><p>Das reguläre Veo-3.1-Produktionsprofil und Veo 3.1 Fast haben unterschiedliche Auflösungsprofile. Fast nennt 720p und 1080p, reguläres 3.1 zusätzlich 4K. Ordnen Sie die gewählte Edition dem Ergebnis zu, ohne eine Produktionsmodellkennung stillschweigend durch ein älteres Preview-Profil oder eine andere Veo-Generation zu ersetzen. Motiverscheinung und unterstützte Operation hängen beide vom gewählten Ablauf ab.</p><p>Die Generierung ist eine Operation, deren abgeschlossenes Ergebnis Videodateien zur Wiedergabe und späteren Bearbeitung bereitstellt. Bewahren Sie zurückgegebene Dateien mit Quellbildern, Referenzmaterial und Briefing auf und erhalten Sie mitgelieferte Herkunftsinformationen. Prüfen Sie jede tatsächliche Ausgabe auf Motiverscheinung, Handlung, Bildausschnitt, Ton und Schlusskomposition. Nutzen Sie den gewählten Clip als Produktionsbaustein und ergänzen Sie Titel, Übergänge oder weitere Abschlussarbeiten im umgebenden Schnitt.</p>",
  "aboutText": "Veo 3.1 ist Googles Videogenerierungsmodell zur Erstellung einer kurzen audiovisuellen Szene aus Text oder einem bildgestützten Briefing. Sein Produktionsprofil unterstützt Text-to-Video, Image-to-Video und gesteuerte Erstellung mit erstem/letztem Einzelbild, mit generiertem Ton, Asset-Referenzen und separatem Fortsetzungsablauf. Nutzen Sie es zur Entwicklung eines filmischen Konzepts, einer kurzen Produktgeschichte oder eines visuellen Abschnitts mit definierter Szene, Handlung und Hörerfahrung.\n\nBeschreiben Sie zuerst Motiv und sichtbares Ereignis. Legen Sie Umgebung, Tageszeit und Licht fest und bestimmen Sie danach Kamerablickwinkel oder -bewegung und gewünschten Bildstil. Ein eigenes Szenenbriefing könnte ein Glasgefäss auf einer dunklen Studiofläche zeigen, mit einer langsamen seitlichen Fahrt, die eine Reflexion enthüllt, begleitet von einem sanften Umgebungsgeräusch. Jede Anweisung liefert ein sichtbares oder hörbares Merkmal, das im fertigen Ergebnis beurteilt werden kann.\n\nGoogles Prompt-Rahmen behandelt Motiv, Handlung, Szene, Kamera und Ästhetik als separate Briefingteile. Nutzen Sie die für die Einstellung hilfreichen Teile, statt jeden möglichen Deskriptor hinzuzufügen. Schreiben Sie Anweisungen für das dokumentierte Prompt-Profil auf Englisch. Hat die Szene mehrere Handlungen, benennen Sie deren Beziehung und passen Sie sie an einen kurzen Clip an, damit Enthüllung oder Reaktion verständlich bleiben.\n\nEin Startbild legt Anfangserscheinung und -komposition fest. Nutzen Sie es, wenn Figur, Produkt oder Umgebung bereits als visuelles Material vorliegen, und beschreiben Sie die daraus entstehende Bewegung. Ein letztes Einzelbild ergänzt die Zielkomposition für den Schluss. Bereiten Sie Begrenzungsbilder mit plausiblem Übergang und erhaltenen Identifikationsdetails des Hauptmotivs vor und prüfen Sie nach der Generierung die Bewegung dazwischen.\n\nAsset-Referenzen haben einen anderen Zweck: Sie führen die Erscheinung einer Figur oder eines Objekts in einer neu generierten Szene, während Begrenzungsbilder konkrete Momente darin definieren. Wählen Sie Referenzen mit den wichtigen Bildmerkmalen und machen Sie die Rolle jedes Materials im Prompt deutlich. Die Reference-Image-to-Video-Spezifikation des Produktionsmodells verwendet achtsekündige Ausgabe für diesen Referenzablauf, getrennt von der gewöhnlichen textgestützten Dauerwahl.\n\nDas gewöhnliche Produktionsprofil des Herstellers generiert Clips mit vier, sechs oder acht Sekunden und 24 Bildern pro Sekunde. Es nennt Querformat 16:9 und Hochformat 9:16, bis zu vier Videoausgaben pro Prompt und Auflösungen von 720p, 1080p und 4K. Das Ausgabevideoformat ist MP4. Seine bildgestützte Spezifikation akzeptiert JPEG oder PNG, nennt maximal 20 MB pro Eingabebild und unterstützt 720p-/1080p-Eingabekonfigurationen. Wählen Sie das Ausgabeprofil passend zur vorgesehenen Platzierung und halten Sie die Bildkomposition in dieser Grösse lesbar.\n\nNativer Ton kann die sichtbare Szene begleiten. Geben Sie gesprochene Sätze, Atmosphäre und Geräuscheffekte als Teile desselben Briefings an und benennen Sie das jeweils erzeugende Motiv oder Ereignis. Eine Dialoganweisung und eine Kameraanweisung beantworten verschiedene Fragen: Die eine bestimmt die Darbietung, die andere, wie das Publikum sie sieht. Halten Sie den Text innerhalb der nutzbaren Sprechzeit des Clips und prüfen Sie Verständlichkeit sowie Bezug des Tons zur Handlung.\n\nFür eine Fortsetzung bietet der Hersteller einen separaten Videoverlängerungsablauf. Beginnen Sie mit einem geeigneten generierten Quellclip und beschreiben Sie das nächste sichtbare Ereignis oder die Szenenänderung. Bewahren Sie Original und Fortsetzungsabschnitt auf, damit sich ihr Übergang hinsichtlich Erscheinung, Bewegung und Ton prüfen lässt. Gewöhnliche Dauer- und Auflösungsoptionen für neue Generierung dürfen nicht als universeller Vertrag für jede Verlängerungsoperation behandelt werden.\n\nEine negative Beschreibung kann Ausschlüsse auf die visuellen Aufgabenanforderungen konzentrieren. Halten Sie bei einer Reihe von Produktvarianten Motiv und Komposition stabil und ändern Sie eine kreative Vorgabe, etwa Beleuchtung oder Kameraabstand. Halten Sie Prompt, Referenzen und gewählte Einstellungen zusammen mit dem Ergebnis fest. So lässt sich ein brauchbarer kreativer Unterschied statt einer Sammlung unzusammenhängender Generierungen vergleichen.\n\nDas reguläre Veo-3.1-Produktionsprofil und Veo 3.1 Fast haben unterschiedliche Auflösungsprofile. Fast nennt 720p und 1080p, reguläres 3.1 zusätzlich 4K. Ordnen Sie die gewählte Edition dem Ergebnis zu, ohne eine Produktionsmodellkennung stillschweigend durch ein älteres Preview-Profil oder eine andere Veo-Generation zu ersetzen. Motiverscheinung und unterstützte Operation hängen beide vom gewählten Ablauf ab.\n\nDie Generierung ist eine Operation, deren abgeschlossenes Ergebnis Videodateien zur Wiedergabe und späteren Bearbeitung bereitstellt. Bewahren Sie zurückgegebene Dateien mit Quellbildern, Referenzmaterial und Briefing auf und erhalten Sie mitgelieferte Herkunftsinformationen. Prüfen Sie jede tatsächliche Ausgabe auf Motiverscheinung, Handlung, Bildausschnitt, Ton und Schlusskomposition. Nutzen Sie den gewählten Clip als Produktionsbaustein und ergänzen Sie Titel, Übergänge oder weitere Abschlussarbeiten im umgebenden Schnitt.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "3a459496f512792eff0568c51bd03ae9840633fabe55979358bd1ea7d5f7b772",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "de-ch",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">G</span><h2 id=\"sheet-title\">Google: Veo 3.1</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Schliessen\">×</button></div><div class=\"idline\"><span>Google /</span><code>google/veo-3.1</code><button type=\"button\" id=\"copy-id\">ID kopieren</button></div><nav class=\"card-jump-nav\" aria-label=\"Bereiche der Modellkarte\"><button type=\"button\" data-card-jump=\"overview\">Einstieg</button><button type=\"button\" data-card-jump=\"methods\">Eingaben und Methoden</button><button type=\"button\" data-card-jump=\"pricing\">Tarife</button><button type=\"button\" data-card-jump=\"examples\">Beispiele</button><button type=\"button\" data-card-jump=\"results\">Ergebnisse</button><button type=\"button\" data-card-jump=\"aliases\">Aliasnamen</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"API-Methoden\"><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|google%2Fveo-3.1\">Video</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\">Einstieg</h3><p class=\"mdesc-full\">Veo 3.1 ist Googles Videomodell für text- und bildgestützte Szenen mit generiertem Ton, vorgegebenen Begrenzungsbildern und Referenzmaterial. Sein Produktionsprofil bietet Clips mit vier, sechs oder acht Sekunden bei 24 fps und Ausgabeoptionen von 720p, 1080p und 4K.</p><dl class=\"card-io\" data-card-io><div><dt>Zulässige Eingaben</dt><dd>Text</dd></div><div><dt>Ergebnisse</dt><dd>Video</dd></div></dl><details class=\"card-about\"><summary>Über das Modell</summary><p class=\"note-s\" data-model-method-boundary>Diese Beschreibung erläutert die Fähigkeiten des Modells. Die über Ailoot verfügbaren Eingaben, Ausgaben und Optionen sind unten für die ausgewählte Methode aufgeführt.</p><div class=\"mabout\" id=\"m-about\"><p>Veo 3.1 ist Googles Videogenerierungsmodell zur Erstellung einer kurzen audiovisuellen Szene aus Text oder einem bildgestützten Briefing. Sein Produktionsprofil unterstützt Text-to-Video, Image-to-Video und gesteuerte Erstellung mit erstem/letztem Einzelbild, mit generiertem Ton, Asset-Referenzen und separatem Fortsetzungsablauf. Nutzen Sie es zur Entwicklung eines filmischen Konzepts, einer kurzen Produktgeschichte oder eines visuellen Abschnitts mit definierter Szene, Handlung und Hörerfahrung.</p><p>Beschreiben Sie zuerst Motiv und sichtbares Ereignis. Legen Sie Umgebung, Tageszeit und Licht fest und bestimmen Sie danach Kamerablickwinkel oder -bewegung und gewünschten Bildstil. Ein eigenes Szenenbriefing könnte ein Glasgefäss auf einer dunklen Studiofläche zeigen, mit einer langsamen seitlichen Fahrt, die eine Reflexion enthüllt, begleitet von einem sanften Umgebungsgeräusch. Jede Anweisung liefert ein sichtbares oder hörbares Merkmal, das im fertigen Ergebnis beurteilt werden kann.</p><p>Googles Prompt-Rahmen behandelt Motiv, Handlung, Szene, Kamera und Ästhetik als separate Briefingteile. Nutzen Sie die für die Einstellung hilfreichen Teile, statt jeden möglichen Deskriptor hinzuzufügen. Schreiben Sie Anweisungen für das dokumentierte Prompt-Profil auf Englisch. Hat die Szene mehrere Handlungen, benennen Sie deren Beziehung und passen Sie sie an einen kurzen Clip an, damit Enthüllung oder Reaktion verständlich bleiben.</p><p>Ein Startbild legt Anfangserscheinung und -komposition fest. Nutzen Sie es, wenn Figur, Produkt oder Umgebung bereits als visuelles Material vorliegen, und beschreiben Sie die daraus entstehende Bewegung. Ein letztes Einzelbild ergänzt die Zielkomposition für den Schluss. Bereiten Sie Begrenzungsbilder mit plausiblem Übergang und erhaltenen Identifikationsdetails des Hauptmotivs vor und prüfen Sie nach der Generierung die Bewegung dazwischen.</p><p>Asset-Referenzen haben einen anderen Zweck: Sie führen die Erscheinung einer Figur oder eines Objekts in einer neu generierten Szene, während Begrenzungsbilder konkrete Momente darin definieren. Wählen Sie Referenzen mit den wichtigen Bildmerkmalen und machen Sie die Rolle jedes Materials im Prompt deutlich. Die Reference-Image-to-Video-Spezifikation des Produktionsmodells verwendet achtsekündige Ausgabe für diesen Referenzablauf, getrennt von der gewöhnlichen textgestützten Dauerwahl.</p><p>Das gewöhnliche Produktionsprofil des Herstellers generiert Clips mit vier, sechs oder acht Sekunden und 24 Bildern pro Sekunde. Es nennt Querformat 16:9 und Hochformat 9:16, bis zu vier Videoausgaben pro Prompt und Auflösungen von 720p, 1080p und 4K. Das Ausgabevideoformat ist MP4. Seine bildgestützte Spezifikation akzeptiert JPEG oder PNG, nennt maximal 20 MB pro Eingabebild und unterstützt 720p-/1080p-Eingabekonfigurationen. Wählen Sie das Ausgabeprofil passend zur vorgesehenen Platzierung und halten Sie die Bildkomposition in dieser Grösse lesbar.</p><p>Nativer Ton kann die sichtbare Szene begleiten. Geben Sie gesprochene Sätze, Atmosphäre und Geräuscheffekte als Teile desselben Briefings an und benennen Sie das jeweils erzeugende Motiv oder Ereignis. Eine Dialoganweisung und eine Kameraanweisung beantworten verschiedene Fragen: Die eine bestimmt die Darbietung, die andere, wie das Publikum sie sieht. Halten Sie den Text innerhalb der nutzbaren Sprechzeit des Clips und prüfen Sie Verständlichkeit sowie Bezug des Tons zur Handlung.</p><p>Für eine Fortsetzung bietet der Hersteller einen separaten Videoverlängerungsablauf. Beginnen Sie mit einem geeigneten generierten Quellclip und beschreiben Sie das nächste sichtbare Ereignis oder die Szenenänderung. Bewahren Sie Original und Fortsetzungsabschnitt auf, damit sich ihr Übergang hinsichtlich Erscheinung, Bewegung und Ton prüfen lässt. Gewöhnliche Dauer- und Auflösungsoptionen für neue Generierung dürfen nicht als universeller Vertrag für jede Verlängerungsoperation behandelt werden.</p><p>Eine negative Beschreibung kann Ausschlüsse auf die visuellen Aufgabenanforderungen konzentrieren. Halten Sie bei einer Reihe von Produktvarianten Motiv und Komposition stabil und ändern Sie eine kreative Vorgabe, etwa Beleuchtung oder Kameraabstand. Halten Sie Prompt, Referenzen und gewählte Einstellungen zusammen mit dem Ergebnis fest. So lässt sich ein brauchbarer kreativer Unterschied statt einer Sammlung unzusammenhängender Generierungen vergleichen.</p><p>Das reguläre Veo-3.1-Produktionsprofil und Veo 3.1 Fast haben unterschiedliche Auflösungsprofile. Fast nennt 720p und 1080p, reguläres 3.1 zusätzlich 4K. Ordnen Sie die gewählte Edition dem Ergebnis zu, ohne eine Produktionsmodellkennung stillschweigend durch ein älteres Preview-Profil oder eine andere Veo-Generation zu ersetzen. Motiverscheinung und unterstützte Operation hängen beide vom gewählten Ablauf ab.</p><p>Die Generierung ist eine Operation, deren abgeschlossenes Ergebnis Videodateien zur Wiedergabe und späteren Bearbeitung bereitstellt. Bewahren Sie zurückgegebene Dateien mit Quellbildern, Referenzmaterial und Briefing auf und erhalten Sie mitgelieferte Herkunftsinformationen. Prüfen Sie jede tatsächliche Ausgabe auf Motiverscheinung, Handlung, Bildausschnitt, Ton und Schlusskomposition. Nutzen Sie den gewählten Clip als Produktionsbaustein und ergänzen Sie Titel, Übergänge oder weitere Abschlussarbeiten im umgebenden Schnitt.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">In Ailoot verfügbar · Eingaben und Methoden</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Video</b> <code>POST /v1/videos</code></summary><dl class=\"method-capabilities\"><div><dt>Eingabe</dt><dd><code>text</code></dd></div><div><dt>Ausgabe</dt><dd><code>video</code></dd></div><div><dt>Ausgabeformat</dt><dd>mp4</dd></div><div><dt>Ausgabeanzahl</dt><dd>Bis zu 4 Ausgabes</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Feld</th><th>Typ</th><th>Anforderung</th><th>Werte und Limits</th><th>Standard</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Anforderung\"><span class=\"card-cell-label\">Anforderung</span>Erforderlich</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span><div>google/veo-3.1</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">prompt</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Anforderung\"><span class=\"card-cell-label\">Anforderung</span>Erforderlich</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span><div>Maximale Anzahl UTF-8-Bytes: 10'000</div><div>Mindestens ein Zeichen ausser Leerraum erforderlich: Ja</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">duration</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>integer</code></td><td data-cell-label=\"Anforderung\"><span class=\"card-cell-label\">Anforderung</span>Erforderlich</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span><div>4, 6, 8</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">resolution</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Anforderung\"><span class=\"card-cell-label\">Anforderung</span>Erforderlich</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span><div>720p</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">aspect_ratio</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>string</code></td><td data-cell-label=\"Anforderung\"><span class=\"card-cell-label\">Anforderung</span>Erforderlich</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span><div>16:9, 9:16</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">generate_audio</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>boolean</code></td><td data-cell-label=\"Anforderung\"><span class=\"card-cell-label\">Anforderung</span>Erforderlich</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span><div>false, true</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Kombinationen von Eingabematerialien</summary><p class=\"note-s\"><b>Text zu Video</b> · Erforderlich: prompt</p></details><details class=\"note-s\" data-method-contract><summary>Methodenparameter und Lebenszyklus</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Vertrag</th></tr></thead><tbody><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>content_type</code></th><td data-cell-label=\"Vertrag\"><span class=\"card-cell-label\">Vertrag</span>application/json</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>required</code></th><td data-cell-label=\"Vertrag\"><span class=\"card-cell-label\">Vertrag</span>model, prompt, duration, resolution, aspect_ratio, generate_audio</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>additional_properties</code></th><td data-cell-label=\"Vertrag\"><span class=\"card-cell-label\">Vertrag</span>false</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>parameters</code></th><td data-cell-label=\"Vertrag\"><span class=\"card-cell-label\">Vertrag</span>{&quot;name&quot;:&quot;model&quot;,&quot;type&quot;:&quot;string&quot;,&quot;required&quot;:true,&quot;enum&quot;:[&quot;google/veo-3.1&quot;]}, {&quot;name&quot;:&quot;prompt&quot;,&quot;type&quot;:&quot;string&quot;,&quot;required&quot;:true,&quot;non_whitespace&quot;:true,&quot;max_utf8_bytes&quot;:10000}, {&quot;name&quot;:&quot;duration&quot;,&quot;type&quot;:&quot;integer&quot;,&quot;required&quot;:true,&quot;enum&quot;:[4,6,8]}, {&quot;name&quot;:&quot;resolution&quot;,&quot;type&quot;:&quot;string&quot;,&quot;required&quot;:true,&quot;enum&quot;:[&quot;720p&quot;]}, {&quot;name&quot;:&quot;aspect_ratio&quot;,&quot;type&quot;:&quot;string&quot;,&quot;required&quot;:true,&quot;enum&quot;:[&quot;16:9&quot;,&quot;9:16&quot;]}, {&quot;name&quot;:&quot;generate_audio&quot;,&quot;type&quot;:&quot;boolean&quot;,&quot;required&quot;:true,&quot;enum&quot;:[false,true]}</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>material_types</code></th><td data-cell-label=\"Vertrag\"><span class=\"card-cell-label\">Vertrag</span>text</td></tr></tbody></table></div><p>Methodenaliasnamen: <code>/v1/videos/generations</code>, <code>/videos</code>, <code>/videos/generations</code></p><p>Lebenszyklus: <code>submit_once_poll_original</code></p><p class=\"note-s\"><code>GET /v1/videos/{request_id}</code></p><p class=\"note-s\"><code>GET /v1/videos/generations/{request_id}</code></p><p class=\"note-s\"><code>GET /v1/videos/{request_id}/content</code></p><p class=\"note-s\"><code>GET /v1/videos/generations/{request_id}/content</code></p><p class=\"note-s\">Bewahren Sie die vollständige Antwort und die ursprünglich zurückgegebenen IDs auf.</p><p class=\"note-s\">Reichen Sie eine Erstellung mit unbekanntem Ausgang niemals erneut ein.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Tarife</h3><div class=\"card-result-process\" data-billing-basis><h5>So wird die endgültige Gebühr berechnet</h5><p class=\"note-s\">Die angezeigten Tarife dienen zur Kostenschätzung vor der Generierung. Der endgültige Betrag wird aus den für die ursprüngliche Generierung erfassten Kosten berechnet. Die gemessene Ausgabedauer und prognostizierte Mengen sind nicht die endgültige abrechenbare Menge.</p></div><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Tarifangaben erweitern die Anfrageoptionen nicht. Unterstützte Parameter stehen bei der ausgewählten Methode.</p><dl data-price-conditions><dt>Schnellmodus</dt><dd>Nicht angegeben <span class=\"note-s\">Wenn der Schnellmodus ausgewählt ist</span></dd><dt>Flex-Modus</dt><dd>Nicht angegeben <span class=\"note-s\">Wenn der Modus flex ausgewählt ist</span></dd><dt>Maximaler Denkaufwand</dt><dd>Nicht angegeben <span class=\"note-s\">Wenn beim maximalen Denkaufwand die Standardanpassung (default) verwendet wird</span></dd></dl></div><div data-declared-tariff-pricing><h4>Geschätzte Tarife zum Vergleich</h4><h4>Preise nach Konfiguration</h4><p class=\"note-s\">Ordnen Sie jede Gebühr den angezeigten Bedingungen zu. Verwenden Sie für jede Gruppe alternativer Konfigurationen einen Tarif.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfiguration</th><th>Tarifstaffel</th><th>Prognostizierte Menge</th><th>Audio generieren</th><th>Auflösung</th><th>Abrechnungseinheit</th><th>Abrechnungsbedingungen</th><th>Gebühr</th></tr></thead><tbody><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Token-Basistarife</th><td data-cell-label=\"Tarifstaffel\"><span class=\"card-cell-label\">Tarifstaffel</span>Grundtarif</td><td data-cell-label=\"Prognostizierte Menge\"><span class=\"card-cell-label\">Prognostizierte Menge</span>—</td><td data-cell-label=\"Audio generieren\"><span class=\"card-cell-label\">Audio generieren</span>—</td><td data-cell-label=\"Auflösung\"><span class=\"card-cell-label\">Auflösung</span>—</td><td data-cell-label=\"Abrechnungseinheit\"><span class=\"card-cell-label\">Abrechnungseinheit</span>—</td><td data-cell-label=\"Abrechnungsbedingungen\"><span class=\"card-cell-label\">Abrechnungsbedingungen</span>—</td><td data-cell-label=\"Gebühr\"><span class=\"card-cell-label\">Gebühr</span><div><span>Eingabe · Eingabetoken · Schätzung nur zum Vergleich</span> <b>—</b> <span class=\"price-unit\">/ 1K Tokens</span></div><div><span>Ausgabe · Ausgabetoken · Schätzung nur zum Vergleich</span> <b>—</b> <span class=\"price-unit\">/ 1K Tokens</span></div><div><span>Eingabe · Cache lesen · Schätzung nur zum Vergleich</span> <b>—</b> <span class=\"price-unit\">/ 1K Tokens</span></div><div><span>Eingabe · Cache schreiben · Schätzung nur zum Vergleich</span> <b>—</b> <span class=\"price-unit\">/ 1K Tokens</span></div><div><span>Eingabe · Cache schreiben, 1 Stunde · Schätzung nur zum Vergleich</span> <b>—</b> <span class=\"price-unit\">/ 1K Tokens</span></div></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Ultra</th><td data-cell-label=\"Tarifstaffel\"><span class=\"card-cell-label\">Tarifstaffel</span>—</td><td data-cell-label=\"Prognostizierte Menge\"><span class=\"card-cell-label\">Prognostizierte Menge</span>Angeforderte Konfiguration; nur eine Schätzung.</td><td data-cell-label=\"Audio generieren\"><span class=\"card-cell-label\">Audio generieren</span>Mit Audio</td><td data-cell-label=\"Auflösung\"><span class=\"card-cell-label\">Auflösung</span>720p</td><td data-cell-label=\"Abrechnungseinheit\"><span class=\"card-cell-label\">Abrechnungseinheit</span>pro Sekunde Ausgabevideo</td><td data-cell-label=\"Abrechnungsbedingungen\"><span class=\"card-cell-label\">Abrechnungsbedingungen</span>—</td><td data-cell-label=\"Gebühr\"><span class=\"card-cell-label\">Gebühr</span><div><span>Ausgabe · Geschätzte Ausgabevideo-Sekunde · Schätzung nur zum Vergleich</span> <b>$0.8</b> <span class=\"price-unit\">pro Sekunde Ausgabevideo</span></div><p class=\"note-s\">Der angezeigte Preis dient zur Kostenschätzung vor der Erzeugung. Die endgültige Abbuchung wird anhand der für die ursprüngliche Erzeugung erfassten Kosten berechnet. Die physische Videodauer ist nicht die abrechenbare Menge.</p></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Videopreis</th><td data-cell-label=\"Tarifstaffel\"><span class=\"card-cell-label\">Tarifstaffel</span>—</td><td data-cell-label=\"Prognostizierte Menge\"><span class=\"card-cell-label\">Prognostizierte Menge</span>—</td><td data-cell-label=\"Audio generieren\"><span class=\"card-cell-label\">Audio generieren</span>—</td><td data-cell-label=\"Auflösung\"><span class=\"card-cell-label\">Auflösung</span>—</td><td data-cell-label=\"Abrechnungseinheit\"><span class=\"card-cell-label\">Abrechnungseinheit</span>pro Videosekunde</td><td data-cell-label=\"Abrechnungsbedingungen\"><span class=\"card-cell-label\">Abrechnungsbedingungen</span>Audio: with_audio; Auflösung: 4k</td><td data-cell-label=\"Gebühr\"><span class=\"card-cell-label\">Gebühr</span><div><span>Ausgabe · Videopreis · Schätzung nur zum Vergleich</span> <b>$1.2</b> <span class=\"price-unit\">pro Videosekunde</span></div></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Ultra</th><td data-cell-label=\"Tarifstaffel\"><span class=\"card-cell-label\">Tarifstaffel</span>—</td><td data-cell-label=\"Prognostizierte Menge\"><span class=\"card-cell-label\">Prognostizierte Menge</span>Angeforderte Konfiguration; nur eine Schätzung.</td><td data-cell-label=\"Audio generieren\"><span class=\"card-cell-label\">Audio generieren</span>Ohne Audio</td><td data-cell-label=\"Auflösung\"><span class=\"card-cell-label\">Auflösung</span>720p</td><td data-cell-label=\"Abrechnungseinheit\"><span class=\"card-cell-label\">Abrechnungseinheit</span>pro Sekunde Ausgabevideo</td><td data-cell-label=\"Abrechnungsbedingungen\"><span class=\"card-cell-label\">Abrechnungsbedingungen</span>—</td><td data-cell-label=\"Gebühr\"><span class=\"card-cell-label\">Gebühr</span><div><span>Ausgabe · Geschätzte Ausgabevideo-Sekunde · Schätzung nur zum Vergleich</span> <b>$0.4</b> <span class=\"price-unit\">pro Sekunde Ausgabevideo</span></div><p class=\"note-s\">Der angezeigte Preis dient zur Kostenschätzung vor der Erzeugung. Die endgültige Abbuchung wird anhand der für die ursprüngliche Erzeugung erfassten Kosten berechnet. Die physische Videodauer ist nicht die abrechenbare Menge.</p></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Videopreis</th><td data-cell-label=\"Tarifstaffel\"><span class=\"card-cell-label\">Tarifstaffel</span>—</td><td data-cell-label=\"Prognostizierte Menge\"><span class=\"card-cell-label\">Prognostizierte Menge</span>—</td><td data-cell-label=\"Audio generieren\"><span class=\"card-cell-label\">Audio generieren</span>—</td><td data-cell-label=\"Auflösung\"><span class=\"card-cell-label\">Auflösung</span>—</td><td data-cell-label=\"Abrechnungseinheit\"><span class=\"card-cell-label\">Abrechnungseinheit</span>pro Videosekunde</td><td data-cell-label=\"Abrechnungsbedingungen\"><span class=\"card-cell-label\">Abrechnungsbedingungen</span>Audio: without_audio; Auflösung: 4k</td><td data-cell-label=\"Gebühr\"><span class=\"card-cell-label\">Gebühr</span><div><span>Ausgabe · Videopreis · Schätzung nur zum Vergleich</span> <b>$0.8</b> <span class=\"price-unit\">pro Videosekunde</span></div></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Geschätzte Erzeugungskosten</th><td data-cell-label=\"Tarifstaffel\"><span class=\"card-cell-label\">Tarifstaffel</span>—</td><td data-cell-label=\"Prognostizierte Menge\"><span class=\"card-cell-label\">Prognostizierte Menge</span>Schätzung für eine Generierung</td><td data-cell-label=\"Audio generieren\"><span class=\"card-cell-label\">Audio generieren</span>—</td><td data-cell-label=\"Auflösung\"><span class=\"card-cell-label\">Auflösung</span>—</td><td data-cell-label=\"Abrechnungseinheit\"><span class=\"card-cell-label\">Abrechnungseinheit</span>—</td><td data-cell-label=\"Abrechnungsbedingungen\"><span class=\"card-cell-label\">Abrechnungsbedingungen</span>—</td><td data-cell-label=\"Gebühr\"><span class=\"card-cell-label\">Gebühr</span><div><span>Ausgabe · Geschätzte Generierungskosten · Schätzung nur zum Vergleich</span> <b>$1.6</b> <span class=\"price-unit\">Schätzung vor der Generierung</span></div><p class=\"note-s\">Diese Schätzung ist weder eine zusätzliche Gebühr noch ein fester Tarif für die abgeschlossene Generierung.</p></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot reserviert vor einer Anfrage einen geschätzten Betrag. Nach dem Ergebnis rechnet Ailoot die endgültige Gebühr anhand des gemessenen Verbrauchs ab. Bei Streaming erfolgt die Abrechnung anhand des abschliessenden Verbrauchsdatensatzes. <a href=\"/docs/de-ch/billing/reserve/\">So funktionieren Reservierung und Abrechnung →</a></p><div data-declared-reference-pricing><h4>Details zum Referenztarif</h4><p class=\"note-s\">Referenztarifstaffeln auf Modellebene ändern weder Methodenauswahl noch Kostenvoranschläge oder Gebühren. Für die aktive Abrechnung gelten die Tarife der ausgewählten Ailoot-Methode.</p><details class=\"card-price-reference\" data-declared-reference-group data-client-selectable=\"false\"><summary>Preisreferenzen für Videokonfigurationen</summary><h4>Preise nach Konfiguration</h4><p class=\"note-s\">Ordnen Sie jede Gebühr den angezeigten Bedingungen zu. Verwenden Sie für jede Gruppe alternativer Konfigurationen einen Tarif.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Konfiguration</th><th>Abrechnungsbedingungen</th><th>Gebühr</th></tr></thead><tbody><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Videopreis</th><td data-cell-label=\"Abrechnungsbedingungen\"><span class=\"card-cell-label\">Abrechnungsbedingungen</span>Audio: with_audio</td><td data-cell-label=\"Gebühr\"><span class=\"card-cell-label\">Gebühr</span><div><span>Ausgabe · Videopreis</span> <b>$0.8</b> <span class=\"price-unit\">pro Videosekunde</span></div><p class=\"note-s\">Veröffentlichte Preisreferenz für die angezeigte Konfiguration. Die endgültige Abrechnung folgt der tatsächlich abgerechneten Konfiguration.</p></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Videopreis</th><td data-cell-label=\"Abrechnungsbedingungen\"><span class=\"card-cell-label\">Abrechnungsbedingungen</span>Audio: with_audio; Auflösung: 4k</td><td data-cell-label=\"Gebühr\"><span class=\"card-cell-label\">Gebühr</span><div><span>Ausgabe · Videopreis</span> <b>$1.2</b> <span class=\"price-unit\">pro Videosekunde</span></div><p class=\"note-s\">Veröffentlichte Preisreferenz für die angezeigte Konfiguration. Die endgültige Abrechnung folgt der tatsächlich abgerechneten Konfiguration.</p></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Videopreis</th><td data-cell-label=\"Abrechnungsbedingungen\"><span class=\"card-cell-label\">Abrechnungsbedingungen</span>Audio: without_audio</td><td data-cell-label=\"Gebühr\"><span class=\"card-cell-label\">Gebühr</span><div><span>Ausgabe · Videopreis</span> <b>$0.4</b> <span class=\"price-unit\">pro Videosekunde</span></div><p class=\"note-s\">Veröffentlichte Preisreferenz für die angezeigte Konfiguration. Die endgültige Abrechnung folgt der tatsächlich abgerechneten Konfiguration.</p></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Videopreis</th><td data-cell-label=\"Abrechnungsbedingungen\"><span class=\"card-cell-label\">Abrechnungsbedingungen</span>Audio: without_audio; Auflösung: 4k</td><td data-cell-label=\"Gebühr\"><span class=\"card-cell-label\">Gebühr</span><div><span>Ausgabe · Videopreis</span> <b>$0.8</b> <span class=\"price-unit\">pro Videosekunde</span></div><p class=\"note-s\">Veröffentlichte Preisreferenz für die angezeigte Konfiguration. Die endgültige Abrechnung folgt der tatsächlich abgerechneten Konfiguration.</p></td></tr></tbody></table></div></details></div></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Beispielanfragen</h3><h4>Ailoot Ultra · Video</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Codevarianten\"><button class=\"cg-tab\" id=\"model-code-1505-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1505-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · konfiguriertes Profil unverändert</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Code kopieren\"><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-1505-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1505-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;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;google/veo-3.1&quot;, &quot;prompt&quot;: &quot;a calm greenhouse&quot;, &quot;duration&quot;: 6, &quot;resolution&quot;: &quot;720p&quot;, &quot;aspect_ratio&quot;: &quot;16:9&quot;, &quot;generate_audio&quot;: true}&#39;)\nPath(&#39;request.json&#39;).write_text(json.dumps(p,ensure_ascii=False))\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\">Ergebnisse abrufen und speichern</h3><h4>Ailoot Ultra · Video</h4><p class=\"note-s\">mp4</p><ul class=\"card-result-paths\"><li><code>GET /v1/videos/{request_id}</code></li><li><code>GET /v1/videos/generations/{request_id}</code></li><li><code>GET /v1/videos/{request_id}/content</code></li><li><code>GET /v1/videos/generations/{request_id}/content</code></li></ul><h5>Auftragsstatus prüfen</h5><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Codevarianten\"><button class=\"cg-tab\" id=\"model-code-1506-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1506-panel-0\" aria-selected=\"true\" tabindex=\"0\">GET · Status des ursprünglichen Vorgangs</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Code kopieren\"><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-1506-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1506-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>Abrufe anderer Inhalte</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Codevarianten\"><button class=\"cg-tab\" id=\"model-code-1507-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1507-panel-0\" aria-selected=\"true\" tabindex=\"0\">Jede fertiggestellte eigene Ausgabe speichern</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Code kopieren\"><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-1507-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1507-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>Alle fertiggestellten Ergebnisse aufbewahren</h5><p class=\"note-s\">Speichern Sie jedes fertiggestellte Video oder jede zurückgegebene Datei; rufen Sie jede tatsächlich zurückgegebene Datei-URL ab.</p><p class=\"note-s\">Bewahren Sie jede signierte URL aus dem abgeschlossenen data[] für die Ihnen zugeordneten Ausgaben sowie die vollständigen Statusmetadaten auf. Speichern Sie jede Ausgabe einschliesslich ihres erzeugten Audios. Eine gültige AAC-Audiospur kann auch bei generate_audio=false enthalten sein; bewahren Sie die vollständige ursprüngliche MP4-Datei einschliesslich dieser Audiospur auf.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Wenn die ursprüngliche Antwort geprüft werden muss</h5><p class=\"note-s\">Lesen Sie den bestehenden ursprünglichen Auftrag; reichen Sie einen Sendevorgang mit unbekanntem Ausgang niemals erneut ein.</p></div><p class=\"note-s\">Maximale Anzahl der Ausgaben: 4.</p><details class=\"card-about\" data-output-fields><summary>Antwortfelder</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Feld</th><th>Typ</th><th>Bedeutung</th></tr></thead><tbody><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">id</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td><td data-cell-label=\"Bedeutung\"><span class=\"card-cell-label\">Bedeutung</span>—</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">object</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td><td data-cell-label=\"Bedeutung\"><span class=\"card-cell-label\">Bedeutung</span>—</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td><td data-cell-label=\"Bedeutung\"><span class=\"card-cell-label\">Bedeutung</span>—</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">status</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td><td data-cell-label=\"Bedeutung\"><span class=\"card-cell-label\">Bedeutung</span>—</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">data[]</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>signed content URL</td><td data-cell-label=\"Bedeutung\"><span class=\"card-cell-label\">Bedeutung</span>—</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">charge_pending_check</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>boolean</td><td data-cell-label=\"Bedeutung\"><span class=\"card-cell-label\">Bedeutung</span>—</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">error.code</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td><td data-cell-label=\"Bedeutung\"><span class=\"card-cell-label\">Bedeutung</span>—</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">error.message</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td><td data-cell-label=\"Bedeutung\"><span class=\"card-cell-label\">Bedeutung</span>—</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">operation_id</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td><td data-cell-label=\"Bedeutung\"><span class=\"card-cell-label\">Bedeutung</span>Antwort des ursprünglichen Status-/Inhaltsabrufs mit HTTP503 result_pending_check: dieselbe ursprüngliche öffentliche Video-ID als id.</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">error.type</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td><td data-cell-label=\"Bedeutung\"><span class=\"card-cell-label\">Bedeutung</span>server_error bei HTTP503 result_pending_check.</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Fehler und nächste Schritte</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Antwort</th><th>Bedingung</th><th>Nächster Schritt</th></tr></thead><tbody><tr><th data-cell-label=\"Antwort\" scope=\"row\"><span class=\"card-cell-label\">Antwort</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Bedingung\"><span class=\"card-cell-label\">Bedingung</span>Das Lesen des rohen Anfragetexts scheitert vor dem Parsen des Videoprofils</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span>Bewahren Sie die zurückgegebene Antwort auf und korrigieren Sie den nicht lesbaren Anfragetext.</td></tr><tr><th data-cell-label=\"Antwort\" scope=\"row\"><span class=\"card-cell-label\">Antwort</span>422 · <code>price_unavailable</code></th><td data-cell-label=\"Bedingung\"><span class=\"card-cell-label\">Bedingung</span>Das exakte Videoprofil lässt sich nicht parsen oder für das vollständig geparste Profil liegt keine einsatzbereite exakte Preiskarte vor</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span>Bewahren Sie die Antwort auf; verwenden Sie das vollständige, exakt zugelassene Profil und dessen veröffentlichte Preiskarte. Dieser Zweig wird vor dem Senden an einen Anbieter ausgeführt.</td></tr><tr><th data-cell-label=\"Antwort\" scope=\"row\"><span class=\"card-cell-label\">Antwort</span>409 · <code>video_not_ready</code></th><td data-cell-label=\"Bedingung\"><span class=\"card-cell-label\">Bedingung</span>Der ursprüngliche Ergebnisinhalt ist noch nicht verfügbar</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span>Fragen Sie die ursprünglich zurückgegebene ID ab und beachten Sie Retry-After.</td></tr><tr><th data-cell-label=\"Antwort\" scope=\"row\"><span class=\"card-cell-label\">Antwort</span><code>server_error</code></th><td data-cell-label=\"Bedingung\"><span class=\"card-cell-label\">Bedingung</span>Die zurückgegebene Antwort gibt an, dass der Vorgang oder das Ergebnis eine Prüfung erfordert</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span>Die ursprünglich zurückgegebene Vorgangs-/Aufgaben-ID, die Anfrageheader und die Antwort aufbewahren; mit unterstützten Leseaufrufen für diesen ursprünglichen Vorgang fortfahren. Die Erstellungsanfrage nicht erneut senden.</td></tr><tr><th data-cell-label=\"Antwort\" scope=\"row\"><span class=\"card-cell-label\">Antwort</span>503 · <code>result_pending_check</code></th><td data-cell-label=\"Bedingung\"><span class=\"card-cell-label\">Bedingung</span>GET des ursprünglichen Status/Inhalts: Die Aufgabe ist nicht veröffentlicht, der ursprüngliche Auftrag hat keinen der Zustände failed/cancelled/expired, und der lokale Zustand ist unknown oder der ursprüngliche Auftragsstatus ist completed.</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span>Bewahren Sie die ursprüngliche id und operation_id (dieselbe öffentliche Video-ID), Antwort und Header auf; lesen Sie ausschliesslich den ursprünglichen Status/Inhalt. Senden Sie niemals eine neue Erzeugungsanfrage.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Aliasnamen</h3><h4>Modellaliasnamen</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=google%2Fveo-3.1&amp;route=Ultra&amp;caller=google%2Fveo-3.1&amp;fmt=videos\"><code>google/veo-3.1</code></a></span></p><h4>Aliasnamen für Methodenpfade</h4><p class=\"note-s\"><code>/v1/videos/generations</code>, <code>/videos</code>, <code>/videos/generations</code></p><h4>Zugehörige Aufrufer-IDs</h4><p class=\"note-s\"><a href=\"#m=google%2Fveo-3.1&amp;route=Ultra&amp;caller=google%2Fveo-3.1&amp;fmt=videos\"><code>google/veo-3.1</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "google/veo-3.1",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "google/veo-3.1",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|google%2Fveo-3.1",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "Die angezeigten Tarife dienen zur Kostenschätzung vor der Generierung. Der endgültige Betrag wird aus den für die ursprüngliche Generierung erfassten Kosten berechnet. Die gemessene Ausgabedauer und prognostizierte Mengen sind nicht die endgültige abrechenbare Menge.",
          "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": "Keep every completed data[] signed owned URL and the full status metadata. Save every output, including its generated audio.",
            "errors": [
              {
                "code": null,
                "condition": "Das Lesen des rohen Anfragetexts scheitert vor dem Parsen des Videoprofils",
                "http_status": 400,
                "recovery": "Bewahren Sie die zurückgegebene Antwort auf und korrigieren Sie den nicht lesbaren Anfragetext.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Das exakte Videoprofil lässt sich nicht parsen oder für das vollständig geparste Profil liegt keine einsatzbereite exakte Preiskarte vor",
                "http_status": 422,
                "message": "The complete video request cannot be priced",
                "recovery": "Bewahren Sie die Antwort auf; verwenden Sie das vollständige, exakt zugelassene Profil und dessen veröffentlichte Preiskarte. Dieser Zweig wird vor dem Senden an einen Anbieter ausgeführt.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Der ursprüngliche Ergebnisinhalt ist noch nicht verfügbar",
                "http_status": 409,
                "recovery": "Fragen Sie die ursprünglich zurückgegebene ID ab und beachten Sie Retry-After.",
                "type": "video_not_ready"
              },
              {
                "code": null,
                "condition": "Die zurückgegebene Antwort gibt an, dass der Vorgang oder das Ergebnis eine Prüfung erfordert",
                "http_status": null,
                "recovery": "Die ursprünglich zurückgegebene Vorgangs-/Aufgaben-ID, die Anfrageheader und die Antwort aufbewahren; mit unterstützten Leseaufrufen für diesen ursprünglichen Vorgang fortfahren. Die Erstellungsanfrage nicht erneut senden.",
                "type": "server_error"
              },
              {
                "absent_fields": [
                  "status",
                  "object",
                  "model",
                  "data"
                ],
                "code": "result_pending_check",
                "condition": "GET des ursprünglichen Status/Inhalts: Die Aufgabe ist nicht veröffentlicht, der ursprüngliche Auftrag hat keinen der Zustände failed/cancelled/expired, und der lokale Zustand ist unknown oder der ursprüngliche Auftragsstatus ist completed.",
                "friendly_fields": "error.reason=result_pending_check,error.param=null; error.operation_id and error.request_id when the existing context supplies them. error.message is rewritten/localized.",
                "headers": {
                  "Retry-After": null,
                  "X-Should-Retry": "false"
                },
                "http_status": 503,
                "recovery": "Bewahren Sie die ursprüngliche id und operation_id (dieselbe öffentliche Video-ID), Antwort und Header auf; lesen Sie ausschliesslich den ursprünglichen Status/Inhalt. Senden Sie niemals eine neue Erzeugungsanfrage.",
                "response_fields": {
                  "charge_pending_check": true,
                  "error.code": "result_pending_check",
                  "error.type": "server_error",
                  "id": "original public video ID",
                  "operation_id": "same as id"
                },
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "content": [
                {
                  "http": "GET",
                  "parameters": [
                    {
                      "availability": "source_interface",
                      "conditions": "Must be less than the actual returned output count.",
                      "default": 0,
                      "default_known": true,
                      "enum": null,
                      "enum_known": false,
                      "maximum": null,
                      "maximum_known": false,
                      "minimum": 0,
                      "name": "index",
                      "required": false,
                      "type": "integer"
                    }
                  ],
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default0"
                  }
                },
                {
                  "http": "GET",
                  "parameters": [
                    {
                      "availability": "source_interface",
                      "conditions": "Must be less than the actual returned output count.",
                      "default": 0,
                      "default_known": true,
                      "enum": null,
                      "enum_known": false,
                      "maximum": null,
                      "maximum_known": false,
                      "minimum": 0,
                      "name": "index",
                      "required": false,
                      "type": "integer"
                    }
                  ],
                  "path": "/v1/videos/generations/{request_id}/content"
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "id_source": "Actualreturnedpublicid; opaque URLencodeit forGET. On HTTP503 result_pending_check from original status/content GET, operation_id equals id: use that same original public video ID for polling. Do not substitute unrelated operation IDs from other responses.",
              "mode": "submit_once_poll_original",
              "multioutputs": "retain every completed data output; index0 alone is not all outputs",
              "owned_result": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              },
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "submit_status": 202,
              "unknown": "Lesen Sie den bestehenden ursprünglichen Auftrag; reichen Sie einen Sendevorgang mit unbekanntem Ausgang niemals erneut ein.",
              "unknown_no_replay": true
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_video",
                "required": [
                  "prompt"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "Use actual returned task_id or original public video id from response/media library. On HTTP503 result_pending_check from original video status/content GET, operation_id equals that original public video id. Do not assume unrelated operation IDs name media tasks.",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "text_to_video"
            ],
            "outputs": {
              "all_results": "Bewahren Sie jede signierte URL aus dem abgeschlossenen data[] für die Ihnen zugeordneten Ausgaben sowie die vollständigen Statusmetadaten auf. Speichern Sie jede Ausgabe einschliesslich ihres erzeugten Audios. Eine gültige AAC-Audiospur kann auch bei generate_audio=false enthalten sein; bewahren Sie die vollständige ursprüngliche MP4-Datei einschliesslich dieser Audiospur auf.",
              "create_status": 202,
              "family": "video",
              "fields": [
                {
                  "description": null,
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "object",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "model",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "status",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "data[]",
                  "type": "signed content URL"
                },
                {
                  "description": null,
                  "name": "charge_pending_check",
                  "type": "boolean"
                },
                {
                  "description": null,
                  "name": "error.code",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "error.message",
                  "type": "string"
                },
                {
                  "description": "Antwort des ursprünglichen Status-/Inhaltsabrufs mit HTTP503 result_pending_check: dieselbe ursprüngliche öffentliche Video-ID als id.",
                  "name": "operation_id",
                  "type": "string"
                },
                {
                  "description": "server_error bei HTTP503 result_pending_check.",
                  "name": "error.type",
                  "type": "string"
                }
              ],
              "format": "mp4",
              "maximum_outputs": 4,
              "status_enum": [
                "in_progress",
                "completed",
                "failed"
              ]
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "google/veo-3.1"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "max_utf8_bytes": 10000,
                "name": "prompt",
                "non_whitespace": true,
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  4,
                  6,
                  8
                ],
                "enum_known": true,
                "name": "duration",
                "required": true,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "720p"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "16:9",
                  "9:16"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  false,
                  true
                ],
                "enum_known": true,
                "name": "generate_audio",
                "required": true,
                "type": "boolean"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "all fields outside the exact required six-key profile",
              "image or reference inputs",
              "1080p or 4K"
            ]
          },
          "hints": [
            "Bewahren Sie die vollständige Antwort und die ursprünglich zurückgegebenen IDs auf.",
            "Reichen Sie eine Erstellung mit unbekanntem Ausgang niemals erneut ein."
          ],
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "parameters": [
              {
                "enum": [
                  "google/veo-3.1"
                ],
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "max_utf8_bytes": 10000,
                "name": "prompt",
                "non_whitespace": true,
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  4,
                  6,
                  8
                ],
                "name": "duration",
                "required": true,
                "type": "integer"
              },
              {
                "enum": [
                  "720p"
                ],
                "name": "resolution",
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  "16:9",
                  "9:16"
                ],
                "name": "aspect_ratio",
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  false,
                  true
                ],
                "name": "generate_audio",
                "required": true,
                "type": "boolean"
              }
            ],
            "required": [
              "model",
              "prompt",
              "duration",
              "resolution",
              "aspect_ratio",
              "generate_audio"
            ]
          },
          "lifecycle": {
            "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
            "content": [
              {
                "http": "GET",
                "parameters": [
                  {
                    "availability": "source_interface",
                    "conditions": "Must be less than the actual returned output count.",
                    "default": 0,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": null,
                    "maximum_known": false,
                    "minimum": 0,
                    "name": "index",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default0"
                }
              },
              {
                "http": "GET",
                "parameters": [
                  {
                    "availability": "source_interface",
                    "conditions": "Must be less than the actual returned output count.",
                    "default": 0,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": null,
                    "maximum_known": false,
                    "minimum": 0,
                    "name": "index",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/videos/generations/{request_id}/content"
              }
            ],
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "id_source": "Actualreturnedpublicid; opaque URLencodeit forGET. On HTTP503 result_pending_check from original status/content GET, operation_id equals id: use that same original public video ID for polling. Do not substitute unrelated operation IDs from other responses.",
            "mode": "submit_once_poll_original",
            "multioutputs": "retain every completed data output; index0 alone is not all outputs",
            "owned_result": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}"
            },
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "submit_status": 202,
            "unknown": "Read existing original job; never resubmit unknown send.",
            "unknown_no_replay": true
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [
            "/v1/videos/generations",
            "/videos",
            "/videos/generations"
          ],
          "operation_modes": [
            "text_to_video"
          ],
          "output": {
            "family": "video",
            "format": "mp4",
            "max_outputs": 4,
            "priced_duration": "Video-file duration is not the billing quantity; final charge follows the actual billed configuration."
          }
        },
        "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": "The displayed rate estimates the cost before generation. The final charge is calculated from the cost recorded for the original generation. Physical video duration is not the billable quantity.",
            "dimensions": {
              "forecast_quantity": "Requested configuration; estimate only.",
              "generate_audio": true,
              "quoted_unit": "per output video second",
              "resolution": "720p"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.8",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_with_audio",
                "label": "Estimated output video second",
                "native_amount_usd_per_unit": "0.8",
                "native_quantity": 1,
                "public_unit_label": "per output video second",
                "quantity": "1",
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "audio: with_audio; resolution: 4k",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "1.2",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_with_audio_4k",
                "label": "Video price",
                "native_amount_usd_per_unit": "1.2",
                "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": "The displayed rate estimates the cost before generation. The final charge is calculated from the cost recorded for the original generation. Physical video duration is not the billable quantity.",
            "dimensions": {
              "forecast_quantity": "Requested configuration; estimate only.",
              "generate_audio": false,
              "quoted_unit": "per output video second",
              "resolution": "720p"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.4",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_without_audio",
                "label": "Estimated output video second",
                "native_amount_usd_per_unit": "0.4",
                "native_quantity": 1,
                "public_unit_label": "per output video second",
                "quantity": "1",
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "audio: without_audio; resolution: 4k",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.8",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_without_audio_4k",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.8",
                "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": "Diese Schätzung ist weder eine zusätzliche Gebühr noch ein fester Tarif für die abgeschlossene Generierung.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Geschätzte Erzeugungskosten",
            "units": [
              {
                "amount": "1.6",
                "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": "1.6",
                "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'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"google/veo-3.1\", \"prompt\": \"a calm greenhouse\", \"duration\": 6, \"resolution\": \"720p\", \"aspect_ratio\": \"16:9\", \"generate_audio\": true}')\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/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 · exact configured profile",
            "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": [
          "Keep the complete response and the original returned IDs.",
          "Never resubmit an unknown creation."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Видео",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/v1/videos/generations",
          "/videos",
          "/videos/generations"
        ],
        "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"
              }
            ]
          },
          {
            "basis": "The displayed rate estimates the cost before generation. The final charge is calculated from the cost recorded for the original generation. Physical video duration is not the billable quantity.",
            "dimensions": {
              "forecast_quantity": "Requested configuration; estimate only.",
              "generate_audio": true,
              "quoted_unit": "per output video second",
              "resolution": "720p"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.8",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_with_audio",
                "label": "Estimated output video second",
                "native_amount_usd_per_unit": "0.8",
                "native_quantity": 1,
                "public_unit_label": "per output video second",
                "quantity": "1",
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "audio: with_audio; resolution: 4k",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "1.2",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_with_audio_4k",
                "label": "Video price",
                "native_amount_usd_per_unit": "1.2",
                "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": "The displayed rate estimates the cost before generation. The final charge is calculated from the cost recorded for the original generation. Physical video duration is not the billable quantity.",
            "dimensions": {
              "forecast_quantity": "Requested configuration; estimate only.",
              "generate_audio": false,
              "quoted_unit": "per output video second",
              "resolution": "720p"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.4",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_without_audio",
                "label": "Estimated output video second",
                "native_amount_usd_per_unit": "0.4",
                "native_quantity": 1,
                "public_unit_label": "per output video second",
                "quantity": "1",
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "audio: without_audio; resolution: 4k",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.8",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_without_audio_4k",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.8",
                "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": "1.6",
                "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": "1.6",
                "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": "google/veo-3.1",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}",
          "GET /v1/videos/generations/{request_id}",
          "GET /v1/videos/{request_id}/content",
          "GET /v1/videos/generations/{request_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.8",
            "amount_unit": "usd_per_exact_physical_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds_with_audio",
            "label": "Estimated output video second",
            "native_amount_usd_per_unit": "0.8",
            "native_quantity": 1,
            "public_unit_label": "per output video second",
            "quantity": "1",
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_video_second"
          },
          {
            "amount": "1.2",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds_with_audio_4k",
            "label": "Video price",
            "native_amount_usd_per_unit": "1.2",
            "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.4",
            "amount_unit": "usd_per_exact_physical_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds_without_audio",
            "label": "Estimated output video second",
            "native_amount_usd_per_unit": "0.4",
            "native_quantity": 1,
            "public_unit_label": "per output video second",
            "quantity": "1",
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_video_second"
          },
          {
            "amount": "0.8",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds_without_audio_4k",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.8",
            "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": "1.6",
            "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": "1.6",
            "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": "google/veo-3.1",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "cbc9e9996aaadcf97fa63134e8f5181bfac5c426a5fc945f2d1c0f0ae6a8e825",
    "input_html_sha256": "2b585ae7b5d4b449f19d473daf7eb904054fe6bdd48e54b56253128ab6c22a9b",
    "private_audit_sha256": "54d4a8fea67a6348ee5710ccafe02617d4314ac426432986f326bbbc36d92da9",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/de-ch/google-veo-3-1/",
    "description": "Veo 3.1 ist Googles Videomodell für text- und bildgestützte Szenen mit generiertem Ton, vorgegebenen Begrenzungsbildern und Referenzmaterial. Sein Produktionsprofil bietet Clips mit vier, sechs oder acht Sekunden bei 24 fps und Ausgabeoptionen von 720p, 1080p und 4K.",
    "locale": "de-ch",
    "md_url": "https://ailoot.ai/models/de-ch/google-veo-3-1/index.md",
    "title": "Google: Veo 3.1 — Ailoot",
    "url": "https://ailoot.ai/models/de-ch/google-veo-3-1/"
  },
  "rawModel": {
    "about": "Veo 3.1 ist Googles Videogenerierungsmodell zur Erstellung einer kurzen audiovisuellen Szene aus Text oder einem bildgestützten Briefing. Sein Produktionsprofil unterstützt Text-to-Video, Image-to-Video und gesteuerte Erstellung mit erstem/letztem Einzelbild, mit generiertem Ton, Asset-Referenzen und separatem Fortsetzungsablauf. Nutzen Sie es zur Entwicklung eines filmischen Konzepts, einer kurzen Produktgeschichte oder eines visuellen Abschnitts mit definierter Szene, Handlung und Hörerfahrung.\n\nBeschreiben Sie zuerst Motiv und sichtbares Ereignis. Legen Sie Umgebung, Tageszeit und Licht fest und bestimmen Sie danach Kamerablickwinkel oder -bewegung und gewünschten Bildstil. Ein eigenes Szenenbriefing könnte ein Glasgefäss auf einer dunklen Studiofläche zeigen, mit einer langsamen seitlichen Fahrt, die eine Reflexion enthüllt, begleitet von einem sanften Umgebungsgeräusch. Jede Anweisung liefert ein sichtbares oder hörbares Merkmal, das im fertigen Ergebnis beurteilt werden kann.\n\nGoogles Prompt-Rahmen behandelt Motiv, Handlung, Szene, Kamera und Ästhetik als separate Briefingteile. Nutzen Sie die für die Einstellung hilfreichen Teile, statt jeden möglichen Deskriptor hinzuzufügen. Schreiben Sie Anweisungen für das dokumentierte Prompt-Profil auf Englisch. Hat die Szene mehrere Handlungen, benennen Sie deren Beziehung und passen Sie sie an einen kurzen Clip an, damit Enthüllung oder Reaktion verständlich bleiben.\n\nEin Startbild legt Anfangserscheinung und -komposition fest. Nutzen Sie es, wenn Figur, Produkt oder Umgebung bereits als visuelles Material vorliegen, und beschreiben Sie die daraus entstehende Bewegung. Ein letztes Einzelbild ergänzt die Zielkomposition für den Schluss. Bereiten Sie Begrenzungsbilder mit plausiblem Übergang und erhaltenen Identifikationsdetails des Hauptmotivs vor und prüfen Sie nach der Generierung die Bewegung dazwischen.\n\nAsset-Referenzen haben einen anderen Zweck: Sie führen die Erscheinung einer Figur oder eines Objekts in einer neu generierten Szene, während Begrenzungsbilder konkrete Momente darin definieren. Wählen Sie Referenzen mit den wichtigen Bildmerkmalen und machen Sie die Rolle jedes Materials im Prompt deutlich. Die Reference-Image-to-Video-Spezifikation des Produktionsmodells verwendet achtsekündige Ausgabe für diesen Referenzablauf, getrennt von der gewöhnlichen textgestützten Dauerwahl.\n\nDas gewöhnliche Produktionsprofil des Herstellers generiert Clips mit vier, sechs oder acht Sekunden und 24 Bildern pro Sekunde. Es nennt Querformat 16:9 und Hochformat 9:16, bis zu vier Videoausgaben pro Prompt und Auflösungen von 720p, 1080p und 4K. Das Ausgabevideoformat ist MP4. Seine bildgestützte Spezifikation akzeptiert JPEG oder PNG, nennt maximal 20 MB pro Eingabebild und unterstützt 720p-/1080p-Eingabekonfigurationen. Wählen Sie das Ausgabeprofil passend zur vorgesehenen Platzierung und halten Sie die Bildkomposition in dieser Grösse lesbar.\n\nNativer Ton kann die sichtbare Szene begleiten. Geben Sie gesprochene Sätze, Atmosphäre und Geräuscheffekte als Teile desselben Briefings an und benennen Sie das jeweils erzeugende Motiv oder Ereignis. Eine Dialoganweisung und eine Kameraanweisung beantworten verschiedene Fragen: Die eine bestimmt die Darbietung, die andere, wie das Publikum sie sieht. Halten Sie den Text innerhalb der nutzbaren Sprechzeit des Clips und prüfen Sie Verständlichkeit sowie Bezug des Tons zur Handlung.\n\nFür eine Fortsetzung bietet der Hersteller einen separaten Videoverlängerungsablauf. Beginnen Sie mit einem geeigneten generierten Quellclip und beschreiben Sie das nächste sichtbare Ereignis oder die Szenenänderung. Bewahren Sie Original und Fortsetzungsabschnitt auf, damit sich ihr Übergang hinsichtlich Erscheinung, Bewegung und Ton prüfen lässt. Gewöhnliche Dauer- und Auflösungsoptionen für neue Generierung dürfen nicht als universeller Vertrag für jede Verlängerungsoperation behandelt werden.\n\nEine negative Beschreibung kann Ausschlüsse auf die visuellen Aufgabenanforderungen konzentrieren. Halten Sie bei einer Reihe von Produktvarianten Motiv und Komposition stabil und ändern Sie eine kreative Vorgabe, etwa Beleuchtung oder Kameraabstand. Halten Sie Prompt, Referenzen und gewählte Einstellungen zusammen mit dem Ergebnis fest. So lässt sich ein brauchbarer kreativer Unterschied statt einer Sammlung unzusammenhängender Generierungen vergleichen.\n\nDas reguläre Veo-3.1-Produktionsprofil und Veo 3.1 Fast haben unterschiedliche Auflösungsprofile. Fast nennt 720p und 1080p, reguläres 3.1 zusätzlich 4K. Ordnen Sie die gewählte Edition dem Ergebnis zu, ohne eine Produktionsmodellkennung stillschweigend durch ein älteres Preview-Profil oder eine andere Veo-Generation zu ersetzen. Motiverscheinung und unterstützte Operation hängen beide vom gewählten Ablauf ab.\n\nDie Generierung ist eine Operation, deren abgeschlossenes Ergebnis Videodateien zur Wiedergabe und späteren Bearbeitung bereitstellt. Bewahren Sie zurückgegebene Dateien mit Quellbildern, Referenzmaterial und Briefing auf und erhalten Sie mitgelieferte Herkunftsinformationen. Prüfen Sie jede tatsächliche Ausgabe auf Motiverscheinung, Handlung, Bildausschnitt, Ton und Schlusskomposition. Nutzen Sie den gewählten Clip als Produktionsbaustein und ergänzen Sie Titel, Übergänge oder weitere Abschlussarbeiten im umgebenden Schnitt.",
    "alias_of": null,
    "aliases": [],
    "author": "Google",
    "available": null,
    "canonical_model": "google/veo-3.1",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text",
        "image"
      ],
      "manufacturer_output": [
        "video"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "1.6",
            "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": "1.6",
            "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": "Die vollständigen Preisangaben zur Konfiguration finden Sie in den Details."
      }
    ],
    "ctx": null,
    "declared_tariff_references": [
      {
        "client_selectable": false,
        "key": "5c12291f0ed9f66144eb670a",
        "label": "Preisreferenzen für Videokonfigurationen",
        "profiles": [
          {
            "basis": "Veröffentlichte Preisreferenz für die angezeigte Konfiguration. Die endgültige Abrechnung folgt der tatsächlich abgerechneten Konfiguration.",
            "dimensions": {
              "conditions": "Audio: with_audio"
            },
            "label": "Videopreis",
            "units": [
              {
                "amount": "0.8",
                "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": "Veröffentlichte Preisreferenz für die angezeigte Konfiguration. Die endgültige Abrechnung folgt der tatsächlich abgerechneten Konfiguration.",
            "dimensions": {
              "conditions": "Audio: with_audio; Auflösung: 4k"
            },
            "label": "Videopreis",
            "units": [
              {
                "amount": "1.2",
                "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": "Veröffentlichte Preisreferenz für die angezeigte Konfiguration. Die endgültige Abrechnung folgt der tatsächlich abgerechneten Konfiguration.",
            "dimensions": {
              "conditions": "Audio: without_audio"
            },
            "label": "Videopreis",
            "units": [
              {
                "amount": "0.4",
                "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": "Veröffentlichte Preisreferenz für die angezeigte Konfiguration. Die endgültige Abrechnung folgt der tatsächlich abgerechneten Konfiguration.",
            "dimensions": {
              "conditions": "Audio: without_audio; Auflösung: 4k"
            },
            "label": "Videopreis",
            "units": [
              {
                "amount": "0.8",
                "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": "google/veo-3.1",
    "input": [
      "text"
    ],
    "kind": "video",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "billing_basis": {
          "basis": "original_invoice_usd",
          "description": "Die angezeigten Tarife dienen zur Kostenschätzung vor der Generierung. Der endgültige Betrag wird aus den für die ursprüngliche Generierung erfassten Kosten berechnet. Die gemessene Ausgabedauer und prognostizierte Mengen sind nicht die endgültige abrechenbare Menge.",
          "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": "Keep every completed data[] signed owned URL and the full status metadata. Save every output, including its generated audio.",
            "errors": [
              {
                "code": null,
                "condition": "Das Lesen des rohen Anfragetexts scheitert vor dem Parsen des Videoprofils",
                "http_status": 400,
                "recovery": "Bewahren Sie die zurückgegebene Antwort auf und korrigieren Sie den nicht lesbaren Anfragetext.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Das exakte Videoprofil lässt sich nicht parsen oder für das vollständig geparste Profil liegt keine einsatzbereite exakte Preiskarte vor",
                "http_status": 422,
                "message": "The complete video request cannot be priced",
                "recovery": "Bewahren Sie die Antwort auf; verwenden Sie das vollständige, exakt zugelassene Profil und dessen veröffentlichte Preiskarte. Dieser Zweig wird vor dem Senden an einen Anbieter ausgeführt.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Der ursprüngliche Ergebnisinhalt ist noch nicht verfügbar",
                "http_status": 409,
                "recovery": "Fragen Sie die ursprünglich zurückgegebene ID ab und beachten Sie Retry-After.",
                "type": "video_not_ready"
              },
              {
                "code": null,
                "condition": "Die zurückgegebene Antwort gibt an, dass der Vorgang oder das Ergebnis eine Prüfung erfordert",
                "http_status": null,
                "recovery": "Die ursprünglich zurückgegebene Vorgangs-/Aufgaben-ID, die Anfrageheader und die Antwort aufbewahren; mit unterstützten Leseaufrufen für diesen ursprünglichen Vorgang fortfahren. Die Erstellungsanfrage nicht erneut senden.",
                "type": "server_error"
              },
              {
                "absent_fields": [
                  "status",
                  "object",
                  "model",
                  "data"
                ],
                "code": "result_pending_check",
                "condition": "GET des ursprünglichen Status/Inhalts: Die Aufgabe ist nicht veröffentlicht, der ursprüngliche Auftrag hat keinen der Zustände failed/cancelled/expired, und der lokale Zustand ist unknown oder der ursprüngliche Auftragsstatus ist completed.",
                "friendly_fields": "error.reason=result_pending_check,error.param=null; error.operation_id and error.request_id when the existing context supplies them. error.message is rewritten/localized.",
                "headers": {
                  "Retry-After": null,
                  "X-Should-Retry": "false"
                },
                "http_status": 503,
                "recovery": "Bewahren Sie die ursprüngliche id und operation_id (dieselbe öffentliche Video-ID), Antwort und Header auf; lesen Sie ausschliesslich den ursprünglichen Status/Inhalt. Senden Sie niemals eine neue Erzeugungsanfrage.",
                "response_fields": {
                  "charge_pending_check": true,
                  "error.code": "result_pending_check",
                  "error.type": "server_error",
                  "id": "original public video ID",
                  "operation_id": "same as id"
                },
                "type": "server_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
              "content": [
                {
                  "http": "GET",
                  "parameters": [
                    {
                      "availability": "source_interface",
                      "conditions": "Must be less than the actual returned output count.",
                      "default": 0,
                      "default_known": true,
                      "enum": null,
                      "enum_known": false,
                      "maximum": null,
                      "maximum_known": false,
                      "minimum": 0,
                      "name": "index",
                      "required": false,
                      "type": "integer"
                    }
                  ],
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default0"
                  }
                },
                {
                  "http": "GET",
                  "parameters": [
                    {
                      "availability": "source_interface",
                      "conditions": "Must be less than the actual returned output count.",
                      "default": 0,
                      "default_known": true,
                      "enum": null,
                      "enum_known": false,
                      "maximum": null,
                      "maximum_known": false,
                      "minimum": 0,
                      "name": "index",
                      "required": false,
                      "type": "integer"
                    }
                  ],
                  "path": "/v1/videos/generations/{request_id}/content"
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "id_source": "Actualreturnedpublicid; opaque URLencodeit forGET. On HTTP503 result_pending_check from original status/content GET, operation_id equals id: use that same original public video ID for polling. Do not substitute unrelated operation IDs from other responses.",
              "mode": "submit_once_poll_original",
              "multioutputs": "retain every completed data output; index0 alone is not all outputs",
              "owned_result": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              },
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "submit_status": 202,
              "unknown": "Lesen Sie den bestehenden ursprünglichen Auftrag; reichen Sie einen Sendevorgang mit unbekanntem Ausgang niemals erneut ein.",
              "unknown_no_replay": true
            },
            "material_combinations": [
              {
                "content_type": "application/json",
                "mode": "text_to_video",
                "required": [
                  "prompt"
                ]
              }
            ],
            "media_library": {
              "asset": {
                "fields": [
                  {
                    "description": null,
                    "name": "asset_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "task_id",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "output_key",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "family",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "model",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "method",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "status",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "content_type",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "sha256",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "size_bytes",
                    "type": "integer"
                  },
                  {
                    "description": null,
                    "name": "content_url",
                    "type": "string"
                  }
                ],
                "http": "GET",
                "id_source": "actual returned asset_id",
                "path": "/v1/media/assets/{asset_id}"
              },
              "content": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "range_header_supported": true,
                "url_source": "Use exact returned signed content_url including its token; do not construct a token."
              },
              "expired_link": {
                "code": "link_expired",
                "http_status": 404,
                "recovery": "Read the asset again to obtain its refreshed signed content_url, then fetch that URL. Do not regenerate."
              },
              "list": {
                "all_pages": "Follow every returned next_cursor, then select records by their actual task_id/output_key.",
                "http": "GET",
                "output_fields": [
                  {
                    "description": null,
                    "name": "object",
                    "type": "string"
                  },
                  {
                    "description": null,
                    "name": "data",
                    "type": "asset[]"
                  },
                  {
                    "description": null,
                    "name": "next_cursor",
                    "type": "string|null"
                  }
                ],
                "parameters": [
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "family",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": null,
                    "default_known": false,
                    "enum": null,
                    "enum_known": false,
                    "name": "cursor",
                    "required": false,
                    "type": "string"
                  },
                  {
                    "availability": "source_interface",
                    "default": 20,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": 100,
                    "minimum": 1,
                    "name": "limit",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/media/assets"
              },
              "revoke": {
                "http": "DELETE",
                "meaning": "Revokes/deletes the existing owned file; this is not generation cancellation.",
                "path": "/v1/media/assets/{asset_id}",
                "pending_status": "revoking",
                "success_statuses": [
                  202,
                  204
                ]
              },
              "task": {
                "http": "GET",
                "id_source": "Use actual returned task_id or original public video id from response/media library. On HTTP503 result_pending_check from original video status/content GET, operation_id equals that original public video id. Do not assume unrelated operation IDs name media tasks.",
                "path": "/v1/media/tasks/{task_id}"
              }
            },
            "operation_modes": [
              "text_to_video"
            ],
            "outputs": {
              "all_results": "Bewahren Sie jede signierte URL aus dem abgeschlossenen data[] für die Ihnen zugeordneten Ausgaben sowie die vollständigen Statusmetadaten auf. Speichern Sie jede Ausgabe einschliesslich ihres erzeugten Audios. Eine gültige AAC-Audiospur kann auch bei generate_audio=false enthalten sein; bewahren Sie die vollständige ursprüngliche MP4-Datei einschliesslich dieser Audiospur auf.",
              "create_status": 202,
              "family": "video",
              "fields": [
                {
                  "description": null,
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "object",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "model",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "status",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "data[]",
                  "type": "signed content URL"
                },
                {
                  "description": null,
                  "name": "charge_pending_check",
                  "type": "boolean"
                },
                {
                  "description": null,
                  "name": "error.code",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "error.message",
                  "type": "string"
                },
                {
                  "description": "Antwort des ursprünglichen Status-/Inhaltsabrufs mit HTTP503 result_pending_check: dieselbe ursprüngliche öffentliche Video-ID als id.",
                  "name": "operation_id",
                  "type": "string"
                },
                {
                  "description": "server_error bei HTTP503 result_pending_check.",
                  "name": "error.type",
                  "type": "string"
                }
              ],
              "format": "mp4",
              "maximum_outputs": 4,
              "status_enum": [
                "in_progress",
                "completed",
                "failed"
              ]
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "google/veo-3.1"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "max_utf8_bytes": 10000,
                "name": "prompt",
                "non_whitespace": true,
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  4,
                  6,
                  8
                ],
                "enum_known": true,
                "name": "duration",
                "required": true,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "720p"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "16:9",
                  "9:16"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  false,
                  true
                ],
                "enum_known": true,
                "name": "generate_audio",
                "required": true,
                "type": "boolean"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "all fields outside the exact required six-key profile",
              "image or reference inputs",
              "1080p or 4K"
            ]
          },
          "hints": [
            "Bewahren Sie die vollständige Antwort und die ursprünglich zurückgegebenen IDs auf.",
            "Reichen Sie eine Erstellung mit unbekanntem Ausgang niemals erneut ein."
          ],
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "parameters": [
              {
                "enum": [
                  "google/veo-3.1"
                ],
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "max_utf8_bytes": 10000,
                "name": "prompt",
                "non_whitespace": true,
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  4,
                  6,
                  8
                ],
                "name": "duration",
                "required": true,
                "type": "integer"
              },
              {
                "enum": [
                  "720p"
                ],
                "name": "resolution",
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  "16:9",
                  "9:16"
                ],
                "name": "aspect_ratio",
                "required": true,
                "type": "string"
              },
              {
                "enum": [
                  false,
                  true
                ],
                "name": "generate_audio",
                "required": true,
                "type": "boolean"
              }
            ],
            "required": [
              "model",
              "prompt",
              "duration",
              "resolution",
              "aspect_ratio",
              "generate_audio"
            ]
          },
          "lifecycle": {
            "all_results": "Follow everyactualreturnedoutputandownedasset; no result is discardedbecauseindex0orcontent_urlalreadyexists.",
            "content": [
              {
                "http": "GET",
                "parameters": [
                  {
                    "availability": "source_interface",
                    "conditions": "Must be less than the actual returned output count.",
                    "default": 0,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": null,
                    "maximum_known": false,
                    "minimum": 0,
                    "name": "index",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default0"
                }
              },
              {
                "http": "GET",
                "parameters": [
                  {
                    "availability": "source_interface",
                    "conditions": "Must be less than the actual returned output count.",
                    "default": 0,
                    "default_known": true,
                    "enum": null,
                    "enum_known": false,
                    "maximum": null,
                    "maximum_known": false,
                    "minimum": 0,
                    "name": "index",
                    "required": false,
                    "type": "integer"
                  }
                ],
                "path": "/v1/videos/generations/{request_id}/content"
              }
            ],
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "id_source": "Actualreturnedpublicid; opaque URLencodeit forGET. On HTTP503 result_pending_check from original status/content GET, operation_id equals id: use that same original public video ID for polling. Do not substitute unrelated operation IDs from other responses.",
            "mode": "submit_once_poll_original",
            "multioutputs": "retain every completed data output; index0 alone is not all outputs",
            "owned_result": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}"
            },
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "submit_status": 202,
            "unknown": "Read existing original job; never resubmit unknown send.",
            "unknown_no_replay": true
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [
            "/v1/videos/generations",
            "/videos",
            "/videos/generations"
          ],
          "operation_modes": [
            "text_to_video"
          ],
          "output": {
            "family": "video",
            "format": "mp4",
            "max_outputs": 4,
            "priced_duration": "Video-file duration is not the billing quantity; final charge follows the actual billed configuration."
          }
        },
        "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": "The displayed rate estimates the cost before generation. The final charge is calculated from the cost recorded for the original generation. Physical video duration is not the billable quantity.",
            "dimensions": {
              "forecast_quantity": "Requested configuration; estimate only.",
              "generate_audio": true,
              "quoted_unit": "per output video second",
              "resolution": "720p"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.8",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_with_audio",
                "label": "Estimated output video second",
                "native_amount_usd_per_unit": "0.8",
                "native_quantity": 1,
                "public_unit_label": "per output video second",
                "quantity": "1",
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "audio: with_audio; resolution: 4k",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "1.2",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_with_audio_4k",
                "label": "Video price",
                "native_amount_usd_per_unit": "1.2",
                "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": "The displayed rate estimates the cost before generation. The final charge is calculated from the cost recorded for the original generation. Physical video duration is not the billable quantity.",
            "dimensions": {
              "forecast_quantity": "Requested configuration; estimate only.",
              "generate_audio": false,
              "quoted_unit": "per output video second",
              "resolution": "720p"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.4",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_without_audio",
                "label": "Estimated output video second",
                "native_amount_usd_per_unit": "0.4",
                "native_quantity": 1,
                "public_unit_label": "per output video second",
                "quantity": "1",
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "audio: without_audio; resolution: 4k",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.8",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_without_audio_4k",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.8",
                "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": "Diese Schätzung ist weder eine zusätzliche Gebühr noch ein fester Tarif für die abgeschlossene Generierung.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Geschätzte Erzeugungskosten",
            "units": [
              {
                "amount": "1.6",
                "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": "1.6",
                "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'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"google/veo-3.1\", \"prompt\": \"a calm greenhouse\", \"duration\": 6, \"resolution\": \"720p\", \"aspect_ratio\": \"16:9\", \"generate_audio\": true}')\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/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 · exact configured profile",
            "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": [
          "Keep the complete response and the original returned IDs.",
          "Never resubmit an unknown creation."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text"
        ],
        "label": "Видео",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/v1/videos/generations",
          "/videos",
          "/videos/generations"
        ],
        "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"
              }
            ]
          },
          {
            "basis": "The displayed rate estimates the cost before generation. The final charge is calculated from the cost recorded for the original generation. Physical video duration is not the billable quantity.",
            "dimensions": {
              "forecast_quantity": "Requested configuration; estimate only.",
              "generate_audio": true,
              "quoted_unit": "per output video second",
              "resolution": "720p"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.8",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_with_audio",
                "label": "Estimated output video second",
                "native_amount_usd_per_unit": "0.8",
                "native_quantity": 1,
                "public_unit_label": "per output video second",
                "quantity": "1",
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "audio: with_audio; resolution: 4k",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "1.2",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_with_audio_4k",
                "label": "Video price",
                "native_amount_usd_per_unit": "1.2",
                "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": "The displayed rate estimates the cost before generation. The final charge is calculated from the cost recorded for the original generation. Physical video duration is not the billable quantity.",
            "dimensions": {
              "forecast_quantity": "Requested configuration; estimate only.",
              "generate_audio": false,
              "quoted_unit": "per output video second",
              "resolution": "720p"
            },
            "label": "Ultra",
            "units": [
              {
                "amount": "0.4",
                "amount_unit": "usd_per_exact_physical_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_without_audio",
                "label": "Estimated output video second",
                "native_amount_usd_per_unit": "0.4",
                "native_quantity": 1,
                "public_unit_label": "per output video second",
                "quantity": "1",
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "audio: without_audio; resolution: 4k",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.8",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "duration_seconds_without_audio_4k",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.8",
                "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": "1.6",
                "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": "1.6",
                "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": "google/veo-3.1",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}",
          "GET /v1/videos/generations/{request_id}",
          "GET /v1/videos/{request_id}/content",
          "GET /v1/videos/generations/{request_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.8",
            "amount_unit": "usd_per_exact_physical_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds_with_audio",
            "label": "Estimated output video second",
            "native_amount_usd_per_unit": "0.8",
            "native_quantity": 1,
            "public_unit_label": "per output video second",
            "quantity": "1",
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_video_second"
          },
          {
            "amount": "1.2",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds_with_audio_4k",
            "label": "Video price",
            "native_amount_usd_per_unit": "1.2",
            "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.4",
            "amount_unit": "usd_per_exact_physical_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds_without_audio",
            "label": "Estimated output video second",
            "native_amount_usd_per_unit": "0.4",
            "native_quantity": 1,
            "public_unit_label": "per output video second",
            "quantity": "1",
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_video_second"
          },
          {
            "amount": "0.8",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "duration_seconds_without_audio_4k",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.8",
            "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": "1.6",
            "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": "1.6",
            "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": "google/veo-3.1",
        "request_model_id": "google/veo-3.1",
        "route_label": "Ultra"
      }
    ],
    "name": "Google: Veo 3.1",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 1.6,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 1.6,
      "varies": false
    },
    "pricing_profiles": [
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": true,
          "native_model_id": "veo-3.1-generate-preview",
          "resolution": "720p"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.80",
            "amount_unit": "usd_per_output_second",
            "conditions": {
              "audio": true,
              "native_model_id": "veo-3.1-generate-preview",
              "resolution": "720p"
            },
            "key": "output_video_audio",
            "label": "output video audio",
            "profile_index": 0,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": true,
          "native_model_id": "veo-3.1-generate-preview",
          "resolution": "1080p"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.80",
            "amount_unit": "usd_per_output_second",
            "conditions": {
              "audio": true,
              "native_model_id": "veo-3.1-generate-preview",
              "resolution": "1080p"
            },
            "key": "output_video_audio",
            "label": "output video audio",
            "profile_index": 1,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "audio": true,
          "native_model_id": "veo-3.1-generate-preview",
          "resolution": "4k"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "1.20",
            "amount_unit": "usd_per_output_second",
            "conditions": {
              "audio": true,
              "native_model_id": "veo-3.1-generate-preview",
              "resolution": "4k"
            },
            "key": "output_video_audio",
            "label": "output video audio",
            "profile_index": 2,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "no_method_admission_claim": true,
          "scope": "supplier_tariff_reference"
        },
        "dimensions": {},
        "label": "Ailoot Ultra · Tariff components",
        "units": [
          {
            "amount": "0.8",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "audio=true",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.80",
            "key": "duration_seconds_with_audio",
            "label": "output second",
            "native_amount_usd_per_unit": "0.8",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "output_second"
          },
          {
            "amount": "1.2",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "resolution=4k · audio=true Source-only tariff component.",
            "billing_original_currency": "USD",
            "billing_original_rate": "1.20",
            "key": "duration_seconds_with_audio_4k",
            "label": "output second",
            "native_amount_usd_per_unit": "1.2",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "output_second"
          },
          {
            "amount": "0.4",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "audio=false",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.40",
            "key": "duration_seconds_without_audio",
            "label": "output second",
            "native_amount_usd_per_unit": "0.4",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "output_second"
          },
          {
            "amount": "0.8",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "resolution=4k · audio=false Source-only tariff component.",
            "billing_original_currency": "USD",
            "billing_original_rate": "0.80",
            "key": "duration_seconds_without_audio_4k",
            "label": "output second",
            "native_amount_usd_per_unit": "0.8",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "output_second"
          }
        ]
      }
    ],
    "public_id": "google/veo-3.1",
    "short": "Veo 3.1 ist Googles Videomodell für text- und bildgestützte Szenen mit generiertem Ton, vorgegebenen Begrenzungsbildern und Referenzmaterial. Sein Produktionsprofil bietet Clips mit vier, sechs oder acht Sekunden bei 24 fps und Ausgabeoptionen von 720p, 1080p und 4K."
  },
  "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": "Veo 3.1 ist Googles Videomodell für text- und bildgestützte Szenen mit generiertem Ton, vorgegebenen Begrenzungsbildern und Referenzmaterial. Sein Produktionsprofil bietet Clips mit vier, sechs oder acht Sekunden bei 24 fps und Ausgabeoptionen von 720p, 1080p und 4K.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "ed99cdcf73650b6edf4208eaedb866ea179fb7f083736f1beb02cb7f375338bb",
    "renderer_sha256": "76caa42c097db2ddc47d1e1e6fe7ca45c8363d7211296daf28e4352971e6c0c8"
  },
  "sourceRevision": "1d5c8203326613ee00ba5080e42db0d51eb32c798e4b317caa6673fe902f9b6a"
}
