{
  "aboutHtml": "<p>Grok Imagine Video ist die klassische Variante der Grok-Imagine-Videofamilie. Die aktuelle Herstellerdokumentation beschreibt das Erzeugen eines neuen Clips aus einem Prompt, die Animation eines Ausgangsbildes, die Verwendung visueller Referenzen sowie die Änderung oder Fortsetzung eines vorhandenen Videos. Diese Abläufe liefern unterschiedliche Ergebnisse: eine neue Szene, eine bearbeitete Fassung des bereitgestellten Materials oder ein Video aus dem ursprünglichen Material mit anschließenden neuen Inhalten. Wählen Sie den Ablauf anhand des vorhandenen Materials und des Teils der Einstellung, der geändert werden soll.</p><p>Beschreiben Sie für eine neue Text-zu-Video-Einstellung Motiv, Umgebung, sichtbare Handlung, Kamera und Ton. Die Standardgenerierung unterstützt Clips von 1–15 Sekunden, Ausgaben in 480p oder 720p und generierten Ton. Dokumentiert sind quadratische, querformatige, hochformatige und breitere Seitenverhältnisse, darunter 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9 und 5:2. Ein eigenes Briefing könnte eine Papierlaterne verlangen, die sich sanft über einem ruhigen Innenhof bewegt, während die Kamera seitlich mitfährt. Prüfen Sie, ob Bewegung, Bildausschnitt und Umgebungsgeräusche diese eine Einstellung unterstützen.</p><p>Bei Bild-zu-Video ist das bereitgestellte Standbild der erste Frame. Bereiten Sie es mit dem gewünschten Zuschnitt, Motiv und den sichtbaren Details vor und beschreiben Sie anschließend die folgende Handlung. Die Ausgabe übernimmt das Seitenverhältnis des Bildes. Ein Ausgangsbild liefert eine genaue Anfangskomposition; bei Referenz-zu-Video geben Bilder dagegen Personen, Produkte oder Umgebung einer neu komponierten Szene vor. Diese Rollen auseinanderzuhalten hilft, einen unbeabsichtigten Anfang zu vermeiden, wenn ein bekannter Gegenstand in eine andere Umgebung gesetzt werden soll.</p><p>Das klassische Modell akzeptiert bis zu sieben Referenzbilder je referenzgestützter Anfrage. Dieser Modus ist auf zehn Sekunden und 720p begrenzt. Weisen Sie jeder Referenz eine klare Rolle zu und benennen Sie sie anhand ihrer Listenposition, beginnend mit &lt;IMAGE_0&gt;. Für eine kurze Produktszene kann eine Referenz den Gegenstand und eine andere den gewünschten Ort bestimmen. Konzentrieren Sie das Briefing auf die Platzierung des Gegenstands und die Haupthandlung. Der klassische Referenzmodus nutzt eine eigene Konfiguration; die Vollversion 1.5 bietet zusätzlich ausgewählte Stimmen und fixierte Frames.</p><p>Die Videobearbeitung verwendet einen vorhandenen Clip und einen Prompt mit der gewünschten Änderung. Der Hersteller akzeptiert MP4-Quellen mit unterstützten Codecs wie H.264, H.265 oder AV1 bis zu einer Länge von 8,7 Sekunden. Das bearbeitete Ergebnis behält Dauer und Seitenverhältnis der Quelle bei und folgt ihrer Auflösung bis zur Obergrenze von 720p. Eigene Einstellungen für Dauer, Seitenverhältnis und Auflösung gelten in diesem Bearbeitungsablauf nicht. Wählen Sie eine Quelle, deren Komposition und Timing bereits zum späteren Einsatz passen, damit sich der Prompt auf die gewünschte visuelle Änderung konzentrieren kann.</p><p>Ein eigenes Bearbeitungsbriefing könnte die Farbe eines Schals ändern und zugleich Gesicht, Bewegung, Hintergrund und Kamera der Person beibehalten. Benennen Sie diese zu erhaltenden Elemente ausdrücklich neben der Änderung. Der Hersteller beschreibt, dass der Rest der Quelle möglichst genau erhalten bleibt; das ist ein sinnvolles Prüfziel, jedoch keine Garantie identischer Pixel. Vergleichen Sie den gesamten Clip, besonders wenn sich der Gegenstand bewegt, andere Objekte kreuzt oder teilweise verdeckt wird. Das fertige Ergebnis ist der bearbeitete Clip, nicht bloß ein Standbild mit der neuen Farbe.</p><p>Die Videoverlängerung setzt am letzten Frame einer vorhandenen MP4-Datei an. Die dokumentierte Quellenlänge beträgt 2–15 Sekunden; der angefügte Teil umfasst 2–10 Sekunden, standardmäßig sechs Sekunden. Die Verlängerungsdauer betrifft nur den neuen Abschnitt. Eine zehnsekündige Quelle mit fünf Sekunden Fortsetzung ergibt ein fünfzehnsekündiges Video mit beiden Teilen. Das Ergebnis behält Seitenverhältnis und Auflösung der Quelle bis zur Obergrenze von 720p bei. Bereiten Sie den letzten Moment der Quelle vor und beschreiben Sie, was danach geschehen soll, etwa eine Person, die sich einem näher kommenden Gegenstand zuwendet, während die Kamera ihre aktuelle Fahrt fortsetzt.</p><p>Prüfen Sie bei einer Verlängerung den Übergang zwischen Quelle und neuem Inhalt. Kontrollieren Sie Motividentität, Bewegungsrichtung, Kameratempo, Licht und Ton, damit die Fortsetzung zur vorherigen Handlung passt. Endet ein Clip an einer visuell ungünstigen Stelle, berücksichtigen Sie diese Grenze ausdrücklich in der nächsten Einstellung. Der Zusammenbau längerer Szenen ist eine Schnittentscheidung: Für Generierung, Referenzen, Bearbeitung und Verlängerung gelten separate Dauergrenzen, und das Gesamtergebnis einer Verlängerung kann länger als ein normaler neu generierter Clip sein.</p><p>Der Videoablauf des Herstellers ist asynchron. Eine Anfragekennung verfolgt den Auftrag, bis das fertige Ergebnis Videoadresse und Dauer liefert; Ausgabeadressen sind nur vorübergehend verfügbar. Bewahren Sie das abspielbare Ergebnis und seine Ausgangsmaterialien für den Produktionsschnitt auf. Die Vollversion Grok Imagine Video 1.5 bietet native 1080p-Generierung und umfassendere Anker für Bilder, Stimmen und Frames, während Lite für einfache Prompts oder ein Ausgangsbild gedacht ist. Die klassische Variante eignet sich besonders, wenn bereits ein Video vorhanden ist, das gezielt verändert oder fortgesetzt werden soll.</p>",
  "aboutText": "Grok Imagine Video ist die klassische Variante der Grok-Imagine-Videofamilie. Die aktuelle Herstellerdokumentation beschreibt das Erzeugen eines neuen Clips aus einem Prompt, die Animation eines Ausgangsbildes, die Verwendung visueller Referenzen sowie die Änderung oder Fortsetzung eines vorhandenen Videos. Diese Abläufe liefern unterschiedliche Ergebnisse: eine neue Szene, eine bearbeitete Fassung des bereitgestellten Materials oder ein Video aus dem ursprünglichen Material mit anschließenden neuen Inhalten. Wählen Sie den Ablauf anhand des vorhandenen Materials und des Teils der Einstellung, der geändert werden soll.\n\nBeschreiben Sie für eine neue Text-zu-Video-Einstellung Motiv, Umgebung, sichtbare Handlung, Kamera und Ton. Die Standardgenerierung unterstützt Clips von 1–15 Sekunden, Ausgaben in 480p oder 720p und generierten Ton. Dokumentiert sind quadratische, querformatige, hochformatige und breitere Seitenverhältnisse, darunter 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9 und 5:2. Ein eigenes Briefing könnte eine Papierlaterne verlangen, die sich sanft über einem ruhigen Innenhof bewegt, während die Kamera seitlich mitfährt. Prüfen Sie, ob Bewegung, Bildausschnitt und Umgebungsgeräusche diese eine Einstellung unterstützen.\n\nBei Bild-zu-Video ist das bereitgestellte Standbild der erste Frame. Bereiten Sie es mit dem gewünschten Zuschnitt, Motiv und den sichtbaren Details vor und beschreiben Sie anschließend die folgende Handlung. Die Ausgabe übernimmt das Seitenverhältnis des Bildes. Ein Ausgangsbild liefert eine genaue Anfangskomposition; bei Referenz-zu-Video geben Bilder dagegen Personen, Produkte oder Umgebung einer neu komponierten Szene vor. Diese Rollen auseinanderzuhalten hilft, einen unbeabsichtigten Anfang zu vermeiden, wenn ein bekannter Gegenstand in eine andere Umgebung gesetzt werden soll.\n\nDas klassische Modell akzeptiert bis zu sieben Referenzbilder je referenzgestützter Anfrage. Dieser Modus ist auf zehn Sekunden und 720p begrenzt. Weisen Sie jeder Referenz eine klare Rolle zu und benennen Sie sie anhand ihrer Listenposition, beginnend mit <IMAGE_0>. Für eine kurze Produktszene kann eine Referenz den Gegenstand und eine andere den gewünschten Ort bestimmen. Konzentrieren Sie das Briefing auf die Platzierung des Gegenstands und die Haupthandlung. Der klassische Referenzmodus nutzt eine eigene Konfiguration; die Vollversion 1.5 bietet zusätzlich ausgewählte Stimmen und fixierte Frames.\n\nDie Videobearbeitung verwendet einen vorhandenen Clip und einen Prompt mit der gewünschten Änderung. Der Hersteller akzeptiert MP4-Quellen mit unterstützten Codecs wie H.264, H.265 oder AV1 bis zu einer Länge von 8,7 Sekunden. Das bearbeitete Ergebnis behält Dauer und Seitenverhältnis der Quelle bei und folgt ihrer Auflösung bis zur Obergrenze von 720p. Eigene Einstellungen für Dauer, Seitenverhältnis und Auflösung gelten in diesem Bearbeitungsablauf nicht. Wählen Sie eine Quelle, deren Komposition und Timing bereits zum späteren Einsatz passen, damit sich der Prompt auf die gewünschte visuelle Änderung konzentrieren kann.\n\nEin eigenes Bearbeitungsbriefing könnte die Farbe eines Schals ändern und zugleich Gesicht, Bewegung, Hintergrund und Kamera der Person beibehalten. Benennen Sie diese zu erhaltenden Elemente ausdrücklich neben der Änderung. Der Hersteller beschreibt, dass der Rest der Quelle möglichst genau erhalten bleibt; das ist ein sinnvolles Prüfziel, jedoch keine Garantie identischer Pixel. Vergleichen Sie den gesamten Clip, besonders wenn sich der Gegenstand bewegt, andere Objekte kreuzt oder teilweise verdeckt wird. Das fertige Ergebnis ist der bearbeitete Clip, nicht bloß ein Standbild mit der neuen Farbe.\n\nDie Videoverlängerung setzt am letzten Frame einer vorhandenen MP4-Datei an. Die dokumentierte Quellenlänge beträgt 2–15 Sekunden; der angefügte Teil umfasst 2–10 Sekunden, standardmäßig sechs Sekunden. Die Verlängerungsdauer betrifft nur den neuen Abschnitt. Eine zehnsekündige Quelle mit fünf Sekunden Fortsetzung ergibt ein fünfzehnsekündiges Video mit beiden Teilen. Das Ergebnis behält Seitenverhältnis und Auflösung der Quelle bis zur Obergrenze von 720p bei. Bereiten Sie den letzten Moment der Quelle vor und beschreiben Sie, was danach geschehen soll, etwa eine Person, die sich einem näher kommenden Gegenstand zuwendet, während die Kamera ihre aktuelle Fahrt fortsetzt.\n\nPrüfen Sie bei einer Verlängerung den Übergang zwischen Quelle und neuem Inhalt. Kontrollieren Sie Motividentität, Bewegungsrichtung, Kameratempo, Licht und Ton, damit die Fortsetzung zur vorherigen Handlung passt. Endet ein Clip an einer visuell ungünstigen Stelle, berücksichtigen Sie diese Grenze ausdrücklich in der nächsten Einstellung. Der Zusammenbau längerer Szenen ist eine Schnittentscheidung: Für Generierung, Referenzen, Bearbeitung und Verlängerung gelten separate Dauergrenzen, und das Gesamtergebnis einer Verlängerung kann länger als ein normaler neu generierter Clip sein.\n\nDer Videoablauf des Herstellers ist asynchron. Eine Anfragekennung verfolgt den Auftrag, bis das fertige Ergebnis Videoadresse und Dauer liefert; Ausgabeadressen sind nur vorübergehend verfügbar. Bewahren Sie das abspielbare Ergebnis und seine Ausgangsmaterialien für den Produktionsschnitt auf. Die Vollversion Grok Imagine Video 1.5 bietet native 1080p-Generierung und umfassendere Anker für Bilder, Stimmen und Frames, während Lite für einfache Prompts oder ein Ausgangsbild gedacht ist. Die klassische Variante eignet sich besonders, wenn bereits ein Video vorhanden ist, das gezielt verändert oder fortgesetzt werden soll.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "5f8e02f11bdaa795c8fdb0730748cfe20912077d34673041ec69bbb840ca92f9",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "de-at",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">SpaceXAI: Grok Imagine Video</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Schließen\">×</button></div><div class=\"idline\"><span>SpaceXAI /</span><code>x-ai/grok-imagine-video</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|x-ai%2Fgrok-imagine-video\">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\">Grok Imagine Video erzeugt kurze Clips aus Text, einem Ausgangsbild oder bis zu sieben visuellen Referenzen. Die klassische Variante bearbeitet auch vorhandene MP4-Clips und fügt 2–10 Sekunden Fortsetzung an. Die Generierung erreicht 720p mit Ton; Bearbeitung und Verlängerung bewahren den Bildausschnitt der Quelle innerhalb ihrer jeweiligen Grenzen.</p><dl class=\"card-io\" data-card-io><div><dt>Zulässige Eingaben</dt><dd>Text · Bilder</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>Grok Imagine Video ist die klassische Variante der Grok-Imagine-Videofamilie. Die aktuelle Herstellerdokumentation beschreibt das Erzeugen eines neuen Clips aus einem Prompt, die Animation eines Ausgangsbildes, die Verwendung visueller Referenzen sowie die Änderung oder Fortsetzung eines vorhandenen Videos. Diese Abläufe liefern unterschiedliche Ergebnisse: eine neue Szene, eine bearbeitete Fassung des bereitgestellten Materials oder ein Video aus dem ursprünglichen Material mit anschließenden neuen Inhalten. Wählen Sie den Ablauf anhand des vorhandenen Materials und des Teils der Einstellung, der geändert werden soll.</p><p>Beschreiben Sie für eine neue Text-zu-Video-Einstellung Motiv, Umgebung, sichtbare Handlung, Kamera und Ton. Die Standardgenerierung unterstützt Clips von 1–15 Sekunden, Ausgaben in 480p oder 720p und generierten Ton. Dokumentiert sind quadratische, querformatige, hochformatige und breitere Seitenverhältnisse, darunter 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9 und 5:2. Ein eigenes Briefing könnte eine Papierlaterne verlangen, die sich sanft über einem ruhigen Innenhof bewegt, während die Kamera seitlich mitfährt. Prüfen Sie, ob Bewegung, Bildausschnitt und Umgebungsgeräusche diese eine Einstellung unterstützen.</p><p>Bei Bild-zu-Video ist das bereitgestellte Standbild der erste Frame. Bereiten Sie es mit dem gewünschten Zuschnitt, Motiv und den sichtbaren Details vor und beschreiben Sie anschließend die folgende Handlung. Die Ausgabe übernimmt das Seitenverhältnis des Bildes. Ein Ausgangsbild liefert eine genaue Anfangskomposition; bei Referenz-zu-Video geben Bilder dagegen Personen, Produkte oder Umgebung einer neu komponierten Szene vor. Diese Rollen auseinanderzuhalten hilft, einen unbeabsichtigten Anfang zu vermeiden, wenn ein bekannter Gegenstand in eine andere Umgebung gesetzt werden soll.</p><p>Das klassische Modell akzeptiert bis zu sieben Referenzbilder je referenzgestützter Anfrage. Dieser Modus ist auf zehn Sekunden und 720p begrenzt. Weisen Sie jeder Referenz eine klare Rolle zu und benennen Sie sie anhand ihrer Listenposition, beginnend mit &lt;IMAGE_0&gt;. Für eine kurze Produktszene kann eine Referenz den Gegenstand und eine andere den gewünschten Ort bestimmen. Konzentrieren Sie das Briefing auf die Platzierung des Gegenstands und die Haupthandlung. Der klassische Referenzmodus nutzt eine eigene Konfiguration; die Vollversion 1.5 bietet zusätzlich ausgewählte Stimmen und fixierte Frames.</p><p>Die Videobearbeitung verwendet einen vorhandenen Clip und einen Prompt mit der gewünschten Änderung. Der Hersteller akzeptiert MP4-Quellen mit unterstützten Codecs wie H.264, H.265 oder AV1 bis zu einer Länge von 8,7 Sekunden. Das bearbeitete Ergebnis behält Dauer und Seitenverhältnis der Quelle bei und folgt ihrer Auflösung bis zur Obergrenze von 720p. Eigene Einstellungen für Dauer, Seitenverhältnis und Auflösung gelten in diesem Bearbeitungsablauf nicht. Wählen Sie eine Quelle, deren Komposition und Timing bereits zum späteren Einsatz passen, damit sich der Prompt auf die gewünschte visuelle Änderung konzentrieren kann.</p><p>Ein eigenes Bearbeitungsbriefing könnte die Farbe eines Schals ändern und zugleich Gesicht, Bewegung, Hintergrund und Kamera der Person beibehalten. Benennen Sie diese zu erhaltenden Elemente ausdrücklich neben der Änderung. Der Hersteller beschreibt, dass der Rest der Quelle möglichst genau erhalten bleibt; das ist ein sinnvolles Prüfziel, jedoch keine Garantie identischer Pixel. Vergleichen Sie den gesamten Clip, besonders wenn sich der Gegenstand bewegt, andere Objekte kreuzt oder teilweise verdeckt wird. Das fertige Ergebnis ist der bearbeitete Clip, nicht bloß ein Standbild mit der neuen Farbe.</p><p>Die Videoverlängerung setzt am letzten Frame einer vorhandenen MP4-Datei an. Die dokumentierte Quellenlänge beträgt 2–15 Sekunden; der angefügte Teil umfasst 2–10 Sekunden, standardmäßig sechs Sekunden. Die Verlängerungsdauer betrifft nur den neuen Abschnitt. Eine zehnsekündige Quelle mit fünf Sekunden Fortsetzung ergibt ein fünfzehnsekündiges Video mit beiden Teilen. Das Ergebnis behält Seitenverhältnis und Auflösung der Quelle bis zur Obergrenze von 720p bei. Bereiten Sie den letzten Moment der Quelle vor und beschreiben Sie, was danach geschehen soll, etwa eine Person, die sich einem näher kommenden Gegenstand zuwendet, während die Kamera ihre aktuelle Fahrt fortsetzt.</p><p>Prüfen Sie bei einer Verlängerung den Übergang zwischen Quelle und neuem Inhalt. Kontrollieren Sie Motividentität, Bewegungsrichtung, Kameratempo, Licht und Ton, damit die Fortsetzung zur vorherigen Handlung passt. Endet ein Clip an einer visuell ungünstigen Stelle, berücksichtigen Sie diese Grenze ausdrücklich in der nächsten Einstellung. Der Zusammenbau längerer Szenen ist eine Schnittentscheidung: Für Generierung, Referenzen, Bearbeitung und Verlängerung gelten separate Dauergrenzen, und das Gesamtergebnis einer Verlängerung kann länger als ein normaler neu generierter Clip sein.</p><p>Der Videoablauf des Herstellers ist asynchron. Eine Anfragekennung verfolgt den Auftrag, bis das fertige Ergebnis Videoadresse und Dauer liefert; Ausgabeadressen sind nur vorübergehend verfügbar. Bewahren Sie das abspielbare Ergebnis und seine Ausgangsmaterialien für den Produktionsschnitt auf. Die Vollversion Grok Imagine Video 1.5 bietet native 1080p-Generierung und umfassendere Anker für Bilder, Stimmen und Frames, während Lite für einfache Prompts oder ein Ausgangsbild gedacht ist. Die klassische Variante eignet sich besonders, wenn bereits ein Video vorhanden ist, das gezielt verändert oder fortgesetzt werden soll.</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>, <code>image</code></dd></div><div><dt>Ausgabe</dt><dd><code>video</code></dd></div><div><dt>Ausgabeformat</dt><dd>Originale MP4-Bytes; keine Normalisierung/Transkodierung</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>x-ai/grok-imagine-video</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></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>1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15</div><div>Minimum: 1</div><div>Maximum: 600</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>Optional</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span><div>480p, 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>Optional</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span><div>16:9, 9:16, 1:1, 4:3, 3:4, 3:2, 2:3</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>Optional</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span><div>false</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\">frame_images</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>array</code></td><td data-cell-label=\"Anforderung\"><span class=\"card-cell-label\">Anforderung</span>Optional</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span><div>Mindestanzahl Elemente: 1</div><div>Maximale Anzahl Elemente: 1</div><div>Eingabeinhalt: Array von Frame-Objekten. Jedes Objekt enthält type=image_url, image_url mit url und frame_type. Verwenden Sie eine HTTPS-Bild-URL und setzen Sie frame_type auf first_frame. Jede Frame-Rolle kommt höchstens einmal vor.</div><div>Exakte Schlüssel: type, image_url, frame_type</div><div>Bedingungen: Diese Schlüssel beschreiben jedes Frame-Objekt; image_url enthält nur url. Lassen Sie frame_images bei einer reinen Textanfrage weg.</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\">input_references</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>array</code></td><td data-cell-label=\"Anforderung\"><span class=\"card-cell-label\">Anforderung</span>Optional</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span></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\">size</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>Optional</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span><div>854x480, 1280x720, 480x854, 720x1280, 480x480, 720x720, 640x480, 960x720, 480x640, 720x960, 720x480, 1080x720, 480x720, 720x1080</div><div>Muster: ^[1-9][0-9]*x[1-9][0-9]*$</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\">callback_url</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>Optional</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span><div>Muster: ^https://</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\">session_id</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>Optional</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span></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\">trace</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span><code>object</code></td><td data-cell-label=\"Anforderung\"><span class=\"card-cell-label\">Anforderung</span>Optional</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span></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\">user</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>Optional</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span></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> · Ein schriftlicher Prompt. · Erforderlich: model, prompt, duration</p><p class=\"note-s\"><code>Geben Sie prompt als Text und duration in ganzen Sekunden an. Wählen Sie eine unterstützte Auflösung; ergänzen Sie ein Seitenverhältnis oder verwenden Sie eine aufgeführte Größe.</code></p><p class=\"note-s\"><code class=\"card-field-name\">model</code>: Typ: string · x-ai/grok-imagine-video</p><p class=\"note-s\"><code class=\"card-field-name\">prompt</code>: Typ: string · Maximale Anzahl UTF-8-Bytes: 10 000 · Mindestens ein Zeichen außer Leerraum erforderlich: Ja</p><p class=\"note-s\"><b>Bild zu Video</b> · Ein schriftlicher Prompt und ein Bild des ersten Frames. · Erforderlich: model, prompt, duration, frame_images</p><p class=\"note-s\"><code>frame_images ist ein Array. Jedes Frame-Objekt enthält type, image_url und frame_type; image_url enthält url. Setzen Sie type auf image_url. Verwenden Sie first_frame. Jede Frame-Rolle kommt höchstens einmal vor. Geben Sie für jeden Frame eine öffentliche HTTPS-Bild-URL an. Verwenden Sie in einer Anfrage entweder Frame-Bilder oder Bildreferenzen; kombinieren Sie beide nicht. Wählen Sie eine unterstützte Auflösung; ergänzen Sie ein Seitenverhältnis oder verwenden Sie eine aufgeführte Größe.</code></p><p class=\"note-s\">Exakte Schlüssel: type, image_url, frame_type</p><p class=\"note-s\"><code class=\"card-field-name\">model</code>: Typ: string · x-ai/grok-imagine-video</p><p class=\"note-s\"><code class=\"card-field-name\">prompt</code>: Typ: string · Maximale Anzahl UTF-8-Bytes: 10 000 · Mindestens ein Zeichen außer Leerraum erforderlich: Ja</p><p class=\"note-s\"><b>Reference to video</b> · Ein schriftlicher Prompt und unterstützte Bildreferenzen. · Erforderlich: model, prompt, duration, input_references</p><p class=\"note-s\"><code>input_references ist ein Array von Objekten. Setzen Sie type auf image_url und verwenden Sie das passende Feld, das url enthält. Verwenden Sie öffentliche HTTPS-URLs. Lassen Sie frame_images weg, um den Referenzmodus auszuwählen. Kombinieren Sie Bildreferenzen nicht mit Frame-Bildern. Wählen Sie eine unterstützte Auflösung; ergänzen Sie ein Seitenverhältnis oder verwenden Sie eine aufgeführte Größe.</code></p><p class=\"note-s\"><code class=\"card-field-name\">model</code>: Typ: string · x-ai/grok-imagine-video</p><p class=\"note-s\"><code class=\"card-field-name\">prompt</code>: Typ: string · Maximale Anzahl UTF-8-Bytes: 10 000 · Mindestens ein Zeichen außer Leerraum erforderlich: Ja</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</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, image</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>optional_controls</code></th><td data-cell-label=\"Vertrag\"><span class=\"card-cell-label\">Vertrag</span>resolution, aspect_ratio, generate_audio, frame_images, input_references, size, callback_url, session_id, trace, user</td></tr></tbody></table></div><p>Lebenszyklus: <code>submit_once_poll_original</code></p><p class=\"note-s\"><code>GET /v1/videos/{public_id}</code></p><p class=\"note-s\"><code>GET /v1/videos/{public_id}/content</code></p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">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>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>Basistarife für Tokens</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=\"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 · In Cache schreiben · Schätzung nur zum Vergleich</span> <b>—</b> <span class=\"price-unit\">/ 1K Tokens</span></div><div><span>Eingabe · In 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>Eingabebild</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=\"Abrechnungseinheit\"><span class=\"card-cell-label\">Abrechnungseinheit</span>pro Bild</td><td data-cell-label=\"Abrechnungsbedingungen\"><span class=\"card-cell-label\">Abrechnungsbedingungen</span>In diesem Preisschlüssel ist keine zusätzliche Bedingung angegeben.</td><td data-cell-label=\"Gebühr\"><span class=\"card-cell-label\">Gebühr</span><div><span>Eingabe · Eingabebild · Schätzung nur zum Vergleich</span> <b>$0.004</b> <span class=\"price-unit\">pro Bild</span></div></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=\"Abrechnungseinheit\"><span class=\"card-cell-label\">Abrechnungseinheit</span>pro Videosekunde</td><td data-cell-label=\"Abrechnungsbedingungen\"><span class=\"card-cell-label\">Abrechnungsbedingungen</span>resolution: 480p</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.1</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>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=\"Abrechnungseinheit\"><span class=\"card-cell-label\">Abrechnungseinheit</span>pro Videosekunde</td><td data-cell-label=\"Abrechnungsbedingungen\"><span class=\"card-cell-label\">Abrechnungsbedingungen</span>resolution: 720p</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.14</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 Generierungskosten</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=\"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>$0.1</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 abschließenden Verbrauchsdatensatzes. <a href=\"/docs/de-at/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>Eingabebild</th><td data-cell-label=\"Abrechnungsbedingungen\"><span class=\"card-cell-label\">Abrechnungsbedingungen</span>In diesem Preisschlüssel ist keine zusätzliche Bedingung angegeben.</td><td data-cell-label=\"Gebühr\"><span class=\"card-cell-label\">Gebühr</span><div><span>Eingabe · Eingabebild</span> <b>$0.004</b> <span class=\"price-unit\">pro Bild</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>resolution: 480p</td><td data-cell-label=\"Gebühr\"><span class=\"card-cell-label\">Gebühr</span><div><span>Ausgabe · Videopreis</span> <b>$0.1</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>resolution: 720p</td><td data-cell-label=\"Gebühr\"><span class=\"card-cell-label\">Gebühr</span><div><span>Ausgabe · Videopreis</span> <b>$0.14</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-2720-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2720-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · Video erstellen</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-2720-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2720-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nfrom pathlib import Path\nPath(&#39;request.json&#39;).write_text(&#39;{&quot;aspect_ratio&quot;:&quot;16:9&quot;,&quot;duration&quot;:8,&quot;model&quot;:&quot;x-ai/grok-imagine-video&quot;,&quot;prompt&quot;:&quot;A serene mountain landscape at sunset&quot;,&quot;resolution&quot;:&quot;720p&quot;}&#39;, encoding=&#39;utf-8&#39;)\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nr=json.loads(Path(&#39;result.json&#39;).read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint(&#39;Keep the complete JSON and response headers; do not resubmit an unknown creation.&#39;)\nPY_RESULT\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Ergebnisse abrufen und speichern</h3><h4>Ailoot Ultra · Video</h4><p class=\"note-s\">signierte Inhalts-URLs der Ihnen zugeordneten Ausgaben</p><ul class=\"card-result-paths\"><li><code>GET /v1/videos/{public_id}</code></li><li><code>GET /v1/videos/{public_id}/content</code></li></ul><h5>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-2721-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2721-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-2721-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2721-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-2722-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2722-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-2722-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2722-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 tatsächliche, Ihnen zugeordnete Ausgabe und deren zurückgegebene gemessene Metadaten 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\">503 result_pending_check + ursprüngliche id + X-Should-Retry:false; ursprüngliche Anfrage niemals wiederholen</p></div><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\">index</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>integer</td><td data-cell-label=\"Bedeutung\"><span class=\"card-cell-label\">Bedeutung</span>Nullbasierte Position dieses Videos in der Ausgabeliste.</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">content_url</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>Signierte HTTPS-Download-URL für dieses fertiggestellte Video.</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">sha256</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string | null</td><td data-cell-label=\"Bedeutung\"><span class=\"card-cell-label\">Bedeutung</span>SHA-256-Prüfsumme der ursprünglichen Videobytes; null, falls nicht verfügbar.</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">size_bytes</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>integer | null</td><td data-cell-label=\"Bedeutung\"><span class=\"card-cell-label\">Bedeutung</span>Größe der ursprünglichen Videodatei in Bytes; null, falls nicht verfügbar.</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">duration_ms</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>integer | null</td><td data-cell-label=\"Bedeutung\"><span class=\"card-cell-label\">Bedeutung</span>Gemessene Videodauer in Millisekunden; null, falls nicht verfügbar.</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">width</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>integer | null</td><td data-cell-label=\"Bedeutung\"><span class=\"card-cell-label\">Bedeutung</span>Videobreite in Pixeln; null, falls nicht verfügbar.</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">height</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>integer | null</td><td data-cell-label=\"Bedeutung\"><span class=\"card-cell-label\">Bedeutung</span>Videohöhe in Pixeln; null, falls nicht verfügbar.</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">video_codec</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string | null</td><td data-cell-label=\"Bedeutung\"><span class=\"card-cell-label\">Bedeutung</span>Videocodec-Kennung; null, falls nicht erfasst.</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">has_audio</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>boolean | null</td><td data-cell-label=\"Bedeutung\"><span class=\"card-cell-label\">Bedeutung</span>Ob das Video eine Audiospur enthält; null, falls nicht gemessen.</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">audio_codec</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string | null</td><td data-cell-label=\"Bedeutung\"><span class=\"card-cell-label\">Bedeutung</span>Audiocodec-Kennung; null, wenn keine Kennung erfasst wurde.</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>404 · <code>not_found_error</code></th><td data-cell-label=\"Bedingung\"><span class=\"card-cell-label\">Bedingung</span>Der Videozugriff ist nicht verfügbar oder diese Video-ID wurde nicht gefunden.</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span>Prüfen Sie den Videozugriff. Verwenden Sie bei einem vorhandenen Video dessen ursprüngliche öffentliche ID und denselben API-Schlüssel.</td></tr><tr><th data-cell-label=\"Antwort\" scope=\"row\"><span class=\"card-cell-label\">Antwort</span>401 · <code>authentication_error</code></th><td data-cell-label=\"Bedingung\"><span class=\"card-cell-label\">Bedingung</span>Der API-Schlüssel stimmt nicht mit dem authentifizierten Konto überein.</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span>Prüfen Sie Ihren API-Schlüssel und Ihren Kontozugriff vor der Übermittlung.</td></tr><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>Die Anfrage konnte nicht gelesen werden oder der Downloadindex ist ungültig.</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span>Korrigieren Sie den Anfrageinhalt. Wählen Sie für einen Download einen Ausgabeindex, den die ursprüngliche Aufgabe zurückgegeben hat.</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>Die ausgewählte Videokonfiguration kann nicht bepreist werden.</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span>Wählen Sie eine unterstützte Videokonfiguration und vervollständigen Sie deren Pflichtoptionen, bevor Sie eine korrigierte Anfrage übermitteln.</td></tr><tr><th data-cell-label=\"Antwort\" scope=\"row\"><span class=\"card-cell-label\">Antwort</span>422 · <code>invalid_request_error</code></th><td data-cell-label=\"Bedingung\"><span class=\"card-cell-label\">Bedingung</span>Eine Videoeingabe oder die ursprüngliche Fortsetzungsaufgabe ist ungültig.</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span>Verwenden Sie gültige HTTPS-Eingaben. Verwenden Sie für eine Fortsetzung Ihre fertiggestellte ursprüngliche öffentliche Video-ID mit demselben API-Schlüssel.</td></tr><tr><th data-cell-label=\"Antwort\" scope=\"row\"><span class=\"card-cell-label\">Antwort</span>402 · <code>billing_error</code></th><td data-cell-label=\"Bedingung\"><span class=\"card-cell-label\">Bedingung</span>Das verfügbare Guthaben oder die Limits erlauben keine Reservierung.</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span>Prüfen Sie Ihr verfügbares Guthaben und Ihre Limits, bevor Sie eine neue Anfrage senden.</td></tr><tr><th data-cell-label=\"Antwort\" scope=\"row\"><span class=\"card-cell-label\">Antwort</span>503 · <code>server_error</code></th><td data-cell-label=\"Bedingung\"><span class=\"card-cell-label\">Bedingung</span>Videoprüfung, Speicher oder Dienstzugriff ist vorübergehend nicht verfügbar.</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span>Warten Sie auf die Verfügbarkeit des Dienstes. Falls Sie bereits eine Video-ID haben, prüfen Sie diese ursprüngliche Aufgabe, statt eine weitere Generierung anzulegen.</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>Das ursprüngliche Videoergebnis und die Abrechnung müssen geprüft werden.</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span>Bewahren Sie die zurückgegebene Video-ID auf und prüfen Sie diese Aufgabe. Senden Sie während der Prüfung keine Ersatzanfrage zur Generierung.</td></tr><tr><th data-cell-label=\"Antwort\" scope=\"row\"><span class=\"card-cell-label\">Antwort</span>503 · <code>owned_result_unavailable</code></th><td data-cell-label=\"Bedingung\"><span class=\"card-cell-label\">Bedingung</span>Der Download des vorhandenen Videos ist vorübergehend nicht verfügbar.</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span>Prüfen Sie dieselbe Videoaufgabe später erneut und laden Sie deren vorhandene Ausgabe herunter. Eine neue Generierung erstellt einen separaten Vorgang.</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 Videoinhalt wurde nicht veröffentlicht.</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span>Prüfen Sie den ursprünglichen Aufgabenstatus. Laden Sie die Ausgabe nach der Meldung completed herunter; folgen Sie bei failed dem Hinweis zur Abrechnungsprüfung.</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=x-ai%2Fgrok-imagine-video&amp;route=Ultra&amp;caller=x-ai%2Fgrok-imagine-video&amp;fmt=videos\"><code>x-ai/grok-imagine-video</code></a></span></p><h4>Aliasnamen für Methodenpfade</h4><p class=\"note-s\">Verwenden Sie die oben angezeigten Methodenpfade.</p><h4>Zugehörige Aufrufer-IDs</h4><p class=\"note-s\"><a href=\"#m=x-ai%2Fgrok-imagine-video&amp;route=Ultra&amp;caller=x-ai%2Fgrok-imagine-video&amp;fmt=videos\"><code>x-ai/grok-imagine-video</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "x-ai/grok-imagine-video",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "x-ai/grok-imagine-video",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|x-ai%2Fgrok-imagine-video",
      "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": "Bewahren Sie jede tatsächliche, Ihnen zugeordnete Ausgabe und deren zurückgegebene gemessene Metadaten auf.",
            "defaults": {
              "aspect_ratio": null,
              "duration": null,
              "generate_audio": "endpoint capability flag when published; omitted unknown stays unknown; never guarantees audio track",
              "resolution": null,
              "seed": null,
              "size": null,
              "wire_omissions_preserved": true
            },
            "errors": [
              {
                "condition": "Der Videozugriff ist nicht verfügbar oder diese Video-ID wurde nicht gefunden.",
                "http_status": 404,
                "public_identifier_field": "error.type",
                "recovery": "Prüfen Sie den Videozugriff. Verwenden Sie bei einem vorhandenen Video dessen ursprüngliche öffentliche ID und denselben API-Schlüssel.",
                "type": "not_found_error"
              },
              {
                "condition": "Der API-Schlüssel stimmt nicht mit dem authentifizierten Konto überein.",
                "http_status": 401,
                "public_identifier_field": "error.type",
                "recovery": "Prüfen Sie Ihren API-Schlüssel und Ihren Kontozugriff vor der Übermittlung.",
                "type": "authentication_error"
              },
              {
                "condition": "Die Anfrage konnte nicht gelesen werden oder der Downloadindex ist ungültig.",
                "http_status": 400,
                "public_identifier_field": "error.type",
                "recovery": "Korrigieren Sie den Anfrageinhalt. Wählen Sie für einen Download einen Ausgabeindex, den die ursprüngliche Aufgabe zurückgegeben hat.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Die ausgewählte Videokonfiguration kann nicht bepreist werden.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Wählen Sie eine unterstützte Videokonfiguration und vervollständigen Sie deren Pflichtoptionen, bevor Sie eine korrigierte Anfrage übermitteln.",
                "type": "price_unavailable"
              },
              {
                "condition": "Eine Videoeingabe oder die ursprüngliche Fortsetzungsaufgabe ist ungültig.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Verwenden Sie gültige HTTPS-Eingaben. Verwenden Sie für eine Fortsetzung Ihre fertiggestellte ursprüngliche öffentliche Video-ID mit demselben API-Schlüssel.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Das verfügbare Guthaben oder die Limits erlauben keine Reservierung.",
                "http_status": 402,
                "public_identifier_field": "error.type",
                "recovery": "Prüfen Sie Ihr verfügbares Guthaben und Ihre Limits, bevor Sie eine neue Anfrage senden.",
                "type": "billing_error"
              },
              {
                "condition": "Videoprüfung, Speicher oder Dienstzugriff ist vorübergehend nicht verfügbar.",
                "http_status": 503,
                "public_identifier_field": "error.type",
                "recovery": "Warten Sie auf die Verfügbarkeit des Dienstes. Falls Sie bereits eine Video-ID haben, prüfen Sie diese ursprüngliche Aufgabe, statt eine weitere Generierung anzulegen.",
                "type": "server_error"
              },
              {
                "code": "result_pending_check",
                "condition": "Das ursprüngliche Videoergebnis und die Abrechnung müssen geprüft werden.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Bewahren Sie die zurückgegebene Video-ID auf und prüfen Sie diese Aufgabe. Senden Sie während der Prüfung keine Ersatzanfrage zur Generierung.",
                "type": "server_error"
              },
              {
                "code": "owned_result_unavailable",
                "condition": "Der Download des vorhandenen Videos ist vorübergehend nicht verfügbar.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Prüfen Sie dieselbe Videoaufgabe später erneut und laden Sie deren vorhandene Ausgabe herunter. Eine neue Generierung erstellt einen separaten Vorgang.",
                "type": "server_error"
              },
              {
                "condition": "Der Videoinhalt wurde nicht veröffentlicht.",
                "http_status": 409,
                "public_identifier_field": "error.type",
                "recovery": "Prüfen Sie den ursprünglichen Aufgabenstatus. Laden Sie die Ausgabe nach der Meldung completed herunter; folgen Sie bei failed dem Hinweis zur Abrechnungsprüfung.",
                "type": "video_not_ready"
              }
            ],
            "hints": [
              "No null values or duplicate keys at any JSON object level",
              "No duration/resolution/aspect default is inserted",
              "Prompt required for all21 despite broader official image-only schema",
              "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
              "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
              "No n/output-count/client price fields accepted",
              "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
            ],
            "ignored_fields": [],
            "lifecycle": {
              "cancel_endpoint": null,
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}/content",
                  "query": {
                    "index": "actual output index"
                  }
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "mode": "submit_once_poll_original",
              "public_id": "video_<uuid>; owner user/key/group scope",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}"
                }
              ],
              "submit_status": 202,
              "terminal_failure_public": "200 failed + charge_pending_check=true; inspect original operation",
              "terminal_provider_states": [
                "failed",
                "cancelled",
                "expired"
              ],
              "unknown": "503 result_pending_check + ursprüngliche id + X-Should-Retry:false; ursprüngliche Anfrage niemals wiederholen"
            },
            "material_combinations": [
              {
                "mode": "text_to_video",
                "model": {
                  "enum": [
                    "x-ai/grok-imagine-video"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "Geben Sie prompt als Text und duration in ganzen Sekunden an. Wählen Sie eine unterstützte Auflösung; ergänzen Sie ein Seitenverhältnis oder verwenden Sie eine aufgeführte Größe.",
                "required": [
                  "model",
                  "prompt",
                  "duration"
                ],
                "required_material": "Ein schriftlicher Prompt."
              },
              {
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "mode": "image_to_video",
                "model": {
                  "enum": [
                    "x-ai/grok-imagine-video"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "frame_images ist ein Array. Jedes Frame-Objekt enthält type, image_url und frame_type; image_url enthält url. Setzen Sie type auf image_url. Verwenden Sie first_frame. Jede Frame-Rolle kommt höchstens einmal vor. Geben Sie für jeden Frame eine öffentliche HTTPS-Bild-URL an. Verwenden Sie in einer Anfrage entweder Frame-Bilder oder Bildreferenzen; kombinieren Sie beide nicht. Wählen Sie eine unterstützte Auflösung; ergänzen Sie ein Seitenverhältnis oder verwenden Sie eine aufgeführte Größe.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "frame_images"
                ],
                "required_material": "Ein schriftlicher Prompt und ein Bild des ersten Frames."
              },
              {
                "mode": "Reference to video",
                "model": {
                  "enum": [
                    "x-ai/grok-imagine-video"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "input_references ist ein Array von Objekten. Setzen Sie type auf image_url und verwenden Sie das passende Feld, das url enthält. Verwenden Sie öffentliche HTTPS-URLs. Lassen Sie frame_images weg, um den Referenzmodus auszuwählen. Kombinieren Sie Bildreferenzen nicht mit Frame-Bildern. Wählen Sie eine unterstützte Auflösung; ergänzen Sie ein Seitenverhältnis oder verwenden Sie eine aufgeführte Größe.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "input_references"
                ],
                "required_material": "Ein schriftlicher Prompt und unterstützte Bildreferenzen."
              }
            ],
            "operation_modes": [
              "text_to_video",
              "image_to_video_frame_images",
              "reference_to_video"
            ],
            "outputs": {
              "content_range_supported": true,
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "condition": "Always present for each completed output.",
                  "description": "Nullbasierte Position dieses Videos in der Ausgabeliste.",
                  "field_path": "outputs[].index",
                  "json_schema": {
                    "type": "integer"
                  },
                  "name": "index",
                  "nullable": false,
                  "type": "integer"
                },
                {
                  "condition": "Present after the owned result is available and a signed URL is created.",
                  "description": "Signierte HTTPS-Download-URL für dieses fertiggestellte Video.",
                  "field_path": "outputs[].content_url",
                  "json_schema": {
                    "type": "string"
                  },
                  "name": "content_url",
                  "nullable": false,
                  "type": "string"
                },
                {
                  "condition": "A nonempty recorded digest is returned; otherwise null.",
                  "description": "SHA-256-Prüfsumme der ursprünglichen Videobytes; null, falls nicht verfügbar.",
                  "field_path": "outputs[].sha256",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "sha256",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when the recorded file size is positive.",
                  "description": "Größe der ursprünglichen Videodatei in Bytes; null, falls nicht verfügbar.",
                  "field_path": "outputs[].size_bytes",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "size_bytes",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned when the measured duration is positive.",
                  "description": "Gemessene Videodauer in Millisekunden; null, falls nicht verfügbar.",
                  "field_path": "outputs[].duration_ms",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "duration_ms",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "Videobreite in Pixeln; null, falls nicht verfügbar.",
                  "field_path": "outputs[].width",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "width",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "Videohöhe in Pixeln; null, falls nicht verfügbar.",
                  "field_path": "outputs[].height",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "height",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned together with positive recorded width and height.",
                  "description": "Videocodec-Kennung; null, falls nicht erfasst.",
                  "field_path": "outputs[].video_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "video_codec",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                  "description": "Ob das Video eine Audiospur enthält; null, falls nicht gemessen.",
                  "field_path": "outputs[].has_audio",
                  "json_schema": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "name": "has_audio",
                  "nullable": true,
                  "type": "boolean | null"
                },
                {
                  "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                  "description": "Audiocodec-Kennung; null, wenn keine Kennung erfasst wurde.",
                  "field_path": "outputs[].audio_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "audio_codec",
                  "nullable": true,
                  "type": "string | null"
                }
              ],
              "format": "original MP4 bytes; no normalization/transcode",
              "max_aggregate_seconds": 2400,
              "max_bytes_per_output": 67108864,
              "max_seconds_per_output": 600,
              "result": "signierte Inhalts-URLs der Ihnen zugeordneten Ausgaben",
              "unmeasured_fields_nullable": true
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "x-ai/grok-imagine-video"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "schema": {
                  "const": "x-ai/grok-imagine-video"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minLength": 1,
                "name": "prompt",
                "required": true,
                "schema": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  1,
                  2,
                  3,
                  4,
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15
                ],
                "enum_known": true,
                "maximum": 600,
                "minimum": 1,
                "name": "duration",
                "required": true,
                "schema": {
                  "enum": [
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15
                  ],
                  "maximum": 600,
                  "minimum": 1,
                  "type": "integer"
                },
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "480p",
                  "720p"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "schema": {
                  "enum": [
                    "480p",
                    "720p"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "16:9",
                  "9:16",
                  "1:1",
                  "4:3",
                  "3:4",
                  "3:2",
                  "2:3"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "schema": {
                  "enum": [
                    "16:9",
                    "9:16",
                    "1:1",
                    "4:3",
                    "3:4",
                    "3:2",
                    "2:3"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  false
                ],
                "enum_known": true,
                "name": "generate_audio",
                "required": false,
                "schema": {
                  "enum": [
                    false
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "conditions": "Diese Schlüssel beschreiben jedes Frame-Objekt; image_url enthält nur url. Lassen Sie frame_images bei einer reinen Textanfrage weg.",
                "content": "Array von Frame-Objekten. Jedes Objekt enthält type=image_url, image_url mit url und frame_type. Verwenden Sie eine HTTPS-Bild-URL und setzen Sie frame_type auf first_frame. Jede Frame-Rolle kommt höchstens einmal vor.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "maxItems": 1,
                "max_items": 1,
                "minItems": 1,
                "min_items": 1,
                "name": "frame_images",
                "required": false,
                "schema": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_frame"
                        ]
                      },
                      "image_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "format": "uri",
                            "pattern": "^https://",
                            "type": "string",
                            "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url",
                      "frame_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 1,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "input_references",
                "required": false,
                "schema": {
                  "items": {
                    "oneOf": [
                      {
                        "additionalProperties": false,
                        "properties": {
                          "image_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "format": "uri",
                                "pattern": "^https://",
                                "type": "string",
                                "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "image_url"
                          }
                        },
                        "required": [
                          "type",
                          "image_url"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "type": "array"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "854x480",
                  "1280x720",
                  "480x854",
                  "720x1280",
                  "480x480",
                  "720x720",
                  "640x480",
                  "960x720",
                  "480x640",
                  "720x960",
                  "720x480",
                  "1080x720",
                  "480x720",
                  "720x1080"
                ],
                "enum_known": true,
                "name": "size",
                "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                "required": false,
                "schema": {
                  "enum": [
                    "854x480",
                    "1280x720",
                    "480x854",
                    "720x1280",
                    "480x480",
                    "720x720",
                    "640x480",
                    "960x720",
                    "480x640",
                    "720x960",
                    "720x480",
                    "1080x720",
                    "480x720",
                    "720x1080"
                  ],
                  "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                  "type": "string"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "callback_url",
                "pattern": "^https://",
                "required": false,
                "schema": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "session_id",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "trace",
                "required": false,
                "schema": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "object"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "user",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              }
            ],
            "request_schema": {
              "$schema": "https://json-schema.org/draft/2020-12/schema",
              "additionalProperties": false,
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "16:9",
                    "9:16",
                    "1:1",
                    "4:3",
                    "3:4",
                    "3:2",
                    "2:3"
                  ]
                },
                "callback_url": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "creativity": false,
                "duration": {
                  "enum": [
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15
                  ],
                  "maximum": 600,
                  "minimum": 1,
                  "type": "integer"
                },
                "frame_images": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_frame"
                        ]
                      },
                      "image_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "format": "uri",
                            "pattern": "^https://",
                            "type": "string",
                            "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url",
                      "frame_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 1,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "generate_audio": {
                  "enum": [
                    false
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "input_references": {
                  "items": {
                    "oneOf": [
                      {
                        "additionalProperties": false,
                        "properties": {
                          "image_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "format": "uri",
                                "pattern": "^https://",
                                "type": "string",
                                "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "image_url"
                          }
                        },
                        "required": [
                          "type",
                          "image_url"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "type": "array"
                },
                "model": {
                  "const": "x-ai/grok-imagine-video"
                },
                "previous_job_id": false,
                "prompt": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "provider": false,
                "resolution": {
                  "enum": [
                    "480p",
                    "720p"
                  ]
                },
                "seed": false,
                "session_id": {
                  "maxLength": 256,
                  "type": "string"
                },
                "size": {
                  "enum": [
                    "854x480",
                    "1280x720",
                    "480x854",
                    "720x1280",
                    "480x480",
                    "720x720",
                    "640x480",
                    "960x720",
                    "480x640",
                    "720x960",
                    "720x480",
                    "1080x720",
                    "480x720",
                    "720x1080"
                  ],
                  "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                  "type": "string"
                },
                "trace": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "upscale_factor": false,
                "user": {
                  "maxLength": 256,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt",
                "duration"
              ],
              "title": "Video generation request",
              "type": "object",
              "x-source-global-rules": [
                "No null values or duplicate keys at any JSON object level",
                "No duration/resolution/aspect default is inserted",
                "Prompt required for all21 despite broader official image-only schema",
                "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
                "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
                "No n/output-count/client price fields accepted",
                "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
              ],
              "x-source-material-combinations": [
                "Exact model/card, positive published duration, model resolution/aspect membership and valid frozen quote are all required; independent enum arrays are not proven provider Cartesian combinations.",
                "Use exact published size or compatible resolution/aspect. Omitted options stay omitted; no guessed geometry.",
                "first_frame/last_frame roles each occur at most once; frame_images wins mode precedence over input_references.",
                "provider options are unavailable for this model despite any published passthrough-name allowlist.",
                "Frame images plus image references are rejected because mixed additive input count is unproved; pure frame or pure reference mode remains separately priced."
              ]
            },
            "unsupported": [
              "seed",
              "provider",
              "previous_job_id",
              "upscale_factor",
              "creativity"
            ]
          },
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "text",
              "image"
            ],
            "optional_controls": [
              "resolution",
              "aspect_ratio",
              "generate_audio",
              "frame_images",
              "input_references",
              "size",
              "callback_url",
              "session_id",
              "trace",
              "user"
            ],
            "required": [
              "model",
              "prompt",
              "duration"
            ]
          },
          "lifecycle": {
            "cancel_endpoint": null,
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{public_id}/content",
                "query": {
                  "index": "actual output index"
                }
              }
            ],
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "mode": "submit_once_poll_original",
            "public_id": "video_<uuid>; owner user/key/group scope",
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{public_id}"
              }
            ],
            "submit_status": 202,
            "terminal_failure_public": "200 failed + charge_pending_check=true; inspect original operation",
            "terminal_provider_states": [
              "failed",
              "cancelled",
              "expired"
            ],
            "unknown": "503 result_pending_check + originalid + X-Should-Retry:false; never replay original"
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_video",
            "image_to_video_frame_images",
            "reference_to_video"
          ],
          "output": {
            "content_range_supported": true,
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "condition": "Always present for each completed output.",
                "description": "Zero-based position of this video in the outputs list.",
                "field_path": "outputs[].index",
                "json_schema": {
                  "type": "integer"
                },
                "name": "index",
                "nullable": false,
                "type": "integer"
              },
              {
                "condition": "Present after the owned result is available and a signed URL is created.",
                "description": "Signed HTTPS download URL for this completed video.",
                "field_path": "outputs[].content_url",
                "json_schema": {
                  "type": "string"
                },
                "name": "content_url",
                "nullable": false,
                "type": "string"
              },
              {
                "condition": "A nonempty recorded digest is returned; otherwise null.",
                "description": "SHA-256 digest of the original video bytes; null if unavailable.",
                "field_path": "outputs[].sha256",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "sha256",
                "nullable": true,
                "type": "string | null"
              },
              {
                "condition": "Returned when the recorded file size is positive.",
                "description": "Size of the original video file in bytes; null if unavailable.",
                "field_path": "outputs[].size_bytes",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "size_bytes",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Returned when the measured duration is positive.",
                "description": "Measured video duration in milliseconds; null if unavailable.",
                "field_path": "outputs[].duration_ms",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "duration_ms",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Width, height and the video codec are returned together when recorded.",
                "description": "Video width in pixels; null if unavailable.",
                "field_path": "outputs[].width",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "width",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Width, height and the video codec are returned together when recorded.",
                "description": "Video height in pixels; null if unavailable.",
                "field_path": "outputs[].height",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "height",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Returned together with positive recorded width and height.",
                "description": "Video codec identifier; null if not recorded.",
                "field_path": "outputs[].video_codec",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "video_codec",
                "nullable": true,
                "type": "string | null"
              },
              {
                "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                "description": "Whether the video contains an audio track; null if not measured.",
                "field_path": "outputs[].has_audio",
                "json_schema": {
                  "type": [
                    "boolean",
                    "null"
                  ]
                },
                "name": "has_audio",
                "nullable": true,
                "type": "boolean | null"
              },
              {
                "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                "description": "Audio codec identifier; null when no identifier is recorded.",
                "field_path": "outputs[].audio_codec",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "audio_codec",
                "nullable": true,
                "type": "string | null"
              }
            ],
            "format": "original MP4 bytes; no normalization/transcode",
            "max_aggregate_seconds": 2400,
            "max_bytes_per_output": 67108864,
            "max_seconds_per_output": 600,
            "result": "signed owned content URLs",
            "unmeasured_fields_nullable": true
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per image"
            },
            "label": "Input image",
            "units": [
              {
                "amount": "0.004",
                "amount_unit": "usd_per_image",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_image_input",
                "label": "Input image",
                "native_amount_usd_per_unit": "0.004",
                "native_quantity": 1,
                "public_unit_label": "per image",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "image"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 480p",
              "quoted_unit": "per video second"
            },
            "label": "Videopreis",
            "units": [
              {
                "amount": "0.1",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_video_output_second_480p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.1",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 720p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.14",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_video_output_second_720p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.14",
                "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 Generierungskosten",
            "units": [
              {
                "amount": "0.1",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.1",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nfrom pathlib import Path\nPath('request.json').write_text('{\"aspect_ratio\":\"16:9\",\"duration\":8,\"model\":\"x-ai/grok-imagine-video\",\"prompt\":\"A serene mountain landscape at sunset\",\"resolution\":\"720p\"}', encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('result.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "curl · create video",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_STATUS_URL'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nr=json.loads(Path('result.json').read_text())\nif not isinstance(r.get('id'),str) or not r['id']:raise SystemExit('Keep the original response and headers for reconciliation; no returned ID')\nPath('status-url.txt').write_text('https://api.ailoot.ai/v1/videos/'+quote(r['id'],safe=''))\nPY_STATUS_URL\ncurl --fail-with-body --silent --show-error \"$(cat status-url.txt)\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -D status-headers.txt -o status.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('status.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "GET original status",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_ASSETS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path('status.json').read_text())\nif r.get('status')!='completed':raise SystemExit('Keep the original ID and read its status; never recreate an unknown job')\nif not isinstance(r.get('data'),list) or not r['data']:raise SystemExit('Keep the complete original status; no completed outputs supplied')\nurls=[]\nfor i,u in enumerate(r.get('data',[])):\n    if not isinstance(u,str):raise SystemExit('Keep the original response; unexpected asset shape')\n    urls.append((str(i),u))\nfor label,path in urls:\n    u=urljoin('https://api.ailoot.ai',path);z=urlsplit(u)\n    if z.scheme!='https' or z.netloc!='api.ailoot.ai' or z.username or z.password:raise SystemExit('Use the actual returned Ailoot owned content URL')\n    target=Path('owned-'+label+'.bin')\n    subprocess.run(['curl','--fail-with-body','--silent','--show-error',u,'-H','Authorization: Bearer '+os.environ['AILOOT_API_KEY'],'-D',str(target)+'.headers','-o',str(target)],check=True)\nprint('All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.')\nPY_ASSETS\n",
            "label": "Save every completed owned output",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image"
        ],
        "label": "Видео",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per image"
            },
            "label": "Input image",
            "units": [
              {
                "amount": "0.004",
                "amount_unit": "usd_per_image",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_image_input",
                "label": "Input image",
                "native_amount_usd_per_unit": "0.004",
                "native_quantity": 1,
                "public_unit_label": "per image",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "image"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 480p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.1",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_video_output_second_480p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.1",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 720p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.14",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_video_output_second_720p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.14",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.1",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.1",
                "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": "x-ai/grok-imagine-video",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{public_id}",
          "GET /v1/videos/{public_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.004",
            "amount_unit": "usd_per_image",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_image_input",
            "label": "Input image",
            "native_amount_usd_per_unit": "0.004",
            "native_quantity": 1,
            "public_unit_label": "per image",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "image"
          },
          {
            "amount": "0.1",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_video_output_second_480p",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.1",
            "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.14",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_video_output_second_720p",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.14",
            "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.1",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.1",
            "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": "x-ai/grok-imagine-video",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "fba643fa20953f29bf81d1039cdb30ccf1ee9eec64e7eafb8bbe7ef33d35e0a5",
    "input_html_sha256": "136a4e2aee1b0f9cf626b58bed32bdec378fbf795b9c7c027f6d4d24ee0efe39",
    "private_audit_sha256": "50ceeee0893f9c029c0ac7a56bf41c56867f71519cb783a62f936139f0279a42",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/de-at/x-ai-grok-imagine-video/",
    "description": "Grok Imagine Video erzeugt kurze Clips aus Text, einem Ausgangsbild oder bis zu sieben visuellen Referenzen. Die klassische Variante bearbeitet auch vorhandene MP4-Clips und fügt 2–10 Sekunden Fortsetzung an. Die Generierung erreicht 720p mit Ton; Bearbeitung und Verlängerung bewahren den Bildausschnitt der Quelle innerhalb ihrer jeweiligen Grenzen.",
    "locale": "de-at",
    "md_url": "https://ailoot.ai/models/de-at/x-ai-grok-imagine-video/index.md",
    "title": "SpaceXAI: Grok Imagine Video — Ailoot",
    "url": "https://ailoot.ai/models/de-at/x-ai-grok-imagine-video/"
  },
  "rawModel": {
    "about": "Grok Imagine Video ist die klassische Variante der Grok-Imagine-Videofamilie. Die aktuelle Herstellerdokumentation beschreibt das Erzeugen eines neuen Clips aus einem Prompt, die Animation eines Ausgangsbildes, die Verwendung visueller Referenzen sowie die Änderung oder Fortsetzung eines vorhandenen Videos. Diese Abläufe liefern unterschiedliche Ergebnisse: eine neue Szene, eine bearbeitete Fassung des bereitgestellten Materials oder ein Video aus dem ursprünglichen Material mit anschließenden neuen Inhalten. Wählen Sie den Ablauf anhand des vorhandenen Materials und des Teils der Einstellung, der geändert werden soll.\n\nBeschreiben Sie für eine neue Text-zu-Video-Einstellung Motiv, Umgebung, sichtbare Handlung, Kamera und Ton. Die Standardgenerierung unterstützt Clips von 1–15 Sekunden, Ausgaben in 480p oder 720p und generierten Ton. Dokumentiert sind quadratische, querformatige, hochformatige und breitere Seitenverhältnisse, darunter 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9 und 5:2. Ein eigenes Briefing könnte eine Papierlaterne verlangen, die sich sanft über einem ruhigen Innenhof bewegt, während die Kamera seitlich mitfährt. Prüfen Sie, ob Bewegung, Bildausschnitt und Umgebungsgeräusche diese eine Einstellung unterstützen.\n\nBei Bild-zu-Video ist das bereitgestellte Standbild der erste Frame. Bereiten Sie es mit dem gewünschten Zuschnitt, Motiv und den sichtbaren Details vor und beschreiben Sie anschließend die folgende Handlung. Die Ausgabe übernimmt das Seitenverhältnis des Bildes. Ein Ausgangsbild liefert eine genaue Anfangskomposition; bei Referenz-zu-Video geben Bilder dagegen Personen, Produkte oder Umgebung einer neu komponierten Szene vor. Diese Rollen auseinanderzuhalten hilft, einen unbeabsichtigten Anfang zu vermeiden, wenn ein bekannter Gegenstand in eine andere Umgebung gesetzt werden soll.\n\nDas klassische Modell akzeptiert bis zu sieben Referenzbilder je referenzgestützter Anfrage. Dieser Modus ist auf zehn Sekunden und 720p begrenzt. Weisen Sie jeder Referenz eine klare Rolle zu und benennen Sie sie anhand ihrer Listenposition, beginnend mit <IMAGE_0>. Für eine kurze Produktszene kann eine Referenz den Gegenstand und eine andere den gewünschten Ort bestimmen. Konzentrieren Sie das Briefing auf die Platzierung des Gegenstands und die Haupthandlung. Der klassische Referenzmodus nutzt eine eigene Konfiguration; die Vollversion 1.5 bietet zusätzlich ausgewählte Stimmen und fixierte Frames.\n\nDie Videobearbeitung verwendet einen vorhandenen Clip und einen Prompt mit der gewünschten Änderung. Der Hersteller akzeptiert MP4-Quellen mit unterstützten Codecs wie H.264, H.265 oder AV1 bis zu einer Länge von 8,7 Sekunden. Das bearbeitete Ergebnis behält Dauer und Seitenverhältnis der Quelle bei und folgt ihrer Auflösung bis zur Obergrenze von 720p. Eigene Einstellungen für Dauer, Seitenverhältnis und Auflösung gelten in diesem Bearbeitungsablauf nicht. Wählen Sie eine Quelle, deren Komposition und Timing bereits zum späteren Einsatz passen, damit sich der Prompt auf die gewünschte visuelle Änderung konzentrieren kann.\n\nEin eigenes Bearbeitungsbriefing könnte die Farbe eines Schals ändern und zugleich Gesicht, Bewegung, Hintergrund und Kamera der Person beibehalten. Benennen Sie diese zu erhaltenden Elemente ausdrücklich neben der Änderung. Der Hersteller beschreibt, dass der Rest der Quelle möglichst genau erhalten bleibt; das ist ein sinnvolles Prüfziel, jedoch keine Garantie identischer Pixel. Vergleichen Sie den gesamten Clip, besonders wenn sich der Gegenstand bewegt, andere Objekte kreuzt oder teilweise verdeckt wird. Das fertige Ergebnis ist der bearbeitete Clip, nicht bloß ein Standbild mit der neuen Farbe.\n\nDie Videoverlängerung setzt am letzten Frame einer vorhandenen MP4-Datei an. Die dokumentierte Quellenlänge beträgt 2–15 Sekunden; der angefügte Teil umfasst 2–10 Sekunden, standardmäßig sechs Sekunden. Die Verlängerungsdauer betrifft nur den neuen Abschnitt. Eine zehnsekündige Quelle mit fünf Sekunden Fortsetzung ergibt ein fünfzehnsekündiges Video mit beiden Teilen. Das Ergebnis behält Seitenverhältnis und Auflösung der Quelle bis zur Obergrenze von 720p bei. Bereiten Sie den letzten Moment der Quelle vor und beschreiben Sie, was danach geschehen soll, etwa eine Person, die sich einem näher kommenden Gegenstand zuwendet, während die Kamera ihre aktuelle Fahrt fortsetzt.\n\nPrüfen Sie bei einer Verlängerung den Übergang zwischen Quelle und neuem Inhalt. Kontrollieren Sie Motividentität, Bewegungsrichtung, Kameratempo, Licht und Ton, damit die Fortsetzung zur vorherigen Handlung passt. Endet ein Clip an einer visuell ungünstigen Stelle, berücksichtigen Sie diese Grenze ausdrücklich in der nächsten Einstellung. Der Zusammenbau längerer Szenen ist eine Schnittentscheidung: Für Generierung, Referenzen, Bearbeitung und Verlängerung gelten separate Dauergrenzen, und das Gesamtergebnis einer Verlängerung kann länger als ein normaler neu generierter Clip sein.\n\nDer Videoablauf des Herstellers ist asynchron. Eine Anfragekennung verfolgt den Auftrag, bis das fertige Ergebnis Videoadresse und Dauer liefert; Ausgabeadressen sind nur vorübergehend verfügbar. Bewahren Sie das abspielbare Ergebnis und seine Ausgangsmaterialien für den Produktionsschnitt auf. Die Vollversion Grok Imagine Video 1.5 bietet native 1080p-Generierung und umfassendere Anker für Bilder, Stimmen und Frames, während Lite für einfache Prompts oder ein Ausgangsbild gedacht ist. Die klassische Variante eignet sich besonders, wenn bereits ein Video vorhanden ist, das gezielt verändert oder fortgesetzt werden soll.",
    "alias_of": null,
    "aliases": [],
    "author": "SpaceXAI",
    "available": null,
    "canonical_model": "x-ai/grok-imagine-video",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text",
        "image"
      ],
      "manufacturer_output": [
        "video"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.1",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.1",
            "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": "5028ba460dfc0ba205d6f290",
        "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": "In diesem Preisschlüssel ist keine zusätzliche Bedingung angegeben."
            },
            "label": "Eingabebild",
            "units": [
              {
                "amount": "0.004",
                "amount_unit": "usd_per_image",
                "billing_input": false,
                "key": "input_image",
                "label": "Input image",
                "public_unit_label": "per image",
                "quantity": 1,
                "rate_role": "typed_video_image_reference",
                "side": "in",
                "unit": "image"
              }
            ]
          },
          {
            "basis": "Veröffentlichte Preisreferenz für die angezeigte Konfiguration. Die endgültige Abrechnung folgt der tatsächlich abgerechneten Konfiguration.",
            "dimensions": {
              "conditions": "resolution: 480p"
            },
            "label": "Videopreis",
            "units": [
              {
                "amount": "0.1",
                "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": "resolution: 720p"
            },
            "label": "Videopreis",
            "units": [
              {
                "amount": "0.14",
                "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": "x-ai/grok-imagine-video",
    "input": [
      "text",
      "image"
    ],
    "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": "Bewahren Sie jede tatsächliche, Ihnen zugeordnete Ausgabe und deren zurückgegebene gemessene Metadaten auf.",
            "defaults": {
              "aspect_ratio": null,
              "duration": null,
              "generate_audio": "endpoint capability flag when published; omitted unknown stays unknown; never guarantees audio track",
              "resolution": null,
              "seed": null,
              "size": null,
              "wire_omissions_preserved": true
            },
            "errors": [
              {
                "condition": "Der Videozugriff ist nicht verfügbar oder diese Video-ID wurde nicht gefunden.",
                "http_status": 404,
                "public_identifier_field": "error.type",
                "recovery": "Prüfen Sie den Videozugriff. Verwenden Sie bei einem vorhandenen Video dessen ursprüngliche öffentliche ID und denselben API-Schlüssel.",
                "type": "not_found_error"
              },
              {
                "condition": "Der API-Schlüssel stimmt nicht mit dem authentifizierten Konto überein.",
                "http_status": 401,
                "public_identifier_field": "error.type",
                "recovery": "Prüfen Sie Ihren API-Schlüssel und Ihren Kontozugriff vor der Übermittlung.",
                "type": "authentication_error"
              },
              {
                "condition": "Die Anfrage konnte nicht gelesen werden oder der Downloadindex ist ungültig.",
                "http_status": 400,
                "public_identifier_field": "error.type",
                "recovery": "Korrigieren Sie den Anfrageinhalt. Wählen Sie für einen Download einen Ausgabeindex, den die ursprüngliche Aufgabe zurückgegeben hat.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Die ausgewählte Videokonfiguration kann nicht bepreist werden.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Wählen Sie eine unterstützte Videokonfiguration und vervollständigen Sie deren Pflichtoptionen, bevor Sie eine korrigierte Anfrage übermitteln.",
                "type": "price_unavailable"
              },
              {
                "condition": "Eine Videoeingabe oder die ursprüngliche Fortsetzungsaufgabe ist ungültig.",
                "http_status": 422,
                "public_identifier_field": "error.type",
                "recovery": "Verwenden Sie gültige HTTPS-Eingaben. Verwenden Sie für eine Fortsetzung Ihre fertiggestellte ursprüngliche öffentliche Video-ID mit demselben API-Schlüssel.",
                "type": "invalid_request_error"
              },
              {
                "condition": "Das verfügbare Guthaben oder die Limits erlauben keine Reservierung.",
                "http_status": 402,
                "public_identifier_field": "error.type",
                "recovery": "Prüfen Sie Ihr verfügbares Guthaben und Ihre Limits, bevor Sie eine neue Anfrage senden.",
                "type": "billing_error"
              },
              {
                "condition": "Videoprüfung, Speicher oder Dienstzugriff ist vorübergehend nicht verfügbar.",
                "http_status": 503,
                "public_identifier_field": "error.type",
                "recovery": "Warten Sie auf die Verfügbarkeit des Dienstes. Falls Sie bereits eine Video-ID haben, prüfen Sie diese ursprüngliche Aufgabe, statt eine weitere Generierung anzulegen.",
                "type": "server_error"
              },
              {
                "code": "result_pending_check",
                "condition": "Das ursprüngliche Videoergebnis und die Abrechnung müssen geprüft werden.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Bewahren Sie die zurückgegebene Video-ID auf und prüfen Sie diese Aufgabe. Senden Sie während der Prüfung keine Ersatzanfrage zur Generierung.",
                "type": "server_error"
              },
              {
                "code": "owned_result_unavailable",
                "condition": "Der Download des vorhandenen Videos ist vorübergehend nicht verfügbar.",
                "http_status": 503,
                "public_identifier_field": "error.code",
                "recovery": "Prüfen Sie dieselbe Videoaufgabe später erneut und laden Sie deren vorhandene Ausgabe herunter. Eine neue Generierung erstellt einen separaten Vorgang.",
                "type": "server_error"
              },
              {
                "condition": "Der Videoinhalt wurde nicht veröffentlicht.",
                "http_status": 409,
                "public_identifier_field": "error.type",
                "recovery": "Prüfen Sie den ursprünglichen Aufgabenstatus. Laden Sie die Ausgabe nach der Meldung completed herunter; folgen Sie bei failed dem Hinweis zur Abrechnungsprüfung.",
                "type": "video_not_ready"
              }
            ],
            "hints": [
              "No null values or duplicate keys at any JSON object level",
              "No duration/resolution/aspect default is inserted",
              "Prompt required for all21 despite broader official image-only schema",
              "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
              "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
              "No n/output-count/client price fields accepted",
              "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
            ],
            "ignored_fields": [],
            "lifecycle": {
              "cancel_endpoint": null,
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}/content",
                  "query": {
                    "index": "actual output index"
                  }
                }
              ],
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "mode": "submit_once_poll_original",
              "public_id": "video_<uuid>; owner user/key/group scope",
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{public_id}"
                }
              ],
              "submit_status": 202,
              "terminal_failure_public": "200 failed + charge_pending_check=true; inspect original operation",
              "terminal_provider_states": [
                "failed",
                "cancelled",
                "expired"
              ],
              "unknown": "503 result_pending_check + ursprüngliche id + X-Should-Retry:false; ursprüngliche Anfrage niemals wiederholen"
            },
            "material_combinations": [
              {
                "mode": "text_to_video",
                "model": {
                  "enum": [
                    "x-ai/grok-imagine-video"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "Geben Sie prompt als Text und duration in ganzen Sekunden an. Wählen Sie eine unterstützte Auflösung; ergänzen Sie ein Seitenverhältnis oder verwenden Sie eine aufgeführte Größe.",
                "required": [
                  "model",
                  "prompt",
                  "duration"
                ],
                "required_material": "Ein schriftlicher Prompt."
              },
              {
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "mode": "image_to_video",
                "model": {
                  "enum": [
                    "x-ai/grok-imagine-video"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "frame_images ist ein Array. Jedes Frame-Objekt enthält type, image_url und frame_type; image_url enthält url. Setzen Sie type auf image_url. Verwenden Sie first_frame. Jede Frame-Rolle kommt höchstens einmal vor. Geben Sie für jeden Frame eine öffentliche HTTPS-Bild-URL an. Verwenden Sie in einer Anfrage entweder Frame-Bilder oder Bildreferenzen; kombinieren Sie beide nicht. Wählen Sie eine unterstützte Auflösung; ergänzen Sie ein Seitenverhältnis oder verwenden Sie eine aufgeführte Größe.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "frame_images"
                ],
                "required_material": "Ein schriftlicher Prompt und ein Bild des ersten Frames."
              },
              {
                "mode": "Reference to video",
                "model": {
                  "enum": [
                    "x-ai/grok-imagine-video"
                  ],
                  "enum_known": true,
                  "type": "string"
                },
                "prompt": {
                  "max_utf8_bytes": 10000,
                  "non_whitespace": true,
                  "type": "string"
                },
                "representation": "input_references ist ein Array von Objekten. Setzen Sie type auf image_url und verwenden Sie das passende Feld, das url enthält. Verwenden Sie öffentliche HTTPS-URLs. Lassen Sie frame_images weg, um den Referenzmodus auszuwählen. Kombinieren Sie Bildreferenzen nicht mit Frame-Bildern. Wählen Sie eine unterstützte Auflösung; ergänzen Sie ein Seitenverhältnis oder verwenden Sie eine aufgeführte Größe.",
                "required": [
                  "model",
                  "prompt",
                  "duration",
                  "input_references"
                ],
                "required_material": "Ein schriftlicher Prompt und unterstützte Bildreferenzen."
              }
            ],
            "operation_modes": [
              "text_to_video",
              "image_to_video_frame_images",
              "reference_to_video"
            ],
            "outputs": {
              "content_range_supported": true,
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "condition": "Always present for each completed output.",
                  "description": "Nullbasierte Position dieses Videos in der Ausgabeliste.",
                  "field_path": "outputs[].index",
                  "json_schema": {
                    "type": "integer"
                  },
                  "name": "index",
                  "nullable": false,
                  "type": "integer"
                },
                {
                  "condition": "Present after the owned result is available and a signed URL is created.",
                  "description": "Signierte HTTPS-Download-URL für dieses fertiggestellte Video.",
                  "field_path": "outputs[].content_url",
                  "json_schema": {
                    "type": "string"
                  },
                  "name": "content_url",
                  "nullable": false,
                  "type": "string"
                },
                {
                  "condition": "A nonempty recorded digest is returned; otherwise null.",
                  "description": "SHA-256-Prüfsumme der ursprünglichen Videobytes; null, falls nicht verfügbar.",
                  "field_path": "outputs[].sha256",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "sha256",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when the recorded file size is positive.",
                  "description": "Größe der ursprünglichen Videodatei in Bytes; null, falls nicht verfügbar.",
                  "field_path": "outputs[].size_bytes",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "size_bytes",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned when the measured duration is positive.",
                  "description": "Gemessene Videodauer in Millisekunden; null, falls nicht verfügbar.",
                  "field_path": "outputs[].duration_ms",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "duration_ms",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "Videobreite in Pixeln; null, falls nicht verfügbar.",
                  "field_path": "outputs[].width",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "width",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Width, height and the video codec are returned together when recorded.",
                  "description": "Videohöhe in Pixeln; null, falls nicht verfügbar.",
                  "field_path": "outputs[].height",
                  "json_schema": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "name": "height",
                  "nullable": true,
                  "type": "integer | null"
                },
                {
                  "condition": "Returned together with positive recorded width and height.",
                  "description": "Videocodec-Kennung; null, falls nicht erfasst.",
                  "field_path": "outputs[].video_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "video_codec",
                  "nullable": true,
                  "type": "string | null"
                },
                {
                  "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                  "description": "Ob das Video eine Audiospur enthält; null, falls nicht gemessen.",
                  "field_path": "outputs[].has_audio",
                  "json_schema": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "name": "has_audio",
                  "nullable": true,
                  "type": "boolean | null"
                },
                {
                  "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                  "description": "Audiocodec-Kennung; null, wenn keine Kennung erfasst wurde.",
                  "field_path": "outputs[].audio_codec",
                  "json_schema": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": "audio_codec",
                  "nullable": true,
                  "type": "string | null"
                }
              ],
              "format": "original MP4 bytes; no normalization/transcode",
              "max_aggregate_seconds": 2400,
              "max_bytes_per_output": 67108864,
              "max_seconds_per_output": 600,
              "result": "signierte Inhalts-URLs der Ihnen zugeordneten Ausgaben",
              "unmeasured_fields_nullable": true
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "x-ai/grok-imagine-video"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "schema": {
                  "const": "x-ai/grok-imagine-video"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minLength": 1,
                "name": "prompt",
                "required": true,
                "schema": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  1,
                  2,
                  3,
                  4,
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15
                ],
                "enum_known": true,
                "maximum": 600,
                "minimum": 1,
                "name": "duration",
                "required": true,
                "schema": {
                  "enum": [
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15
                  ],
                  "maximum": 600,
                  "minimum": 1,
                  "type": "integer"
                },
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "480p",
                  "720p"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "schema": {
                  "enum": [
                    "480p",
                    "720p"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "16:9",
                  "9:16",
                  "1:1",
                  "4:3",
                  "3:4",
                  "3:2",
                  "2:3"
                ],
                "enum_known": true,
                "name": "aspect_ratio",
                "required": false,
                "schema": {
                  "enum": [
                    "16:9",
                    "9:16",
                    "1:1",
                    "4:3",
                    "3:4",
                    "3:2",
                    "2:3"
                  ]
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  false
                ],
                "enum_known": true,
                "name": "generate_audio",
                "required": false,
                "schema": {
                  "enum": [
                    false
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "conditions": "Diese Schlüssel beschreiben jedes Frame-Objekt; image_url enthält nur url. Lassen Sie frame_images bei einer reinen Textanfrage weg.",
                "content": "Array von Frame-Objekten. Jedes Objekt enthält type=image_url, image_url mit url und frame_type. Verwenden Sie eine HTTPS-Bild-URL und setzen Sie frame_type auf first_frame. Jede Frame-Rolle kommt höchstens einmal vor.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "exact_keys": [
                  "type",
                  "image_url",
                  "frame_type"
                ],
                "maxItems": 1,
                "max_items": 1,
                "minItems": 1,
                "min_items": 1,
                "name": "frame_images",
                "required": false,
                "schema": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_frame"
                        ]
                      },
                      "image_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "format": "uri",
                            "pattern": "^https://",
                            "type": "string",
                            "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url",
                      "frame_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 1,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "input_references",
                "required": false,
                "schema": {
                  "items": {
                    "oneOf": [
                      {
                        "additionalProperties": false,
                        "properties": {
                          "image_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "format": "uri",
                                "pattern": "^https://",
                                "type": "string",
                                "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "image_url"
                          }
                        },
                        "required": [
                          "type",
                          "image_url"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "type": "array"
                },
                "type": "array"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "854x480",
                  "1280x720",
                  "480x854",
                  "720x1280",
                  "480x480",
                  "720x720",
                  "640x480",
                  "960x720",
                  "480x640",
                  "720x960",
                  "720x480",
                  "1080x720",
                  "480x720",
                  "720x1080"
                ],
                "enum_known": true,
                "name": "size",
                "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                "required": false,
                "schema": {
                  "enum": [
                    "854x480",
                    "1280x720",
                    "480x854",
                    "720x1280",
                    "480x480",
                    "720x720",
                    "640x480",
                    "960x720",
                    "480x640",
                    "720x960",
                    "720x480",
                    "1080x720",
                    "480x720",
                    "720x1080"
                  ],
                  "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                  "type": "string"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "callback_url",
                "pattern": "^https://",
                "required": false,
                "schema": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "session_id",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "trace",
                "required": false,
                "schema": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "type": "object"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 256,
                "name": "user",
                "required": false,
                "schema": {
                  "maxLength": 256,
                  "type": "string"
                },
                "type": "string"
              }
            ],
            "request_schema": {
              "$schema": "https://json-schema.org/draft/2020-12/schema",
              "additionalProperties": false,
              "properties": {
                "aspect_ratio": {
                  "enum": [
                    "16:9",
                    "9:16",
                    "1:1",
                    "4:3",
                    "3:4",
                    "3:2",
                    "2:3"
                  ]
                },
                "callback_url": {
                  "format": "uri",
                  "pattern": "^https://",
                  "type": "string",
                  "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                },
                "creativity": false,
                "duration": {
                  "enum": [
                    1,
                    2,
                    3,
                    4,
                    5,
                    6,
                    7,
                    8,
                    9,
                    10,
                    11,
                    12,
                    13,
                    14,
                    15
                  ],
                  "maximum": 600,
                  "minimum": 1,
                  "type": "integer"
                },
                "frame_images": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "frame_type": {
                        "enum": [
                          "first_frame"
                        ]
                      },
                      "image_url": {
                        "additionalProperties": false,
                        "properties": {
                          "url": {
                            "format": "uri",
                            "pattern": "^https://",
                            "type": "string",
                            "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                          }
                        },
                        "required": [
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": {
                        "const": "image_url"
                      }
                    },
                    "required": [
                      "type",
                      "image_url",
                      "frame_type"
                    ],
                    "type": "object"
                  },
                  "maxItems": 1,
                  "minItems": 1,
                  "type": "array",
                  "x-source-unique-role": "frame_type"
                },
                "generate_audio": {
                  "enum": [
                    false
                  ],
                  "x-omitted-default": "published audio capability when true/false; unknown if null; output audio must be measured"
                },
                "input_references": {
                  "items": {
                    "oneOf": [
                      {
                        "additionalProperties": false,
                        "properties": {
                          "image_url": {
                            "additionalProperties": false,
                            "properties": {
                              "url": {
                                "format": "uri",
                                "pattern": "^https://",
                                "type": "string",
                                "x-source-rule": "public HTTPS; no userinfo, fragment, whitespace, private/reserved hosts; own-media links additionally require owner/signature/status/hash/MIME/bytes"
                              }
                            },
                            "required": [
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": {
                            "const": "image_url"
                          }
                        },
                        "required": [
                          "type",
                          "image_url"
                        ],
                        "type": "object"
                      }
                    ]
                  },
                  "type": "array"
                },
                "model": {
                  "const": "x-ai/grok-imagine-video"
                },
                "previous_job_id": false,
                "prompt": {
                  "minLength": 1,
                  "type": "string",
                  "x-source-max-utf8-bytes": 10000,
                  "x-source-non-whitespace": true
                },
                "provider": false,
                "resolution": {
                  "enum": [
                    "480p",
                    "720p"
                  ]
                },
                "seed": false,
                "session_id": {
                  "maxLength": 256,
                  "type": "string"
                },
                "size": {
                  "enum": [
                    "854x480",
                    "1280x720",
                    "480x854",
                    "720x1280",
                    "480x480",
                    "720x720",
                    "640x480",
                    "960x720",
                    "480x640",
                    "720x960",
                    "720x480",
                    "1080x720",
                    "480x720",
                    "720x1080"
                  ],
                  "pattern": "^[1-9][0-9]*x[1-9][0-9]*$",
                  "type": "string"
                },
                "trace": {
                  "additionalProperties": true,
                  "properties": {
                    "generation_name": {
                      "type": "string"
                    },
                    "parent_span_id": {
                      "type": "string"
                    },
                    "span_name": {
                      "type": "string"
                    },
                    "trace_id": {
                      "type": "string"
                    },
                    "trace_name": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "upscale_factor": false,
                "user": {
                  "maxLength": 256,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "prompt",
                "duration"
              ],
              "title": "Video generation request",
              "type": "object",
              "x-source-global-rules": [
                "No null values or duplicate keys at any JSON object level",
                "No duration/resolution/aspect default is inserted",
                "Prompt required for all21 despite broader official image-only schema",
                "A request must also pass model membership, exact price card, SKU selection and frozen quote construction",
                "Non-string known trace fields reject; other trace keys retain arbitrary JSON",
                "No n/output-count/client price fields accepted",
                "Provider passthrough disabled for all21; feed allowlist names do not supply provider slug/value contract"
              ],
              "x-source-material-combinations": [
                "Exact model/card, positive published duration, model resolution/aspect membership and valid frozen quote are all required; independent enum arrays are not proven provider Cartesian combinations.",
                "Use exact published size or compatible resolution/aspect. Omitted options stay omitted; no guessed geometry.",
                "first_frame/last_frame roles each occur at most once; frame_images wins mode precedence over input_references.",
                "provider options are unavailable for this model despite any published passthrough-name allowlist.",
                "Frame images plus image references are rejected because mixed additive input count is unproved; pure frame or pure reference mode remains separately priced."
              ]
            },
            "unsupported": [
              "seed",
              "provider",
              "previous_job_id",
              "upscale_factor",
              "creativity"
            ]
          },
          "input": {
            "additional_properties": false,
            "content_type": "application/json",
            "material_types": [
              "text",
              "image"
            ],
            "optional_controls": [
              "resolution",
              "aspect_ratio",
              "generate_audio",
              "frame_images",
              "input_references",
              "size",
              "callback_url",
              "session_id",
              "trace",
              "user"
            ],
            "required": [
              "model",
              "prompt",
              "duration"
            ]
          },
          "lifecycle": {
            "cancel_endpoint": null,
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{public_id}/content",
                "query": {
                  "index": "actual output index"
                }
              }
            ],
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "mode": "submit_once_poll_original",
            "public_id": "video_<uuid>; owner user/key/group scope",
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{public_id}"
              }
            ],
            "submit_status": 202,
            "terminal_failure_public": "200 failed + charge_pending_check=true; inspect original operation",
            "terminal_provider_states": [
              "failed",
              "cancelled",
              "expired"
            ],
            "unknown": "503 result_pending_check + originalid + X-Should-Retry:false; never replay original"
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_video",
            "image_to_video_frame_images",
            "reference_to_video"
          ],
          "output": {
            "content_range_supported": true,
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "condition": "Always present for each completed output.",
                "description": "Zero-based position of this video in the outputs list.",
                "field_path": "outputs[].index",
                "json_schema": {
                  "type": "integer"
                },
                "name": "index",
                "nullable": false,
                "type": "integer"
              },
              {
                "condition": "Present after the owned result is available and a signed URL is created.",
                "description": "Signed HTTPS download URL for this completed video.",
                "field_path": "outputs[].content_url",
                "json_schema": {
                  "type": "string"
                },
                "name": "content_url",
                "nullable": false,
                "type": "string"
              },
              {
                "condition": "A nonempty recorded digest is returned; otherwise null.",
                "description": "SHA-256 digest of the original video bytes; null if unavailable.",
                "field_path": "outputs[].sha256",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "sha256",
                "nullable": true,
                "type": "string | null"
              },
              {
                "condition": "Returned when the recorded file size is positive.",
                "description": "Size of the original video file in bytes; null if unavailable.",
                "field_path": "outputs[].size_bytes",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "size_bytes",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Returned when the measured duration is positive.",
                "description": "Measured video duration in milliseconds; null if unavailable.",
                "field_path": "outputs[].duration_ms",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "duration_ms",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Width, height and the video codec are returned together when recorded.",
                "description": "Video width in pixels; null if unavailable.",
                "field_path": "outputs[].width",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "width",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Width, height and the video codec are returned together when recorded.",
                "description": "Video height in pixels; null if unavailable.",
                "field_path": "outputs[].height",
                "json_schema": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "name": "height",
                "nullable": true,
                "type": "integer | null"
              },
              {
                "condition": "Returned together with positive recorded width and height.",
                "description": "Video codec identifier; null if not recorded.",
                "field_path": "outputs[].video_codec",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "video_codec",
                "nullable": true,
                "type": "string | null"
              },
              {
                "condition": "Returned when width, height and the video codec are recorded; false is a known result.",
                "description": "Whether the video contains an audio track; null if not measured.",
                "field_path": "outputs[].has_audio",
                "json_schema": {
                  "type": [
                    "boolean",
                    "null"
                  ]
                },
                "name": "has_audio",
                "nullable": true,
                "type": "boolean | null"
              },
              {
                "condition": "Returned when video metadata is recorded and the audio codec identifier is nonempty.",
                "description": "Audio codec identifier; null when no identifier is recorded.",
                "field_path": "outputs[].audio_codec",
                "json_schema": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": "audio_codec",
                "nullable": true,
                "type": "string | null"
              }
            ],
            "format": "original MP4 bytes; no normalization/transcode",
            "max_aggregate_seconds": 2400,
            "max_bytes_per_output": 67108864,
            "max_seconds_per_output": 600,
            "result": "signed owned content URLs",
            "unmeasured_fields_nullable": true
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per image"
            },
            "label": "Input image",
            "units": [
              {
                "amount": "0.004",
                "amount_unit": "usd_per_image",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_image_input",
                "label": "Input image",
                "native_amount_usd_per_unit": "0.004",
                "native_quantity": 1,
                "public_unit_label": "per image",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "image"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 480p",
              "quoted_unit": "per video second"
            },
            "label": "Videopreis",
            "units": [
              {
                "amount": "0.1",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_video_output_second_480p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.1",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 720p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.14",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_video_output_second_720p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.14",
                "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 Generierungskosten",
            "units": [
              {
                "amount": "0.1",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.1",
                "native_quantity": 1,
                "public_unit_label": "estimate before generation",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "request_estimate"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nfrom pathlib import Path\nPath('request.json').write_text('{\"aspect_ratio\":\"16:9\",\"duration\":8,\"model\":\"x-ai/grok-imagine-video\",\"prompt\":\"A serene mountain landscape at sunset\",\"resolution\":\"720p\"}', encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('result.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "curl · create video",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_STATUS_URL'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote\nr=json.loads(Path('result.json').read_text())\nif not isinstance(r.get('id'),str) or not r['id']:raise SystemExit('Keep the original response and headers for reconciliation; no returned ID')\nPath('status-url.txt').write_text('https://api.ailoot.ai/v1/videos/'+quote(r['id'],safe=''))\nPY_STATUS_URL\ncurl --fail-with-body --silent --show-error \"$(cat status-url.txt)\" \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -D status-headers.txt -o status.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path('status.json').read_text())\nprint(json.dumps(r,ensure_ascii=False,indent=2))\nprint('Keep the complete JSON and response headers; do not resubmit an unknown creation.')\nPY_RESULT\n",
            "label": "GET original status",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\nexport AILOOT_API_KEY\npython3 - <<'PY_ASSETS'\nimport json,os,subprocess\nfrom pathlib import Path\nfrom urllib.parse import urljoin,urlsplit\nr=json.loads(Path('status.json').read_text())\nif r.get('status')!='completed':raise SystemExit('Keep the original ID and read its status; never recreate an unknown job')\nif not isinstance(r.get('data'),list) or not r['data']:raise SystemExit('Keep the complete original status; no completed outputs supplied')\nurls=[]\nfor i,u in enumerate(r.get('data',[])):\n    if not isinstance(u,str):raise SystemExit('Keep the original response; unexpected asset shape')\n    urls.append((str(i),u))\nfor label,path in urls:\n    u=urljoin('https://api.ailoot.ai',path);z=urlsplit(u)\n    if z.scheme!='https' or z.netloc!='api.ailoot.ai' or z.username or z.password:raise SystemExit('Use the actual returned Ailoot owned content URL')\n    target=Path('owned-'+label+'.bin')\n    subprocess.run(['curl','--fail-with-body','--silent','--show-error',u,'-H','Authorization: Bearer '+os.environ['AILOOT_API_KEY'],'-D',str(target)+'.headers','-o',str(target)],check=True)\nprint('All returned owned URLs saved; complete metadata, timing and usage remain in the JSON.')\nPY_ASSETS\n",
            "label": "Save every completed owned output",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image"
        ],
        "label": "Видео",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "No additional condition is declared in this pricing key.",
              "quoted_unit": "per image"
            },
            "label": "Input image",
            "units": [
              {
                "amount": "0.004",
                "amount_unit": "usd_per_image",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_image_input",
                "label": "Input image",
                "native_amount_usd_per_unit": "0.004",
                "native_quantity": 1,
                "public_unit_label": "per image",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "image"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 480p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.1",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_video_output_second_480p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.1",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "dimensions": {
              "conditions": "resolution: 720p",
              "quoted_unit": "per video second"
            },
            "label": "Video price",
            "units": [
              {
                "amount": "0.14",
                "amount_unit": "usd_per_video_second",
                "billing_input": false,
                "estimate_only": true,
                "key": "cents_per_video_output_second_720p",
                "label": "Video price",
                "native_amount_usd_per_unit": "0.14",
                "native_quantity": 1,
                "public_unit_label": "per video second",
                "quantity": 1,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_second"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.1",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "forecast_usd",
                "label": "Estimated generation cost",
                "native_amount_usd_per_unit": "0.1",
                "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": "x-ai/grok-imagine-video",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{public_id}",
          "GET /v1/videos/{public_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.004",
            "amount_unit": "usd_per_image",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_image_input",
            "label": "Input image",
            "native_amount_usd_per_unit": "0.004",
            "native_quantity": 1,
            "public_unit_label": "per image",
            "quantity": 1,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "image"
          },
          {
            "amount": "0.1",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_video_output_second_480p",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.1",
            "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.14",
            "amount_unit": "usd_per_video_second",
            "billing_input": false,
            "estimate_only": true,
            "key": "cents_per_video_output_second_720p",
            "label": "Video price",
            "native_amount_usd_per_unit": "0.14",
            "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.1",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "forecast_usd",
            "label": "Estimated generation cost",
            "native_amount_usd_per_unit": "0.1",
            "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": "x-ai/grok-imagine-video",
        "request_model_id": "x-ai/grok-imagine-video",
        "route_label": "Ultra"
      }
    ],
    "name": "SpaceXAI: Grok Imagine Video",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 0.1,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 0.1,
      "varies": false
    },
    "pricing_profiles": [
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "input_assets_additive": true,
          "resolution": "480p"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.10",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "input_assets_additive": true,
              "resolution": "480p"
            },
            "key": "base",
            "label": "base",
            "profile_index": 0,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "input_assets_additive": true,
          "resolution": "720p"
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.14",
            "amount_unit": "usd_per_output_video_second",
            "conditions": {
              "input_assets_additive": true,
              "resolution": "720p"
            },
            "key": "base",
            "label": "base",
            "profile_index": 1,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "out",
            "unit": "output_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "adds_to_output": true,
          "start_frame_or_reference_image_charged": true
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.004",
            "amount_unit": "usd_per_input_image",
            "conditions": {
              "adds_to_output": true,
              "start_frame_or_reference_image_charged": true
            },
            "key": "input_image",
            "label": "input image",
            "profile_index": 2,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_image"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "native_profile_selection_pending": true,
          "scope": "manufacturer_reference"
        },
        "dimensions": {
          "adds_to_output_seconds": true
        },
        "label": "Ultra",
        "units": [
          {
            "amount": "0.02",
            "amount_unit": "usd_per_input_video_second",
            "conditions": {
              "adds_to_output_seconds": true
            },
            "key": "input_video",
            "label": "input video",
            "profile_index": 3,
            "quantity": "1",
            "rate_role": "binding_component_rate",
            "side": "in",
            "unit": "input_video_second"
          }
        ]
      },
      {
        "applicability": {
          "client_selectable": false,
          "no_method_admission_claim": true,
          "scope": "supplier_tariff_reference"
        },
        "dimensions": {},
        "label": "Ailoot Ultra · Tariff components",
        "units": [
          {
            "amount": "0.004",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "image input",
            "billing_original_currency": "USD_cent",
            "billing_original_rate": "0.4",
            "key": "cents_per_image_input",
            "label": "image input",
            "native_amount_usd_per_unit": "0.004",
            "native_quantity": 1,
            "quantity": 1,
            "side": "in",
            "unit": "image_input"
          },
          {
            "amount": "0.10",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "resolution=480p",
            "billing_original_currency": "USD_cent",
            "billing_original_rate": "10",
            "key": "cents_per_video_output_second_480p",
            "label": "output second",
            "native_amount_usd_per_unit": "0.10",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "output_second"
          },
          {
            "amount": "0.14",
            "amount_unit": "usd_per_exact_physical_unit",
            "basis": "resolution=720p",
            "billing_original_currency": "USD_cent",
            "billing_original_rate": "14",
            "key": "cents_per_video_output_second_720p",
            "label": "output second",
            "native_amount_usd_per_unit": "0.14",
            "native_quantity": 1,
            "quantity": 1,
            "side": "out",
            "unit": "output_second"
          }
        ]
      }
    ],
    "public_id": "x-ai/grok-imagine-video",
    "short": "Grok Imagine Video erzeugt kurze Clips aus Text, einem Ausgangsbild oder bis zu sieben visuellen Referenzen. Die klassische Variante bearbeitet auch vorhandene MP4-Clips und fügt 2–10 Sekunden Fortsetzung an. Die Generierung erreicht 720p mit Ton; Bearbeitung und Verlängerung bewahren den Bildausschnitt der Quelle innerhalb ihrer jeweiligen Grenzen."
  },
  "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": "Grok Imagine Video erzeugt kurze Clips aus Text, einem Ausgangsbild oder bis zu sieben visuellen Referenzen. Die klassische Variante bearbeitet auch vorhandene MP4-Clips und fügt 2–10 Sekunden Fortsetzung an. Die Generierung erreicht 720p mit Ton; Bearbeitung und Verlängerung bewahren den Bildausschnitt der Quelle innerhalb ihrer jeweiligen Grenzen.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "f0aed1a62abdaa7ef7511abfddbb0bbe2b9b680fd34c6a1a59df2405d7afeb0f",
    "renderer_sha256": "4915581496a34d8a27d706c57a04aa12aa22b4b136560828b2e1b9b8437d1eb0"
  },
  "sourceRevision": "5049a74c473d978d7d77ff153ba6a49129d28607c97300203b7d34ad4e1c7966"
}
