{
  "aboutHtml": "<p>Seedance 2.0 Fast ist das separat benannte Fast-Profil, das mit doubao-seedance-2-0-fast-260128 ausgewählt wird. Es unterstützt die Erzeugung, Bearbeitung und Verlängerung von Videos anhand von Text sowie Bild-, Video- und Audioreferenzen. Das Profil ist nützlich, wenn ein Szenenauftrag mehr als eine Beschreibung des Erscheinungsbilds benötigt: Vorhandene Medien können auch Darbietung, Kamerasprache und Ton vermitteln. Der Name Fast kennzeichnet das angefragte Profil; er verspricht nicht, dass eine einzelne asynchrone Aufgabe innerhalb einer festen Zeit fertig wird.</p><p>Beginnen Sie mit dem Element, das die neue Einstellung bestimmen soll. Text allein kann eine neue Szene beschreiben. Ein Bild kann eine Figur, ein Produkt oder eine Komposition festlegen; ein Video kann Bewegung oder eine vorhandene Sequenz zum Überarbeiten oder Fortsetzen liefern. Die dokumentierten Inhaltskombinationen umfassen Bilder mit Audio, Video mit Audio sowie Bilder, Video und Audio gemeinsam. Neben visuellen Medien ist Text optional. Diese Kombinationen beschreiben keine eigenständige Anfrage nur mit Audio. Verbinden Sie Tonreferenzen daher mit der visuellen Quelle, die sie steuern sollen.</p><p>Halten Sie die Referenzrollen im Array content und im Auftrag ausdrücklich fest. Elemente der Typen image_url, video_url und audio_url können die Rollen reference_image, reference_video und reference_audio tragen. Beschreiben Sie, welches Bild das Motiv vorgibt, welches Video Kamera oder Aktion vermittelt und welches Audio die Tonspur liefert. Bei einer Produktaufnahme könnte ein Bild die Verpackung festlegen, während ein Video eine Bewegung am Objekt vorbei veranschaulicht. Geben Sie das gewünschte Ende an, damit die kurze Sequenz eine nützliche Schlussansicht besitzt, statt mitten in einer Aktion abzubrechen.</p><p>Benennen Sie für eine Bearbeitung das Ausgangsvideo, die Änderung und die zu bewahrende Kontinuität. Bei einer Änderung des Hintergrunds oder der Beleuchtung sollten gewünschtes Motiv und Aktion weiterhin klar festgelegt sein. Erklären Sie für eine Verlängerung, was als Nächstes geschieht und wie die neue Bewegung an die bestehende Szene anschließt. Referenzen steuern die Generierung; prüfen Sie den tatsächlichen Übergang und den gesamten Clip auf Erscheinungsbild, Bewegungsrichtung und Timing, statt anzunehmen, dass die Fortsetzung jedes Detail auf Einzelbildebene bewahrt.</p><p>Der dokumentierte Bereich für 2.0 Fast beträgt vier bis fünfzehn ganze Sekunden. Mit -1 kann das Modell eine Dauer innerhalb dieses Bereichs wählen. Die Standarddauer beträgt fünf Sekunden. Die Ausgabeauflösung ist 480p oder 720p, standardmäßig 720p; 1080p ist ausgeschlossen. Wählen Sie zwischen den festen Formaten 16:9, 4:3, 1:1, 3:4, 9:16 und 21:9 oder einer adaptiven Formatanpassung. Diese folgt dem relevanten Prompt- oder Referenzkontext: Eine Einstellung mit Anfangsbild folgt diesem Bild, während bei multimodaler Formatanpassung Video Vorrang vor Bildern haben kann. Lesen Sie die zurückgegebenen Aufgabenfelder für die tatsächliche Dauer und das tatsächliche Seitenverhältnis.</p><p>Wählen Sie mit generate_audio, ob das erzeugte Video synchronisierten Ton enthält. Der dokumentierte Standard ist true; false fordert Stille an. Bei aktiviertem Audio erzeugt das Profil Stimmen, Effekte oder Hintergrundmusik aus dem Prompt und visuellen Inhalt. Der Leitfaden empfiehlt, Dialog in doppelte Anführungszeichen einzuschließen. Benennen Sie den Sprecher und den beabsichtigten Zusammenhang zwischen Ton und Aktion. Prüfen Sie die Sprache mit einer Person, die die Sprache fließend beherrscht, und kontrollieren Sie die Tonabstimmung im gesamten Clip einschließlich bearbeiteter oder verlängerter Abschnitte.</p><p>Der Leitfaden für 2.0 Fast schließt die älteren Steuerungen frames und camera_fixed aus und unterstützt keine Offline-Verarbeitung mit flex. Beschreiben Sie das Kameraverhalten in der Szene und verwenden Sie duration für die Cliplänge. Die Optionen seed und watermark bleiben dokumentiert. Derselbe seed garantiert keine identische Ausgabe. Bewahren Sie deshalb beim Vergleich von Überarbeitungen das fertige Ergebnis, statt sich nur auf die Anfrageeinstellungen zu verlassen.</p><p>Der Video-Token-Verbrauch wird wie folgt berechnet: (Dauer des Eingabevideos + Dauer des Ausgabevideos) × Ausgabebreite × Ausgabehöhe × Ausgabebildrate / 1024. Anfragen mit Eingabevideo und Anfragen ohne Eingabevideo haben unterschiedliche Abrechnungskategorien. Die Aufgabenabfrage meldet usage.completion_tokens und usage.total_tokens; bewahren Sie diese gemeldeten Mengen zusammen mit dem fertigen Clip.</p><p>Das Absenden liefert eine Aufgabenkennung, bevor das fertige Video verfügbar ist. Verfolgen Sie den Verarbeitungsstatus, rufen Sie nach erfolgreichem Abschluss content.video_url ab und bewahren Sie die gemeldeten Angaben zu Dauer, Auflösung, Seitenverhältnis, Bildrate und Verbrauch zusammen mit dem Ergebnis. Das Ablaufintervall wird ab der Aufgabenerstellung gemessen, beträgt standardmäßig 172.800 Sekunden und reicht von 3.600 bis 259.200 Sekunden. Speichern Sie den fertigen Clip mit seinen Referenzen und dem Prompt. Prüfen Sie anschließend Motividentität, Objektkontakt, Kamerakontinuität und zeitliche Tonabstimmung über die gesamte Sequenz.</p>",
  "aboutText": "Seedance 2.0 Fast ist das separat benannte Fast-Profil, das mit doubao-seedance-2-0-fast-260128 ausgewählt wird. Es unterstützt die Erzeugung, Bearbeitung und Verlängerung von Videos anhand von Text sowie Bild-, Video- und Audioreferenzen. Das Profil ist nützlich, wenn ein Szenenauftrag mehr als eine Beschreibung des Erscheinungsbilds benötigt: Vorhandene Medien können auch Darbietung, Kamerasprache und Ton vermitteln. Der Name Fast kennzeichnet das angefragte Profil; er verspricht nicht, dass eine einzelne asynchrone Aufgabe innerhalb einer festen Zeit fertig wird.\n\nBeginnen Sie mit dem Element, das die neue Einstellung bestimmen soll. Text allein kann eine neue Szene beschreiben. Ein Bild kann eine Figur, ein Produkt oder eine Komposition festlegen; ein Video kann Bewegung oder eine vorhandene Sequenz zum Überarbeiten oder Fortsetzen liefern. Die dokumentierten Inhaltskombinationen umfassen Bilder mit Audio, Video mit Audio sowie Bilder, Video und Audio gemeinsam. Neben visuellen Medien ist Text optional. Diese Kombinationen beschreiben keine eigenständige Anfrage nur mit Audio. Verbinden Sie Tonreferenzen daher mit der visuellen Quelle, die sie steuern sollen.\n\nHalten Sie die Referenzrollen im Array content und im Auftrag ausdrücklich fest. Elemente der Typen image_url, video_url und audio_url können die Rollen reference_image, reference_video und reference_audio tragen. Beschreiben Sie, welches Bild das Motiv vorgibt, welches Video Kamera oder Aktion vermittelt und welches Audio die Tonspur liefert. Bei einer Produktaufnahme könnte ein Bild die Verpackung festlegen, während ein Video eine Bewegung am Objekt vorbei veranschaulicht. Geben Sie das gewünschte Ende an, damit die kurze Sequenz eine nützliche Schlussansicht besitzt, statt mitten in einer Aktion abzubrechen.\n\nBenennen Sie für eine Bearbeitung das Ausgangsvideo, die Änderung und die zu bewahrende Kontinuität. Bei einer Änderung des Hintergrunds oder der Beleuchtung sollten gewünschtes Motiv und Aktion weiterhin klar festgelegt sein. Erklären Sie für eine Verlängerung, was als Nächstes geschieht und wie die neue Bewegung an die bestehende Szene anschließt. Referenzen steuern die Generierung; prüfen Sie den tatsächlichen Übergang und den gesamten Clip auf Erscheinungsbild, Bewegungsrichtung und Timing, statt anzunehmen, dass die Fortsetzung jedes Detail auf Einzelbildebene bewahrt.\n\nDer dokumentierte Bereich für 2.0 Fast beträgt vier bis fünfzehn ganze Sekunden. Mit -1 kann das Modell eine Dauer innerhalb dieses Bereichs wählen. Die Standarddauer beträgt fünf Sekunden. Die Ausgabeauflösung ist 480p oder 720p, standardmäßig 720p; 1080p ist ausgeschlossen. Wählen Sie zwischen den festen Formaten 16:9, 4:3, 1:1, 3:4, 9:16 und 21:9 oder einer adaptiven Formatanpassung. Diese folgt dem relevanten Prompt- oder Referenzkontext: Eine Einstellung mit Anfangsbild folgt diesem Bild, während bei multimodaler Formatanpassung Video Vorrang vor Bildern haben kann. Lesen Sie die zurückgegebenen Aufgabenfelder für die tatsächliche Dauer und das tatsächliche Seitenverhältnis.\n\nWählen Sie mit generate_audio, ob das erzeugte Video synchronisierten Ton enthält. Der dokumentierte Standard ist true; false fordert Stille an. Bei aktiviertem Audio erzeugt das Profil Stimmen, Effekte oder Hintergrundmusik aus dem Prompt und visuellen Inhalt. Der Leitfaden empfiehlt, Dialog in doppelte Anführungszeichen einzuschließen. Benennen Sie den Sprecher und den beabsichtigten Zusammenhang zwischen Ton und Aktion. Prüfen Sie die Sprache mit einer Person, die die Sprache fließend beherrscht, und kontrollieren Sie die Tonabstimmung im gesamten Clip einschließlich bearbeiteter oder verlängerter Abschnitte.\n\nDer Leitfaden für 2.0 Fast schließt die älteren Steuerungen frames und camera_fixed aus und unterstützt keine Offline-Verarbeitung mit flex. Beschreiben Sie das Kameraverhalten in der Szene und verwenden Sie duration für die Cliplänge. Die Optionen seed und watermark bleiben dokumentiert. Derselbe seed garantiert keine identische Ausgabe. Bewahren Sie deshalb beim Vergleich von Überarbeitungen das fertige Ergebnis, statt sich nur auf die Anfrageeinstellungen zu verlassen.\n\nDer Video-Token-Verbrauch wird wie folgt berechnet: (Dauer des Eingabevideos + Dauer des Ausgabevideos) × Ausgabebreite × Ausgabehöhe × Ausgabebildrate / 1024. Anfragen mit Eingabevideo und Anfragen ohne Eingabevideo haben unterschiedliche Abrechnungskategorien. Die Aufgabenabfrage meldet usage.completion_tokens und usage.total_tokens; bewahren Sie diese gemeldeten Mengen zusammen mit dem fertigen Clip.\n\nDas Absenden liefert eine Aufgabenkennung, bevor das fertige Video verfügbar ist. Verfolgen Sie den Verarbeitungsstatus, rufen Sie nach erfolgreichem Abschluss content.video_url ab und bewahren Sie die gemeldeten Angaben zu Dauer, Auflösung, Seitenverhältnis, Bildrate und Verbrauch zusammen mit dem Ergebnis. Das Ablaufintervall wird ab der Aufgabenerstellung gemessen, beträgt standardmäßig 172.800 Sekunden und reicht von 3.600 bis 259.200 Sekunden. Speichern Sie den fertigen Clip mit seinen Referenzen und dem Prompt. Prüfen Sie anschließend Motividentität, Objektkontakt, Kamerakontinuität und zeitliche Tonabstimmung über die gesamte Sequenz.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "0d2ebfdc4483d02ebca2bced84763b1ad7e653ede2719d3572ad91aa6d6f6442",
    "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\">ByteDance: Seedance 2.0 Fast</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Schließen\">×</button></div><div class=\"idline\"><span>ByteDance /</span><code>doubao-seedance-2-0-fast-260128</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|doubao-seedance-2-0-fast-260128\">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\">Seedance 2.0 Fast ist das multimodale Fast-Profil für Videoerzeugung, Bearbeitung und Verlängerung. Es nimmt Text-, Bild-, Video- und Audioreferenzen entgegen, unterstützt die Ausgabe mit synchronisiertem Ton oder ohne Ton und dokumentiert Clips von 4–15 Sekunden in 480p oder 720p.</p><dl class=\"card-io\" data-card-io><div><dt>Zulässige Eingaben</dt><dd>Text · Bilder · Video · Audio</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>Seedance 2.0 Fast ist das separat benannte Fast-Profil, das mit doubao-seedance-2-0-fast-260128 ausgewählt wird. Es unterstützt die Erzeugung, Bearbeitung und Verlängerung von Videos anhand von Text sowie Bild-, Video- und Audioreferenzen. Das Profil ist nützlich, wenn ein Szenenauftrag mehr als eine Beschreibung des Erscheinungsbilds benötigt: Vorhandene Medien können auch Darbietung, Kamerasprache und Ton vermitteln. Der Name Fast kennzeichnet das angefragte Profil; er verspricht nicht, dass eine einzelne asynchrone Aufgabe innerhalb einer festen Zeit fertig wird.</p><p>Beginnen Sie mit dem Element, das die neue Einstellung bestimmen soll. Text allein kann eine neue Szene beschreiben. Ein Bild kann eine Figur, ein Produkt oder eine Komposition festlegen; ein Video kann Bewegung oder eine vorhandene Sequenz zum Überarbeiten oder Fortsetzen liefern. Die dokumentierten Inhaltskombinationen umfassen Bilder mit Audio, Video mit Audio sowie Bilder, Video und Audio gemeinsam. Neben visuellen Medien ist Text optional. Diese Kombinationen beschreiben keine eigenständige Anfrage nur mit Audio. Verbinden Sie Tonreferenzen daher mit der visuellen Quelle, die sie steuern sollen.</p><p>Halten Sie die Referenzrollen im Array content und im Auftrag ausdrücklich fest. Elemente der Typen image_url, video_url und audio_url können die Rollen reference_image, reference_video und reference_audio tragen. Beschreiben Sie, welches Bild das Motiv vorgibt, welches Video Kamera oder Aktion vermittelt und welches Audio die Tonspur liefert. Bei einer Produktaufnahme könnte ein Bild die Verpackung festlegen, während ein Video eine Bewegung am Objekt vorbei veranschaulicht. Geben Sie das gewünschte Ende an, damit die kurze Sequenz eine nützliche Schlussansicht besitzt, statt mitten in einer Aktion abzubrechen.</p><p>Benennen Sie für eine Bearbeitung das Ausgangsvideo, die Änderung und die zu bewahrende Kontinuität. Bei einer Änderung des Hintergrunds oder der Beleuchtung sollten gewünschtes Motiv und Aktion weiterhin klar festgelegt sein. Erklären Sie für eine Verlängerung, was als Nächstes geschieht und wie die neue Bewegung an die bestehende Szene anschließt. Referenzen steuern die Generierung; prüfen Sie den tatsächlichen Übergang und den gesamten Clip auf Erscheinungsbild, Bewegungsrichtung und Timing, statt anzunehmen, dass die Fortsetzung jedes Detail auf Einzelbildebene bewahrt.</p><p>Der dokumentierte Bereich für 2.0 Fast beträgt vier bis fünfzehn ganze Sekunden. Mit -1 kann das Modell eine Dauer innerhalb dieses Bereichs wählen. Die Standarddauer beträgt fünf Sekunden. Die Ausgabeauflösung ist 480p oder 720p, standardmäßig 720p; 1080p ist ausgeschlossen. Wählen Sie zwischen den festen Formaten 16:9, 4:3, 1:1, 3:4, 9:16 und 21:9 oder einer adaptiven Formatanpassung. Diese folgt dem relevanten Prompt- oder Referenzkontext: Eine Einstellung mit Anfangsbild folgt diesem Bild, während bei multimodaler Formatanpassung Video Vorrang vor Bildern haben kann. Lesen Sie die zurückgegebenen Aufgabenfelder für die tatsächliche Dauer und das tatsächliche Seitenverhältnis.</p><p>Wählen Sie mit generate_audio, ob das erzeugte Video synchronisierten Ton enthält. Der dokumentierte Standard ist true; false fordert Stille an. Bei aktiviertem Audio erzeugt das Profil Stimmen, Effekte oder Hintergrundmusik aus dem Prompt und visuellen Inhalt. Der Leitfaden empfiehlt, Dialog in doppelte Anführungszeichen einzuschließen. Benennen Sie den Sprecher und den beabsichtigten Zusammenhang zwischen Ton und Aktion. Prüfen Sie die Sprache mit einer Person, die die Sprache fließend beherrscht, und kontrollieren Sie die Tonabstimmung im gesamten Clip einschließlich bearbeiteter oder verlängerter Abschnitte.</p><p>Der Leitfaden für 2.0 Fast schließt die älteren Steuerungen frames und camera_fixed aus und unterstützt keine Offline-Verarbeitung mit flex. Beschreiben Sie das Kameraverhalten in der Szene und verwenden Sie duration für die Cliplänge. Die Optionen seed und watermark bleiben dokumentiert. Derselbe seed garantiert keine identische Ausgabe. Bewahren Sie deshalb beim Vergleich von Überarbeitungen das fertige Ergebnis, statt sich nur auf die Anfrageeinstellungen zu verlassen.</p><p>Der Video-Token-Verbrauch wird wie folgt berechnet: (Dauer des Eingabevideos + Dauer des Ausgabevideos) × Ausgabebreite × Ausgabehöhe × Ausgabebildrate / 1024. Anfragen mit Eingabevideo und Anfragen ohne Eingabevideo haben unterschiedliche Abrechnungskategorien. Die Aufgabenabfrage meldet usage.completion_tokens und usage.total_tokens; bewahren Sie diese gemeldeten Mengen zusammen mit dem fertigen Clip.</p><p>Das Absenden liefert eine Aufgabenkennung, bevor das fertige Video verfügbar ist. Verfolgen Sie den Verarbeitungsstatus, rufen Sie nach erfolgreichem Abschluss content.video_url ab und bewahren Sie die gemeldeten Angaben zu Dauer, Auflösung, Seitenverhältnis, Bildrate und Verbrauch zusammen mit dem Ergebnis. Das Ablaufintervall wird ab der Aufgabenerstellung gemessen, beträgt standardmäßig 172.800 Sekunden und reicht von 3.600 bis 259.200 Sekunden. Speichern Sie den fertigen Clip mit seinen Referenzen und dem Prompt. Prüfen Sie anschließend Motividentität, Objektkontakt, Kamerakontinuität und zeitliche Tonabstimmung über die gesamte Sequenz.</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 · Videos</b> <code>POST /v1/videos</code></summary><dl class=\"method-capabilities\"><div><dt>Eingabe</dt><dd><code>text</code>, <code>image</code>, <code>video</code>, <code>audio</code></dd></div><div><dt>Ausgabe</dt><dd><code>video</code></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>doubao-seedance-2-0-fast-260128</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\">content</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>Erforderlich</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span><div>Bedingungen: Native Text-/Medienobjekte; das äußere Array darf nicht leer sein. Verschachtelte Knotentypen werden von diesem generischen Ailoot-Konstruktor nicht validiert.</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>Bedingungen: Synchronisierter, im Video eingebetteter Ton.</div></td><td data-cell-label=\"Standard\" data-default=\"known\"><span class=\"card-cell-label\">Standard</span>true</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>Optional</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span><div>Bedingungen: Ganzzahl 4–15 oder -1; die tatsächliche Ausgabedauer wird zurückgegeben.</div></td><td data-cell-label=\"Standard\" data-default=\"known\"><span class=\"card-cell-label\">Standard</span>5</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><div>Bedingungen: 1080p wird für 2.0/fast ausdrücklich nicht unterstützt.</div></td><td data-cell-label=\"Standard\" data-default=\"known\"><span class=\"card-cell-label\">Standard</span>720p</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\">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, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive</div><div>Bedingungen: adaptive gilt ausdrücklich für 2.0/fast/1.5; das Beispiel für 2.5 verwendet ausschließlich 16:9.</div></td><td data-cell-label=\"Standard\" data-default=\"known\"><span class=\"card-cell-label\">Standard</span>adaptive</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\">watermark</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></td><td data-cell-label=\"Standard\" data-default=\"known\"><span class=\"card-cell-label\">Standard</span>false</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\">seed</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>Optional</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span><div>Minimum: -1</div><div>Maximum: 4 294 967 295</div></td><td data-cell-label=\"Standard\" data-default=\"known\"><span class=\"card-cell-label\">Standard</span>-1</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\">execution_expires_after</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>Optional</td><td data-cell-label=\"Werte und Limits\"><span class=\"card-cell-label\">Werte und Limits</span><div>Minimum: 3 600</div><div>Maximum: 259 200</div><div>Einheit: Sekunden</div></td><td data-cell-label=\"Standard\" data-default=\"known\"><span class=\"card-cell-label\">Standard</span>172 800</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\">service_tier</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>default</div><div>Bedingungen: 2.0/fast schließen offline flex aus; der Geltungsbereich für 2.5 ist nicht geklärt.</div></td><td data-cell-label=\"Standard\" data-default=\"known\"><span class=\"card-cell-label\">Standard</span>default</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\">safety_identifier</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\">tools</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><div>Bedingungen: Nur 2.0/fast; dokumentiert ist type=web_search.</div></td><td data-cell-label=\"Standard\" data-default=\"unspecified\"><span class=\"card-cell-label\">Standard</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Kombinationen von Eingabematerialien</summary><p class=\"note-s\"><b></b></p><p class=\"note-s\"><b></b></p><p class=\"note-s\"><b></b></p><p class=\"note-s\"><b></b></p><p class=\"note-s\"><b></b></p><p class=\"note-s\"><b></b></p><p class=\"note-s\"><b></b></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>content, model</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>optional</code></th><td data-cell-label=\"Vertrag\"><span class=\"card-cell-label\">Vertrag</span>generate_audio, duration, resolution, ratio, watermark, seed, execution_expires_after, service_tier, safety_identifier, tools</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, video, audio</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>additional_properties</code></th><td data-cell-label=\"Vertrag\"><span class=\"card-cell-label\">Vertrag</span>true</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>validation_scope</code></th><td data-cell-label=\"Vertrag\"><span class=\"card-cell-label\">Vertrag</span>Ailoot prüft die erforderlichen Feldtypen sowie ein nicht leeres model/content-Array. Andere Anfragefelder bleiben für das ausgewählte Modell erhalten.</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>material_combinations</code></th><td data-cell-label=\"Vertrag\"><span class=\"card-cell-label\">Vertrag</span>text, image, video, image, audio, image, video, video, audio, image, video, audio</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>optional_text_with_media</code></th><td data-cell-label=\"Vertrag\"><span class=\"card-cell-label\">Vertrag</span>true</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>reference_media_count_and_size_limits</code></th><td data-cell-label=\"Vertrag\"><span class=\"card-cell-label\">Vertrag</span>null</td></tr></tbody></table></div><p>Methodenaliasnamen: <code>/v1/videos/generations</code></p><p>Lebenszyklus: <code>submit_once_poll_original</code></p><p class=\"note-s\"><code>GET /v1/videos/{request_id}</code></p><p class=\"note-s\"><code>GET /v1/videos/generations/{request_id}</code></p><p class=\"note-s\"><code>GET /v1/videos/{request_id}/content</code></p><p class=\"note-s\"><code>GET /v1/videos/generations/{request_id}/content</code></p><p class=\"note-s\">Erstellen Sie den Vorgang einmal und bewahren Sie die zurückgegebene öffentliche id/polling_url auf.</p><p class=\"note-s\">Fragen Sie den ursprünglichen Auftrag regelmäßig ab; laden Sie nach succeeded den tatsächlichen, Ihnen zugeordneten Inhalt aus content.video_url herunter.</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>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=\"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>Eingabe mit Videoreferenz.</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 1K Video-Tokens</td><td data-cell-label=\"Gebühr\"><span class=\"card-cell-label\">Gebühr</span><div><span>Ausgabe · Schätzung nur zum Vergleich</span> <b>$0.007536</b> <span class=\"price-unit\">pro 1K Video-Tokens</span></div></td></tr><tr><th data-cell-label=\"Konfiguration\" scope=\"row\"><span class=\"card-cell-label\">Konfiguration</span>Eingabe ohne Videoreferenz.</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 1K Video-Tokens</td><td data-cell-label=\"Gebühr\"><span class=\"card-cell-label\">Gebühr</span><div><span>Ausgabe · Schätzung nur zum Vergleich</span> <b>$0.013032</b> <span class=\"price-unit\">pro 1K Video-Tokens</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=\"Gebühr\"><span class=\"card-cell-label\">Gebühr</span><div><span>Ausgabe · Geschätzte Generierungskosten · Schätzung nur zum Vergleich</span> <b>$0.822402</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></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Beispielanfragen</h3><h4>Ailoot Ultra · Videos</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-2780-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2780-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · Video erstellen</button><button class=\"cg-tab\" id=\"model-code-2780-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2780-panel-1\" aria-selected=\"false\" tabindex=\"-1\">curl · ursprünglichen Auftrag auslesen</button><button class=\"cg-tab\" id=\"model-code-2780-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2780-panel-2\" aria-selected=\"false\" tabindex=\"-1\">curl · eigenes Video herunterladen</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-2780-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2780-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncat &gt; request.json &lt;&lt;&#39;JSON_REQUEST&#39;\n{&quot;model&quot;:&quot;doubao-seedance-2-0-fast-260128&quot;,&quot;content&quot;:[{&quot;type&quot;:&quot;text&quot;,&quot;text&quot;:&quot;女孩抱着狐狸，女孩睁开眼，温柔地看向镜头，狐狸友善地抱着，镜头缓缓拉出，女孩的头发被风吹动&quot;}]}\nJSON_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\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2780-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2780-tab-1\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_POLL&#39;\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote,urljoin,urlsplit\nr=json.loads(Path(&quot;result.json&quot;).read_text())\ni=r.get(&quot;id&quot;)\nif not isinstance(i,str) or not i.startswith(&quot;native302_&quot;):raise SystemExit(&quot;Keep original response/headers/id; do not resubmit creation.&quot;)\nu=urljoin(&quot;https://api.ailoot.ai&quot;,r.get(&quot;polling_url&quot;) or &quot;/v1/videos/&quot;+quote(i,safe=&quot;&quot;))\np=urlsplit(u)\nif p.scheme!=&quot;https&quot; or p.netloc!=&quot;api.ailoot.ai&quot; or not p.path.startswith(&quot;/v1/videos/&quot;):raise SystemExit(&quot;Use actual Ailoot lookup path.&quot;)\nPath(&quot;poll-url.txt&quot;).write_text(u)\nPY_POLL\ncurl --fail-with-body --silent --show-error &quot;$(cat poll-url.txt)&quot; -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -D status-headers.txt -o status.json\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2780-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-2780-tab-2\" hidden><pre data-lang=\"bash\"><code>set -eu\npython3 - &lt;&lt;&#39;PY_ASSETS&#39;\nimport json\nfrom pathlib import Path\nfrom urllib.parse import urlsplit\nr=json.loads(Path(&quot;status.json&quot;).read_text())\nif r.get(&quot;status&quot;)!=&quot;succeeded&quot;:raise SystemExit(&quot;Poll same original job until an owned result is returned.&quot;)\nu=r.get(&quot;content&quot;,{}).get(&quot;video_url&quot;)\nurls=[u] if isinstance(u,str) else u\nif not isinstance(urls,list) or not urls:raise SystemExit(&quot;No completed video URL.&quot;)\nfor u in urls:\n    if not isinstance(u,str):raise SystemExit(&quot;Invalid returned URL.&quot;)\n    p=urlsplit(u)\n    if p.scheme!=&quot;https&quot; or p.netloc!=&quot;api.ailoot.ai&quot; or not p.path.startswith(&quot;/v1/media/assets/&quot;) or not p.path.endswith(&quot;/content&quot;) or not p.query:raise SystemExit(&quot;Wait for actual Ailoot-owned signed result.&quot;)\nPath(&quot;asset-urls.txt&quot;).write_text(&quot;\\n&quot;.join(urls)+&quot;\\n&quot;)\nPY_ASSETS\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error &quot;$asset_url&quot; -o &quot;video-${index}.bin&quot;\n  index=$((index + 1))\ndone &lt; asset-urls.txt\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 · Videos</h4><p class=\"note-s\">Natives JSON mit öffentlicher id/polling_url. Nach der Veröffentlichung enthält content.video_url signierte URL(s) im Eigentum von Ailoot; vor der Veröffentlichung werden ausgewählte Ausgabe-URLs geleert.</p><ul class=\"card-result-paths\"><li><code>GET /v1/videos/{request_id}</code></li><li><code>GET /v1/videos/generations/{request_id}</code></li><li><code>GET /v1/videos/{request_id}/content</code></li><li><code>GET /v1/videos/generations/{request_id}/content</code></li></ul><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 URL in content.video_url auf; index muss eine tatsächlich zurückgegebene Ausgabe bezeichnen.</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\">Bewahren Sie die ursprüngliche Antwort/Header/id auf und fragen Sie diesen Vorgang regelmäßig ab; übermitteln Sie eine Erstellung mit unbekanntem Ergebnis niemals erneut.</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></tr></thead><tbody><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">id</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">provider_task_id</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">polling_url</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">status</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string when supplied</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">content.video_url</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>string|string[]</td></tr><tr><th data-cell-label=\"Feld\" scope=\"row\"><span class=\"card-cell-label\">Feld</span><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"Typ\" data-field-type><span class=\"card-cell-label\">Typ</span>object when supplied</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Fehler und nächste Schritte</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Antwort</th><th>Bedingung</th><th>Nächster Schritt</th></tr></thead><tbody><tr><th data-cell-label=\"Antwort\" scope=\"row\"><span class=\"card-cell-label\">Antwort</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Bedingung\"><span class=\"card-cell-label\">Bedingung</span>Ungültiges JSON/Modell, ungültige Pflichtfeldtypen oder ungültiger Inhaltsindex.</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span></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>Ungültiger Ailoot API-Schlüssel.</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span></td></tr><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>Aufgabe/Ausgabe fehlt oder ist nicht demselben Benutzer/API-Schlüssel/derselben Gruppe zugeordnet.</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span></td></tr><tr><th data-cell-label=\"Antwort\" scope=\"row\"><span class=\"card-cell-label\">Antwort</span>502 · <code>result_pending_check</code></th><td data-cell-label=\"Bedingung\"><span class=\"card-cell-label\">Bedingung</span>Ursprüngliche Übermittlung/Status unvollständig; ursprüngliche ID aufbewahren, nicht erneut übermitteln.</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span></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>Ursprüngliche Medien/Route/Abrechnung werden geprüft; setzen Sie den ursprünglichen Vorgang fort.</td><td data-cell-label=\"Nächster Schritt\"><span class=\"card-cell-label\">Nächster Schritt</span></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=doubao-seedance-2-0-fast-260128&amp;route=Ultra&amp;caller=doubao-seedance-2-0-fast-260128&amp;fmt=videos\"><code>doubao-seedance-2-0-fast-260128</code></a></span></p><h4>Aliasnamen für Methodenpfade</h4><p class=\"note-s\"><code>/v1/videos/generations</code></p><h4>Zugehörige Aufrufer-IDs</h4><p class=\"note-s\"><a href=\"#m=doubao-seedance-2-0-fast-260128&amp;route=Ultra&amp;caller=doubao-seedance-2-0-fast-260128&amp;fmt=videos\"><code>doubao-seedance-2-0-fast-260128</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "doubao-seedance-2-0-fast-260128",
        "fmt": "videos",
        "http": "POST",
        "path": "/v1/videos",
        "request_model_id": "doubao-seedance-2-0-fast-260128",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|videos|/v1/videos|doubao-seedance-2-0-fast-260128",
      "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": {
            "errors": [
              {
                "condition": "Ungültiges JSON/Modell, ungültige Pflichtfeldtypen oder ungültiger Inhaltsindex.",
                "http_status": 400,
                "type": "invalid_request_error"
              },
              {
                "condition": "Ungültiger Ailoot API-Schlüssel.",
                "http_status": 401,
                "type": "authentication_error"
              },
              {
                "condition": "Aufgabe/Ausgabe fehlt oder ist nicht demselben Benutzer/API-Schlüssel/derselben Gruppe zugeordnet.",
                "http_status": 404,
                "type": "not_found_error"
              },
              {
                "condition": "Ursprüngliche Übermittlung/Status unvollständig; ursprüngliche ID aufbewahren, nicht erneut übermitteln.",
                "http_status": 502,
                "type": "result_pending_check"
              },
              {
                "condition": "Ursprüngliche Medien/Route/Abrechnung werden geprüft; setzen Sie den ursprünglichen Vorgang fort.",
                "http_status": 503,
                "type": "result_pending_check"
              }
            ],
            "ignored_fields": [],
            "lifecycle": {
              "cancel_endpoint": null,
              "completed_states": [
                "succeeded"
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                }
              ],
              "content_pending": "Original status JSON until publication.",
              "content_ready": {
                "http_status": 303,
                "location": "actual signed Ailoot-owned asset URL"
              },
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "failed_states": [
                "failed",
                "expired"
              ],
              "id_source": "Actual returned id or X-Ailoot-Task-Id; provider_task_id is separate. Use returned polling_url.",
              "mode": "submit_once_poll_original",
              "owned_result": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              },
              "pending_states": [
                "queued",
                "running"
              ],
              "signed_asset_lifetime_seconds": 86400,
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "submit_status": 200,
              "unknown": "Bewahren Sie die ursprüngliche Antwort/Header/id auf und fragen Sie diesen Vorgang regelmäßig ab; übermitteln Sie eine Erstellung mit unbekanntem Ergebnis niemals erneut.",
              "unknown_no_replay": true
            },
            "material_combinations": [
              [
                "text"
              ],
              [
                "image"
              ],
              [
                "video"
              ],
              [
                "image",
                "audio"
              ],
              [
                "image",
                "video"
              ],
              [
                "video",
                "audio"
              ],
              [
                "image",
                "video",
                "audio"
              ]
            ],
            "operation_modes": [
              "text_to_video",
              "image_to_video",
              "multimodal_reference",
              "video_edit_via_content",
              "video_extend_via_content"
            ],
            "outputs": {
              "additional_media_boundary": "Only content.video_url is selected for ownership. No owned last-frame/callback result flow is established.",
              "all_results": "Bewahren Sie jede tatsächliche URL in content.video_url auf; index muss eine tatsächlich zurückgegebene Ausgabe bezeichnen.",
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "description": null,
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "provider_task_id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "polling_url",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "status",
                  "type": "string when supplied"
                },
                {
                  "description": null,
                  "name": "content.video_url",
                  "type": "string|string[]"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object when supplied"
                }
              ],
              "format": null,
              "maximum_outputs": null,
              "ownership": "Configured video outputs are copied, reopened and SHA256/length/positive-duration checked before publication.",
              "result": "Natives JSON mit öffentlicher id/polling_url. Nach der Veröffentlichung enthält content.video_url signierte URL(s) im Eigentum von Ailoot; vor der Veröffentlichung werden ausgewählte Ausgabe-URLs geleert."
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "doubao-seedance-2-0-fast-260128"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Native Text-/Medienobjekte; das äußere Array darf nicht leer sein. Verschachtelte Knotentypen werden von diesem generischen Ailoot-Konstruktor nicht validiert.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minItems": 1,
                "name": "content",
                "required": true,
                "type": "array"
              },
              {
                "availability": "source_interface",
                "conditions": "Synchronisierter, im Video eingebetteter Ton.",
                "default": true,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "generate_audio",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "conditions": "Ganzzahl 4–15 oder -1; die tatsächliche Ausgabedauer wird zurückgegeben.",
                "default": 5,
                "default_known": true,
                "documented_values": [
                  -1,
                  4,
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15
                ],
                "enum": null,
                "enum_known": false,
                "name": "duration",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "conditions": "1080p wird für 2.0/fast ausdrücklich nicht unterstützt.",
                "default": "720p",
                "default_known": true,
                "enum": [
                  "480p",
                  "720p"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "adaptive gilt ausdrücklich für 2.0/fast/1.5; das Beispiel für 2.5 verwendet ausschließlich 16:9.",
                "default": "adaptive",
                "default_known": true,
                "enum": [
                  "16:9",
                  "4:3",
                  "1:1",
                  "3:4",
                  "9:16",
                  "21:9",
                  "adaptive"
                ],
                "enum_known": true,
                "name": "ratio",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": false,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "watermark",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "default": -1,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "maximum": 4294967295,
                "minimum": -1,
                "name": "seed",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": 172800,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "maximum": 259200,
                "minimum": 3600,
                "name": "execution_expires_after",
                "required": false,
                "type": "integer",
                "unit": "Sekunden"
              },
              {
                "availability": "source_interface",
                "conditions": "2.0/fast schließen offline flex aus; der Geltungsbereich für 2.5 ist nicht geklärt.",
                "default": "default",
                "default_known": true,
                "enum": [
                  "default"
                ],
                "enum_known": true,
                "name": "service_tier",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 64,
                "name": "safety_identifier",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Nur 2.0/fast; dokumentiert ist type=web_search.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools",
                "properties": {
                  "type": {
                    "enum": [
                      "web_search"
                    ],
                    "type": "string"
                  }
                },
                "required": false,
                "required_properties": [
                  "type"
                ],
                "type": "object"
              }
            ],
            "profile_binding": "Exact model ID and documented Ailoot video interface.",
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "content": {
                  "items": {
                    "type": "object"
                  },
                  "minItems": 1,
                  "type": "array"
                },
                "duration": {
                  "type": "integer"
                },
                "execution_expires_after": {
                  "maximum": 259200,
                  "minimum": 3600,
                  "type": "integer"
                },
                "generate_audio": {
                  "type": "boolean"
                },
                "model": {
                  "const": "doubao-seedance-2-0-fast-260128",
                  "type": "string"
                },
                "ratio": {
                  "enum": [
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16",
                    "21:9",
                    "adaptive"
                  ],
                  "type": "string"
                },
                "resolution": {
                  "enum": [
                    "480p",
                    "720p"
                  ],
                  "type": "string"
                },
                "safety_identifier": {
                  "maxLength": 64,
                  "type": "string"
                },
                "seed": {
                  "maximum": 4294967295,
                  "minimum": -1,
                  "type": "integer"
                },
                "service_tier": {
                  "enum": [
                    "default"
                  ],
                  "type": "string"
                },
                "tools": {
                  "type": "object"
                },
                "watermark": {
                  "type": "boolean"
                }
              },
              "required": [
                "content",
                "model"
              ],
              "type": "object"
            },
            "source_ambiguities": [
              "Shared content.items.required demands image_url+role even for published text nodes; intended combinations/examples and actual outer-array validation remain distinct.",
              "return_last_frame and callback_url exist upstream but current output ownership selects content.video_url only. No owned last-frame/callback contract is asserted."
            ],
            "unsupported": [
              "Separate cancel/delete for this generic method",
              "Separate edit/extension endpoint for this method"
            ]
          },
          "hints": [
            "Erstellen Sie den Vorgang einmal und bewahren Sie die zurückgegebene öffentliche id/polling_url auf.",
            "Fragen Sie den ursprünglichen Auftrag regelmäßig ab; laden Sie nach succeeded den tatsächlichen, Ihnen zugeordneten Inhalt aus content.video_url herunter."
          ],
          "input": {
            "additional_properties": true,
            "content_type": "application/json",
            "material_combinations": [
              [
                "text"
              ],
              [
                "image"
              ],
              [
                "video"
              ],
              [
                "image",
                "audio"
              ],
              [
                "image",
                "video"
              ],
              [
                "video",
                "audio"
              ],
              [
                "image",
                "video",
                "audio"
              ]
            ],
            "material_types": [
              "text",
              "image",
              "video",
              "audio"
            ],
            "optional": [
              "generate_audio",
              "duration",
              "resolution",
              "ratio",
              "watermark",
              "seed",
              "execution_expires_after",
              "service_tier",
              "safety_identifier",
              "tools"
            ],
            "optional_text_with_media": true,
            "reference_media_count_and_size_limits": null,
            "required": [
              "content",
              "model"
            ],
            "validation_scope": "Ailoot prüft die erforderlichen Feldtypen sowie ein nicht leeres model/content-Array. Andere Anfragefelder bleiben für das ausgewählte Modell erhalten."
          },
          "lifecycle": {
            "cancel_endpoint": null,
            "completed_states": [
              "succeeded"
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              }
            ],
            "content_pending": "Original status JSON until publication.",
            "content_ready": {
              "http_status": 303,
              "location": "actual signed Ailoot-owned asset URL"
            },
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "failed_states": [
              "failed",
              "expired"
            ],
            "id_source": "Actual returned id or X-Ailoot-Task-Id; provider_task_id is separate. Use returned polling_url.",
            "mode": "submit_once_poll_original",
            "owned_result": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}"
            },
            "pending_states": [
              "queued",
              "running"
            ],
            "signed_asset_lifetime_seconds": 86400,
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "submit_status": 200,
            "unknown": "Preserve original response/headers/id and poll that operation; never resubmit unknown creation.",
            "unknown_no_replay": true
          },
          "manufacturer_capability": {
            "documented_material_types": [
              "text",
              "image",
              "video",
              "audio"
            ]
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [
            "/v1/videos/generations"
          ],
          "operation_modes": [
            "text_to_video",
            "image_to_video",
            "multimodal_reference",
            "video_edit_via_content",
            "video_extend_via_content"
          ],
          "output": {
            "additional_media_boundary": "Only content.video_url is selected for ownership. No owned last-frame/callback result flow is established.",
            "all_results": "Retain every actual URL in content.video_url; index must identify a real returned output.",
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "description": null,
                "name": "id",
                "type": "string"
              },
              {
                "description": null,
                "name": "provider_task_id",
                "type": "string"
              },
              {
                "description": null,
                "name": "polling_url",
                "type": "string"
              },
              {
                "description": null,
                "name": "status",
                "type": "string when supplied"
              },
              {
                "description": null,
                "name": "content.video_url",
                "type": "string|string[]"
              },
              {
                "description": null,
                "name": "usage",
                "type": "object when supplied"
              }
            ],
            "format": null,
            "maximum_outputs": null,
            "ownership": "Configured video outputs are copied, reopened and SHA256/length/positive-duration checked before publication.",
            "result": "Native JSON with public id/polling_url. After publication content.video_url contains Ailoot-owned signed URL(s); before publication selected output URLs are blanked."
          }
        },
        "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": {
              "quoted_unit": "per 1,000 video tokens",
              "video_input": "present"
            },
            "label": "Eingabe mit Videoreferenz.",
            "units": [
              {
                "amount": "0.007536000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token_with_video_input",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.000007536",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per 1,000 video tokens",
              "video_input": "absent"
            },
            "label": "Eingabe ohne Videoreferenz.",
            "units": [
              {
                "amount": "0.013032000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token_without_video_input",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.000013032",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_token"
              }
            ]
          },
          {
            "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.822402",
                "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.822402",
                "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}\"\ncat > request.json <<'JSON_REQUEST'\n{\"model\":\"doubao-seedance-2-0-fast-260128\",\"content\":[{\"type\":\"text\",\"text\":\"女孩抱着狐狸，女孩睁开眼，温柔地看向镜头，狐狸友善地抱着，镜头缓缓拉出，女孩的头发被风吹动\"}]}\nJSON_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\n",
            "label": "curl · create video",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_POLL'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote,urljoin,urlsplit\nr=json.loads(Path(\"result.json\").read_text())\ni=r.get(\"id\")\nif not isinstance(i,str) or not i.startswith(\"native302_\"):raise SystemExit(\"Keep original response/headers/id; do not resubmit creation.\")\nu=urljoin(\"https://api.ailoot.ai\",r.get(\"polling_url\") or \"/v1/videos/\"+quote(i,safe=\"\"))\np=urlsplit(u)\nif p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or not p.path.startswith(\"/v1/videos/\"):raise SystemExit(\"Use actual Ailoot lookup path.\")\nPath(\"poll-url.txt\").write_text(u)\nPY_POLL\ncurl --fail-with-body --silent --show-error \"$(cat poll-url.txt)\" -H \"Authorization: Bearer $AILOOT_API_KEY\" -D status-headers.txt -o status.json\n",
            "label": "curl · read original task",
            "language": "bash"
          },
          {
            "code": "set -eu\npython3 - <<'PY_ASSETS'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import urlsplit\nr=json.loads(Path(\"status.json\").read_text())\nif r.get(\"status\")!=\"succeeded\":raise SystemExit(\"Poll same original job until an owned result is returned.\")\nu=r.get(\"content\",{}).get(\"video_url\")\nurls=[u] if isinstance(u,str) else u\nif not isinstance(urls,list) or not urls:raise SystemExit(\"No completed video URL.\")\nfor u in urls:\n    if not isinstance(u,str):raise SystemExit(\"Invalid returned URL.\")\n    p=urlsplit(u)\n    if p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or not p.path.startswith(\"/v1/media/assets/\") or not p.path.endswith(\"/content\") or not p.query:raise SystemExit(\"Wait for actual Ailoot-owned signed result.\")\nPath(\"asset-urls.txt\").write_text(\"\\n\".join(urls)+\"\\n\")\nPY_ASSETS\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error \"$asset_url\" -o \"video-${index}.bin\"\n  index=$((index + 1))\ndone < asset-urls.txt\n",
            "label": "curl · download owned video",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [
          "Create once and retain returned public id/polling_url.",
          "Poll the original job; download actual owned content.video_url after succeeded."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image",
          "video",
          "audio"
        ],
        "label": "Videos",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/v1/videos/generations"
        ],
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per 1,000 video tokens",
              "video_input": "present"
            },
            "label": "Input contains video.",
            "units": [
              {
                "amount": "0.007536000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token_with_video_input",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.000007536",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per 1,000 video tokens",
              "video_input": "absent"
            },
            "label": "Input contains no video.",
            "units": [
              {
                "amount": "0.013032000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token_without_video_input",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.000013032",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_token"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.822402",
                "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.822402",
                "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": "doubao-seedance-2-0-fast-260128",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}",
          "GET /v1/videos/generations/{request_id}",
          "GET /v1/videos/{request_id}/content",
          "GET /v1/videos/generations/{request_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.007536000",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_output_token_with_video_input",
            "label": "per 1,000 video tokens",
            "native_amount_usd_per_unit": "0.000007536",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_output_token"
          },
          {
            "amount": "0.013032000",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_output_token_without_video_input",
            "label": "per 1,000 video tokens",
            "native_amount_usd_per_unit": "0.000013032",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_output_token"
          },
          {
            "amount": "0.822402",
            "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.822402",
            "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": "doubao-seedance-2-0-fast-260128",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "d52d65e557d4ff9839be0b06f8c39475b4aa6feca112aa935c3406644ced45a4",
    "input_html_sha256": "dbd7afea2361f28ac9d00d18947f07bdf9c299ba57c8d539fe01cad3904040a3",
    "private_audit_sha256": "3c144f379ad3c10b42dd2fd66595519b50cf632fd0c59dafba3149ed408d53fc",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/de-at/doubao-seedance-2-0-fast-260128/",
    "description": "Seedance 2.0 Fast ist das multimodale Fast-Profil für Videoerzeugung, Bearbeitung und Verlängerung. Es nimmt Text-, Bild-, Video- und Audioreferenzen entgegen, unterstützt die Ausgabe mit synchronisiertem Ton oder ohne Ton und dokumentiert Clips von 4–15 Sekunden in 480p oder 720p.",
    "locale": "de-at",
    "md_url": "https://ailoot.ai/models/de-at/doubao-seedance-2-0-fast-260128/index.md",
    "title": "ByteDance: Seedance 2.0 Fast — Ailoot",
    "url": "https://ailoot.ai/models/de-at/doubao-seedance-2-0-fast-260128/"
  },
  "rawModel": {
    "about": "Seedance 2.0 Fast ist das separat benannte Fast-Profil, das mit doubao-seedance-2-0-fast-260128 ausgewählt wird. Es unterstützt die Erzeugung, Bearbeitung und Verlängerung von Videos anhand von Text sowie Bild-, Video- und Audioreferenzen. Das Profil ist nützlich, wenn ein Szenenauftrag mehr als eine Beschreibung des Erscheinungsbilds benötigt: Vorhandene Medien können auch Darbietung, Kamerasprache und Ton vermitteln. Der Name Fast kennzeichnet das angefragte Profil; er verspricht nicht, dass eine einzelne asynchrone Aufgabe innerhalb einer festen Zeit fertig wird.\n\nBeginnen Sie mit dem Element, das die neue Einstellung bestimmen soll. Text allein kann eine neue Szene beschreiben. Ein Bild kann eine Figur, ein Produkt oder eine Komposition festlegen; ein Video kann Bewegung oder eine vorhandene Sequenz zum Überarbeiten oder Fortsetzen liefern. Die dokumentierten Inhaltskombinationen umfassen Bilder mit Audio, Video mit Audio sowie Bilder, Video und Audio gemeinsam. Neben visuellen Medien ist Text optional. Diese Kombinationen beschreiben keine eigenständige Anfrage nur mit Audio. Verbinden Sie Tonreferenzen daher mit der visuellen Quelle, die sie steuern sollen.\n\nHalten Sie die Referenzrollen im Array content und im Auftrag ausdrücklich fest. Elemente der Typen image_url, video_url und audio_url können die Rollen reference_image, reference_video und reference_audio tragen. Beschreiben Sie, welches Bild das Motiv vorgibt, welches Video Kamera oder Aktion vermittelt und welches Audio die Tonspur liefert. Bei einer Produktaufnahme könnte ein Bild die Verpackung festlegen, während ein Video eine Bewegung am Objekt vorbei veranschaulicht. Geben Sie das gewünschte Ende an, damit die kurze Sequenz eine nützliche Schlussansicht besitzt, statt mitten in einer Aktion abzubrechen.\n\nBenennen Sie für eine Bearbeitung das Ausgangsvideo, die Änderung und die zu bewahrende Kontinuität. Bei einer Änderung des Hintergrunds oder der Beleuchtung sollten gewünschtes Motiv und Aktion weiterhin klar festgelegt sein. Erklären Sie für eine Verlängerung, was als Nächstes geschieht und wie die neue Bewegung an die bestehende Szene anschließt. Referenzen steuern die Generierung; prüfen Sie den tatsächlichen Übergang und den gesamten Clip auf Erscheinungsbild, Bewegungsrichtung und Timing, statt anzunehmen, dass die Fortsetzung jedes Detail auf Einzelbildebene bewahrt.\n\nDer dokumentierte Bereich für 2.0 Fast beträgt vier bis fünfzehn ganze Sekunden. Mit -1 kann das Modell eine Dauer innerhalb dieses Bereichs wählen. Die Standarddauer beträgt fünf Sekunden. Die Ausgabeauflösung ist 480p oder 720p, standardmäßig 720p; 1080p ist ausgeschlossen. Wählen Sie zwischen den festen Formaten 16:9, 4:3, 1:1, 3:4, 9:16 und 21:9 oder einer adaptiven Formatanpassung. Diese folgt dem relevanten Prompt- oder Referenzkontext: Eine Einstellung mit Anfangsbild folgt diesem Bild, während bei multimodaler Formatanpassung Video Vorrang vor Bildern haben kann. Lesen Sie die zurückgegebenen Aufgabenfelder für die tatsächliche Dauer und das tatsächliche Seitenverhältnis.\n\nWählen Sie mit generate_audio, ob das erzeugte Video synchronisierten Ton enthält. Der dokumentierte Standard ist true; false fordert Stille an. Bei aktiviertem Audio erzeugt das Profil Stimmen, Effekte oder Hintergrundmusik aus dem Prompt und visuellen Inhalt. Der Leitfaden empfiehlt, Dialog in doppelte Anführungszeichen einzuschließen. Benennen Sie den Sprecher und den beabsichtigten Zusammenhang zwischen Ton und Aktion. Prüfen Sie die Sprache mit einer Person, die die Sprache fließend beherrscht, und kontrollieren Sie die Tonabstimmung im gesamten Clip einschließlich bearbeiteter oder verlängerter Abschnitte.\n\nDer Leitfaden für 2.0 Fast schließt die älteren Steuerungen frames und camera_fixed aus und unterstützt keine Offline-Verarbeitung mit flex. Beschreiben Sie das Kameraverhalten in der Szene und verwenden Sie duration für die Cliplänge. Die Optionen seed und watermark bleiben dokumentiert. Derselbe seed garantiert keine identische Ausgabe. Bewahren Sie deshalb beim Vergleich von Überarbeitungen das fertige Ergebnis, statt sich nur auf die Anfrageeinstellungen zu verlassen.\n\nDer Video-Token-Verbrauch wird wie folgt berechnet: (Dauer des Eingabevideos + Dauer des Ausgabevideos) × Ausgabebreite × Ausgabehöhe × Ausgabebildrate / 1024. Anfragen mit Eingabevideo und Anfragen ohne Eingabevideo haben unterschiedliche Abrechnungskategorien. Die Aufgabenabfrage meldet usage.completion_tokens und usage.total_tokens; bewahren Sie diese gemeldeten Mengen zusammen mit dem fertigen Clip.\n\nDas Absenden liefert eine Aufgabenkennung, bevor das fertige Video verfügbar ist. Verfolgen Sie den Verarbeitungsstatus, rufen Sie nach erfolgreichem Abschluss content.video_url ab und bewahren Sie die gemeldeten Angaben zu Dauer, Auflösung, Seitenverhältnis, Bildrate und Verbrauch zusammen mit dem Ergebnis. Das Ablaufintervall wird ab der Aufgabenerstellung gemessen, beträgt standardmäßig 172.800 Sekunden und reicht von 3.600 bis 259.200 Sekunden. Speichern Sie den fertigen Clip mit seinen Referenzen und dem Prompt. Prüfen Sie anschließend Motividentität, Objektkontakt, Kamerakontinuität und zeitliche Tonabstimmung über die gesamte Sequenz.",
    "alias_of": null,
    "aliases": [],
    "author": "ByteDance",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text",
        "image",
        "video",
        "audio"
      ],
      "manufacturer_output": [
        "video"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.822402",
            "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.822402",
            "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,
    "display_name": "ByteDance: Seedance 2.0 Fast",
    "formats": [
      "videos"
    ],
    "id": "doubao-seedance-2-0-fast-260128",
    "input": [
      "text",
      "image",
      "video",
      "audio"
    ],
    "kind": "video",
    "locale": "en",
    "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": {
            "errors": [
              {
                "condition": "Ungültiges JSON/Modell, ungültige Pflichtfeldtypen oder ungültiger Inhaltsindex.",
                "http_status": 400,
                "type": "invalid_request_error"
              },
              {
                "condition": "Ungültiger Ailoot API-Schlüssel.",
                "http_status": 401,
                "type": "authentication_error"
              },
              {
                "condition": "Aufgabe/Ausgabe fehlt oder ist nicht demselben Benutzer/API-Schlüssel/derselben Gruppe zugeordnet.",
                "http_status": 404,
                "type": "not_found_error"
              },
              {
                "condition": "Ursprüngliche Übermittlung/Status unvollständig; ursprüngliche ID aufbewahren, nicht erneut übermitteln.",
                "http_status": 502,
                "type": "result_pending_check"
              },
              {
                "condition": "Ursprüngliche Medien/Route/Abrechnung werden geprüft; setzen Sie den ursprünglichen Vorgang fort.",
                "http_status": 503,
                "type": "result_pending_check"
              }
            ],
            "ignored_fields": [],
            "lifecycle": {
              "cancel_endpoint": null,
              "completed_states": [
                "succeeded"
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}/content",
                  "query": {
                    "index": "actual output index; default 0"
                  }
                }
              ],
              "content_pending": "Original status JSON until publication.",
              "content_ready": {
                "http_status": 303,
                "location": "actual signed Ailoot-owned asset URL"
              },
              "create": {
                "http": "POST",
                "path": "/v1/videos"
              },
              "failed_states": [
                "failed",
                "expired"
              ],
              "id_source": "Actual returned id or X-Ailoot-Task-Id; provider_task_id is separate. Use returned polling_url.",
              "mode": "submit_once_poll_original",
              "owned_result": {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              },
              "pending_states": [
                "queued",
                "running"
              ],
              "signed_asset_lifetime_seconds": 86400,
              "status": [
                {
                  "http": "GET",
                  "path": "/v1/videos/{request_id}"
                },
                {
                  "http": "GET",
                  "path": "/v1/videos/generations/{request_id}"
                }
              ],
              "submit_status": 200,
              "unknown": "Bewahren Sie die ursprüngliche Antwort/Header/id auf und fragen Sie diesen Vorgang regelmäßig ab; übermitteln Sie eine Erstellung mit unbekanntem Ergebnis niemals erneut.",
              "unknown_no_replay": true
            },
            "material_combinations": [
              [
                "text"
              ],
              [
                "image"
              ],
              [
                "video"
              ],
              [
                "image",
                "audio"
              ],
              [
                "image",
                "video"
              ],
              [
                "video",
                "audio"
              ],
              [
                "image",
                "video",
                "audio"
              ]
            ],
            "operation_modes": [
              "text_to_video",
              "image_to_video",
              "multimodal_reference",
              "video_edit_via_content",
              "video_extend_via_content"
            ],
            "outputs": {
              "additional_media_boundary": "Only content.video_url is selected for ownership. No owned last-frame/callback result flow is established.",
              "all_results": "Bewahren Sie jede tatsächliche URL in content.video_url auf; index muss eine tatsächlich zurückgegebene Ausgabe bezeichnen.",
              "every_actual_output": true,
              "family": "video",
              "fields": [
                {
                  "description": null,
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "provider_task_id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "polling_url",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "status",
                  "type": "string when supplied"
                },
                {
                  "description": null,
                  "name": "content.video_url",
                  "type": "string|string[]"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object when supplied"
                }
              ],
              "format": null,
              "maximum_outputs": null,
              "ownership": "Configured video outputs are copied, reopened and SHA256/length/positive-duration checked before publication.",
              "result": "Natives JSON mit öffentlicher id/polling_url. Nach der Veröffentlichung enthält content.video_url signierte URL(s) im Eigentum von Ailoot; vor der Veröffentlichung werden ausgewählte Ausgabe-URLs geleert."
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "doubao-seedance-2-0-fast-260128"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Native Text-/Medienobjekte; das äußere Array darf nicht leer sein. Verschachtelte Knotentypen werden von diesem generischen Ailoot-Konstruktor nicht validiert.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minItems": 1,
                "name": "content",
                "required": true,
                "type": "array"
              },
              {
                "availability": "source_interface",
                "conditions": "Synchronisierter, im Video eingebetteter Ton.",
                "default": true,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "generate_audio",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "conditions": "Ganzzahl 4–15 oder -1; die tatsächliche Ausgabedauer wird zurückgegeben.",
                "default": 5,
                "default_known": true,
                "documented_values": [
                  -1,
                  4,
                  5,
                  6,
                  7,
                  8,
                  9,
                  10,
                  11,
                  12,
                  13,
                  14,
                  15
                ],
                "enum": null,
                "enum_known": false,
                "name": "duration",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "conditions": "1080p wird für 2.0/fast ausdrücklich nicht unterstützt.",
                "default": "720p",
                "default_known": true,
                "enum": [
                  "480p",
                  "720p"
                ],
                "enum_known": true,
                "name": "resolution",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "adaptive gilt ausdrücklich für 2.0/fast/1.5; das Beispiel für 2.5 verwendet ausschließlich 16:9.",
                "default": "adaptive",
                "default_known": true,
                "enum": [
                  "16:9",
                  "4:3",
                  "1:1",
                  "3:4",
                  "9:16",
                  "21:9",
                  "adaptive"
                ],
                "enum_known": true,
                "name": "ratio",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": false,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "watermark",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "source_interface",
                "default": -1,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "maximum": 4294967295,
                "minimum": -1,
                "name": "seed",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": 172800,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "maximum": 259200,
                "minimum": 3600,
                "name": "execution_expires_after",
                "required": false,
                "type": "integer",
                "unit": "Sekunden"
              },
              {
                "availability": "source_interface",
                "conditions": "2.0/fast schließen offline flex aus; der Geltungsbereich für 2.5 ist nicht geklärt.",
                "default": "default",
                "default_known": true,
                "enum": [
                  "default"
                ],
                "enum_known": true,
                "name": "service_tier",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "maxLength": 64,
                "name": "safety_identifier",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "conditions": "Nur 2.0/fast; dokumentiert ist type=web_search.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools",
                "properties": {
                  "type": {
                    "enum": [
                      "web_search"
                    ],
                    "type": "string"
                  }
                },
                "required": false,
                "required_properties": [
                  "type"
                ],
                "type": "object"
              }
            ],
            "profile_binding": "Exact model ID and documented Ailoot video interface.",
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "content": {
                  "items": {
                    "type": "object"
                  },
                  "minItems": 1,
                  "type": "array"
                },
                "duration": {
                  "type": "integer"
                },
                "execution_expires_after": {
                  "maximum": 259200,
                  "minimum": 3600,
                  "type": "integer"
                },
                "generate_audio": {
                  "type": "boolean"
                },
                "model": {
                  "const": "doubao-seedance-2-0-fast-260128",
                  "type": "string"
                },
                "ratio": {
                  "enum": [
                    "16:9",
                    "4:3",
                    "1:1",
                    "3:4",
                    "9:16",
                    "21:9",
                    "adaptive"
                  ],
                  "type": "string"
                },
                "resolution": {
                  "enum": [
                    "480p",
                    "720p"
                  ],
                  "type": "string"
                },
                "safety_identifier": {
                  "maxLength": 64,
                  "type": "string"
                },
                "seed": {
                  "maximum": 4294967295,
                  "minimum": -1,
                  "type": "integer"
                },
                "service_tier": {
                  "enum": [
                    "default"
                  ],
                  "type": "string"
                },
                "tools": {
                  "type": "object"
                },
                "watermark": {
                  "type": "boolean"
                }
              },
              "required": [
                "content",
                "model"
              ],
              "type": "object"
            },
            "source_ambiguities": [
              "Shared content.items.required demands image_url+role even for published text nodes; intended combinations/examples and actual outer-array validation remain distinct.",
              "return_last_frame and callback_url exist upstream but current output ownership selects content.video_url only. No owned last-frame/callback contract is asserted."
            ],
            "unsupported": [
              "Separate cancel/delete for this generic method",
              "Separate edit/extension endpoint for this method"
            ]
          },
          "hints": [
            "Erstellen Sie den Vorgang einmal und bewahren Sie die zurückgegebene öffentliche id/polling_url auf.",
            "Fragen Sie den ursprünglichen Auftrag regelmäßig ab; laden Sie nach succeeded den tatsächlichen, Ihnen zugeordneten Inhalt aus content.video_url herunter."
          ],
          "input": {
            "additional_properties": true,
            "content_type": "application/json",
            "material_combinations": [
              [
                "text"
              ],
              [
                "image"
              ],
              [
                "video"
              ],
              [
                "image",
                "audio"
              ],
              [
                "image",
                "video"
              ],
              [
                "video",
                "audio"
              ],
              [
                "image",
                "video",
                "audio"
              ]
            ],
            "material_types": [
              "text",
              "image",
              "video",
              "audio"
            ],
            "optional": [
              "generate_audio",
              "duration",
              "resolution",
              "ratio",
              "watermark",
              "seed",
              "execution_expires_after",
              "service_tier",
              "safety_identifier",
              "tools"
            ],
            "optional_text_with_media": true,
            "reference_media_count_and_size_limits": null,
            "required": [
              "content",
              "model"
            ],
            "validation_scope": "Ailoot prüft die erforderlichen Feldtypen sowie ein nicht leeres model/content-Array. Andere Anfragefelder bleiben für das ausgewählte Modell erhalten."
          },
          "lifecycle": {
            "cancel_endpoint": null,
            "completed_states": [
              "succeeded"
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}/content",
                "query": {
                  "index": "actual output index; default 0"
                }
              }
            ],
            "content_pending": "Original status JSON until publication.",
            "content_ready": {
              "http_status": 303,
              "location": "actual signed Ailoot-owned asset URL"
            },
            "create": {
              "http": "POST",
              "path": "/v1/videos"
            },
            "failed_states": [
              "failed",
              "expired"
            ],
            "id_source": "Actual returned id or X-Ailoot-Task-Id; provider_task_id is separate. Use returned polling_url.",
            "mode": "submit_once_poll_original",
            "owned_result": {
              "http": "GET",
              "path": "/v1/media/assets/{asset_id}"
            },
            "pending_states": [
              "queued",
              "running"
            ],
            "signed_asset_lifetime_seconds": 86400,
            "status": [
              {
                "http": "GET",
                "path": "/v1/videos/{request_id}"
              },
              {
                "http": "GET",
                "path": "/v1/videos/generations/{request_id}"
              }
            ],
            "submit_status": 200,
            "unknown": "Preserve original response/headers/id and poll that operation; never resubmit unknown creation.",
            "unknown_no_replay": true
          },
          "manufacturer_capability": {
            "documented_material_types": [
              "text",
              "image",
              "video",
              "audio"
            ]
          },
          "method": {
            "http": "POST",
            "path": "/v1/videos"
          },
          "method_aliases": [
            "/v1/videos/generations"
          ],
          "operation_modes": [
            "text_to_video",
            "image_to_video",
            "multimodal_reference",
            "video_edit_via_content",
            "video_extend_via_content"
          ],
          "output": {
            "additional_media_boundary": "Only content.video_url is selected for ownership. No owned last-frame/callback result flow is established.",
            "all_results": "Retain every actual URL in content.video_url; index must identify a real returned output.",
            "every_actual_output": true,
            "family": "video",
            "fields": [
              {
                "description": null,
                "name": "id",
                "type": "string"
              },
              {
                "description": null,
                "name": "provider_task_id",
                "type": "string"
              },
              {
                "description": null,
                "name": "polling_url",
                "type": "string"
              },
              {
                "description": null,
                "name": "status",
                "type": "string when supplied"
              },
              {
                "description": null,
                "name": "content.video_url",
                "type": "string|string[]"
              },
              {
                "description": null,
                "name": "usage",
                "type": "object when supplied"
              }
            ],
            "format": null,
            "maximum_outputs": null,
            "ownership": "Configured video outputs are copied, reopened and SHA256/length/positive-duration checked before publication.",
            "result": "Native JSON with public id/polling_url. After publication content.video_url contains Ailoot-owned signed URL(s); before publication selected output URLs are blanked."
          }
        },
        "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": {
              "quoted_unit": "per 1,000 video tokens",
              "video_input": "present"
            },
            "label": "Eingabe mit Videoreferenz.",
            "units": [
              {
                "amount": "0.007536000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token_with_video_input",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.000007536",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per 1,000 video tokens",
              "video_input": "absent"
            },
            "label": "Eingabe ohne Videoreferenz.",
            "units": [
              {
                "amount": "0.013032000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token_without_video_input",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.000013032",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_token"
              }
            ]
          },
          {
            "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.822402",
                "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.822402",
                "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}\"\ncat > request.json <<'JSON_REQUEST'\n{\"model\":\"doubao-seedance-2-0-fast-260128\",\"content\":[{\"type\":\"text\",\"text\":\"女孩抱着狐狸，女孩睁开眼，温柔地看向镜头，狐狸友善地抱着，镜头缓缓拉出，女孩的头发被风吹动\"}]}\nJSON_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\n",
            "label": "curl · create video",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_POLL'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import quote,urljoin,urlsplit\nr=json.loads(Path(\"result.json\").read_text())\ni=r.get(\"id\")\nif not isinstance(i,str) or not i.startswith(\"native302_\"):raise SystemExit(\"Keep original response/headers/id; do not resubmit creation.\")\nu=urljoin(\"https://api.ailoot.ai\",r.get(\"polling_url\") or \"/v1/videos/\"+quote(i,safe=\"\"))\np=urlsplit(u)\nif p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or not p.path.startswith(\"/v1/videos/\"):raise SystemExit(\"Use actual Ailoot lookup path.\")\nPath(\"poll-url.txt\").write_text(u)\nPY_POLL\ncurl --fail-with-body --silent --show-error \"$(cat poll-url.txt)\" -H \"Authorization: Bearer $AILOOT_API_KEY\" -D status-headers.txt -o status.json\n",
            "label": "curl · read original task",
            "language": "bash"
          },
          {
            "code": "set -eu\npython3 - <<'PY_ASSETS'\nimport json\nfrom pathlib import Path\nfrom urllib.parse import urlsplit\nr=json.loads(Path(\"status.json\").read_text())\nif r.get(\"status\")!=\"succeeded\":raise SystemExit(\"Poll same original job until an owned result is returned.\")\nu=r.get(\"content\",{}).get(\"video_url\")\nurls=[u] if isinstance(u,str) else u\nif not isinstance(urls,list) or not urls:raise SystemExit(\"No completed video URL.\")\nfor u in urls:\n    if not isinstance(u,str):raise SystemExit(\"Invalid returned URL.\")\n    p=urlsplit(u)\n    if p.scheme!=\"https\" or p.netloc!=\"api.ailoot.ai\" or not p.path.startswith(\"/v1/media/assets/\") or not p.path.endswith(\"/content\") or not p.query:raise SystemExit(\"Wait for actual Ailoot-owned signed result.\")\nPath(\"asset-urls.txt\").write_text(\"\\n\".join(urls)+\"\\n\")\nPY_ASSETS\nindex=0\nwhile IFS= read -r asset_url; do\n  curl --fail-with-body --silent --show-error \"$asset_url\" -o \"video-${index}.bin\"\n  index=$((index + 1))\ndone < asset-urls.txt\n",
            "label": "curl · download owned video",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "videos",
        "hints": [
          "Create once and retain returned public id/polling_url.",
          "Poll the original job; download actual owned content.video_url after succeeded."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "text",
          "image",
          "video",
          "audio"
        ],
        "label": "Videos",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [
          "/v1/videos/generations"
        ],
        "out": null,
        "output": [
          "video"
        ],
        "path": "/v1/videos",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "original_invoice_usd",
          "image_input_price": null,
          "image_output_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": false,
                "estimate_only": true,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per 1,000 video tokens",
              "video_input": "present"
            },
            "label": "Input contains video.",
            "units": [
              {
                "amount": "0.007536000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token_with_video_input",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.000007536",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per 1,000 video tokens",
              "video_input": "absent"
            },
            "label": "Input contains no video.",
            "units": [
              {
                "amount": "0.013032000",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": false,
                "estimate_only": true,
                "key": "video_output_token_without_video_input",
                "label": "per 1,000 video tokens",
                "native_amount_usd_per_unit": "0.000013032",
                "native_quantity": 1,
                "public_unit_label": "per 1,000 video tokens",
                "quantity": 1000,
                "quantity_is_estimate": true,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "video_output_token"
              }
            ]
          },
          {
            "basis": "This estimate is not an additional charge or a fixed rate for the completed generation.",
            "dimensions": {
              "forecast_quantity": "one generation estimate"
            },
            "label": "Estimated generation cost",
            "units": [
              {
                "amount": "0.822402",
                "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.822402",
                "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": "doubao-seedance-2-0-fast-260128",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/videos/{request_id}",
          "GET /v1/videos/generations/{request_id}",
          "GET /v1/videos/{request_id}/content",
          "GET /v1/videos/generations/{request_id}/content"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": false,
            "estimate_only": true,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.007536000",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_output_token_with_video_input",
            "label": "per 1,000 video tokens",
            "native_amount_usd_per_unit": "0.000007536",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_output_token"
          },
          {
            "amount": "0.013032000",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": false,
            "estimate_only": true,
            "key": "video_output_token_without_video_input",
            "label": "per 1,000 video tokens",
            "native_amount_usd_per_unit": "0.000013032",
            "native_quantity": 1,
            "public_unit_label": "per 1,000 video tokens",
            "quantity": 1000,
            "quantity_is_estimate": true,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "video_output_token"
          },
          {
            "amount": "0.822402",
            "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.822402",
            "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": "doubao-seedance-2-0-fast-260128",
        "request_model_id": "doubao-seedance-2-0-fast-260128",
        "route_label": "Ultra"
      }
    ],
    "name": "ByteDance: Seedance 2.0 Fast",
    "price": {
      "estimate_only": true,
      "in": null,
      "in_label": null,
      "out": 0.822402,
      "out_label": "estimate before generation",
      "scope_label": "Estimated generation cost",
      "sort_in": null,
      "sort_out": 0.822402,
      "varies": false
    },
    "short": "Seedance 2.0 Fast ist das multimodale Fast-Profil für Videoerzeugung, Bearbeitung und Verlängerung. Es nimmt Text-, Bild-, Video- und Audioreferenzen entgegen, unterstützt die Ausgabe mit synchronisiertem Ton oder ohne Ton und dokumentiert Clips von 4–15 Sekunden in 480p oder 720p."
  },
  "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": "Seedance 2.0 Fast ist das multimodale Fast-Profil für Videoerzeugung, Bearbeitung und Verlängerung. Es nimmt Text-, Bild-, Video- und Audioreferenzen entgegen, unterstützt die Ausgabe mit synchronisiertem Ton oder ohne Ton und dokumentiert Clips von 4–15 Sekunden in 480p oder 720p.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "3c9e3b962d34561fadff050f451b8a12fa954ce62714b3053d9de9998d4e4f18",
    "renderer_sha256": "4915581496a34d8a27d706c57a04aa12aa22b4b136560828b2e1b9b8437d1eb0"
  },
  "sourceRevision": "bac3f440061b60016b676de15b882345559e66925507a1dded846d4bae48dcd1"
}
