Pro API: Videos mit Sound generieren
Ein Clip aus einem Prompt oder eine Animation eines Standbilds, das du mitlieferst. Die Datei ist ein MP4, mit Sound, wenn du ihn anforderst.
Video einreichen
POST /videos
{ "prompt": "a woman in a white linen dress walks along a beach at sunset, wind in her hair, she turns and smiles at the camera",
"width": 1080, "height": 1920, "audio": true }| Feld | Typ | Standard | Was es tut |
|---|---|---|---|
prompt | string | erforderlich | Die Handlung, die Stimmung, das Licht. Beschreib die Bewegung. |
width, height | int | 720 x 1280 | Standardmäßig vertikal. Siehe das Preisraster unten. |
quality | string | max: Ultra-Modus (das feinste Rendering), siehe Ultra-Modus. | |
consistency | string | standard | enhanced: Verstärkte Konsistenz, gleichmäßigere Bewegung, Gesichter und Hintergrund über die Zeit, bis zu 721 Frames pro Shot (30 s bei 24 fps, 24 s bei 30), Verlängerungen inklusive. Nur im Qualitätsmodus. Siehe Verstärkte Konsistenz. |
mode | string | ltx25 | ltx25: Engine 2.5 (Sound, automatische Dauer, 1080p, Endframe). turbo: am 11. Oktober 2026 eingestellt; eine turbo-Anfrage wird in Qualität 480p gerendert (gleiche Ausrichtung, gleiche Länge, höchstens 241 Frames, feste Länge), zum Preis von Qualität 480p. |
duration_auto | bool | true | Die Engine wählt die Länge anhand des Prompts, bis zu 20 s bei 24 fps (16 s bei 30, 8 s bei 60: die Grenze zählt Frames, siehe fps), und length wird dann ignoriert. Auf false setzen für eine feste Länge, die durch length angegeben wird. Mit consistency enhanced über 30 fps ist die Länge immer fest (fps_requires_fixed_duration sonst). |
length | int | 121 | Länge in Frames, bei der fps-Rate, immer der Form 8n+1; die Dauer ist (length - 1) / fps. Höchstens 481 (721 mit consistency enhanced). Bei 24 fps: 73 (3 s), 121 (5 s), 241 (10 s), 361 (15 s), 481 (20 s; 721, also 30 s, in enhanced). Bei 30: 241 (8 s), 481 (16 s; 721, 24 s). Bei 60: 241 (4 s), 481 (8 s; 721, 12 s). Wird für eine feste Länge verwendet (duration_auto auf false gesetzt); bei automatischer Dauer ignoriert. |
fps | int | 30 | Bildrate in Frames pro Sekunde: 24, 30 oder 60. Standardmäßig 30, die empfohlene Einstellung (geschmeidige Bewegung); 60, die weichste; 24, die Kinobildrate. 50, nur mit consistency enhanced, erzeugt eine leichte Zeitlupe (ca. 0,83x: die Engine setzt die Bewegung wie bei 60 und spielt sie bei 50 ab). length zählt Frames bei dieser Rate. Der Preis ändert sich nicht (Pauschalpreis pro Clip); die maximale Länge schon, da sie Frames zählt. Eine Verlängerung behält die Bildrate des vorherigen Clips, eine Sequenz die ihres ersten Shots. Eine Rate, die der Modus nicht unterstützt: invalid_fps, das die verfügbaren auflistet. |
audio | bool | false | Sound wird zusammen mit dem Bild generiert (Ambiente, Stimme). Verdoppelt den Preis des Clips (siehe Formate und Preis). |
image | string | Startframe in base64: das Video animiert dieses Bild. | |
end_image | string | Endframe in base64, zusammen mit image: der Clip blendet von einem zum anderen über (nur Engine 2.5). Ein Übergang wird in der angeforderten Größe ausgegeben, von 480p bis 1080p, und als Clip in diesem Format berechnet. | |
keyframes | array | Schlüsselbilder (Qualitätsmodus): 1 bis 4 Objekte { "image": base64, "at": seconds, "strength": 0.1 to 1 (1 by default) }. Der Clip zeigt jedes Bild zu seinem Zeitpunkt, zum Beispiel einen Charakter in der Mitte eines Shots, der an einem leeren Ort beginnt und endet. Die Länge wird fest (length, duration_auto wird auf false gezwungen); 0 < at < Länge, mindestens 0,5 s zwischen zwei Schlüsselbildern; auf etwa ein Drittel einer Sekunde genau. Funktioniert mit image und end_image. Nicht in Ultra oder Multi-Ref; in einer Verlängerung nur mit consistency enhanced (siehe Verstärkte Konsistenz). Gleicher Preis wie ein Clip desselben Formats. | |
lora, lora_strength | string, number | Ein trainierter Charakter auf dem Account (name aus GET /loras) und seine Stärke (0 bis 1). | |
lora2, lora2_strength | string, number | Ein zweiter Charakter. | |
multiref | object | 1 bis 4 Charaktere (12 in Ultra) aus GET /characters besetzen, plus gespeicherte Objekte, Tiere und einen Ort aus GET /subjects, im Prompt mit @Name aufgerufen, siehe Multi-Ref Video. | |
seed | int | zufällig | Seed des Renderings, von 0 bis 4294967295. Gleicher seed, gleicher Prompt, gleiche Bild- und gleiche Einstellungen (Format, Länge, Sound, Modus): der gleiche Clip, mit leichten Unterschieden bei einem anderen Grafikkartenwechsel. Mit automatischer Dauer ändert eine anders gewählte Länge den Clip: für eine strikte Reproduktion duration_auto auf false setzen und length angeben. |
steps | int | Engine | Leer lassen. |
Standard-Bildrate: 30 fps. Clips wurden früher bei 24 fps gerendert. Ohne fps ist ein Clip
gleicher length daher kürzer als zuvor (241 Frames: 8 s statt 10 s). Sende "fps": 24,
um das frühere Verhalten beizubehalten.
Die Antwort:
{ "jobId": "...", "seed": 908172, "cost": 30 }Die Kosten werden bei der Einreichung berechnet und angekündigt, bevor etwas abgebucht wird. Der seed wird
ebenfalls zurückgegeben, ob du ihn angegeben hast oder er zufällig gezogen wurde.
Formate und Preis
Ein Video wird pro Format berechnet, als Pauschalpreis unabhängig von seiner Länge. Basis: 5 Credits.
Der Pauschalpreis wird bei 720p mit 2 und bei 1080p mit 3 multipliziert, und Sound verdoppelt den Preis zusätzlich.
Die Faktoren werden auf den Basispreis angewendet, nicht aufeinander: 1080p mit Sound kostet 5 x 3 x 2 = 30
Credits. Bis zu 481 Frames, also 20 s bei 24 fps, ändert die Länge nichts (5 s oder 20 s, gleicher Preis).
Über 481 Frames (bis zu 721, nur mit consistency enhanced, feste Länge) wird der Preis
des Formats verdoppelt. Die Bildrate (fps) ändert den Preis nicht, aber die Stufen zählen Frames:
bei 30 fps gilt der Normalpreis bis 16 s; bei 60 bis 8 s (12 s zum doppelten Preis in enhanced).
Eine Ausnahme: in Qualität kostet 480p ohne Sound 2 Credits, unabhängig von der Länge (seit dem 11. Oktober 2026). Multi-Ref und verstärkte Konsistenz behalten den Pauschalpreis des Formats, 5 Credits.
| Format | Kurze Seite | Beispielgrößen | Stumm | Mit Sound |
|---|---|---|---|---|
| 480p | 480 | 480 x 832, 832 x 480 | 2 (5 in Multi-Ref und verstärkter Konsistenz) | 10 |
| 720p | 720 | 720 x 1280, 1280 x 720 | 10 | 20 |
| 1080p | 1080 | 1080 x 1920, 1920 x 1080 | 15 | 30 |
Die Größe, die du zurückbekommst. Die Engine arbeitet in Vielfachen von 32 und in zwei Stufen, daher kommt die Datei bei 720p in 768 x 1280 (oder 1280 x 768) und bei 1080p in 1088 x 1920 (oder 1920 x 1088) heraus. 480p bleibt bei 480 x 832 (oder 832 x 480), außer bei verstärkter Konsistenz. Wichtig zu wissen, wenn du unsere Renders zusammenfügst oder überlagerst.
Die turbo-Lane wurde am 11. Oktober 2026 eingestellt: eine turbo-Anfrage wird in Qualität 480p
gerendert und entsprechend berechnet (2 Credits ohne Sound, 10 mit Sound).
Preis vor dem Einreichen kennen
POST /videos/quote nimmt denselben Body wie POST /videos und führt dieselbe Berechnung durch, aber
es wird nichts erstellt: kein Rendering, keine Credits reserviert, kein Kontingent verbraucht. Ruf es auf,
bevor du dich festlegst, besonders wenn ein Agent gegen ein Budget arbeitet.
{ "cost": 30, "mode": "ltx25", "format": "1080p", "audio": true, "fps": 30, "duration_auto": true,
"seconds_max": 16, "detail": "flat 5 x 3 (1080p) x 2 (sound) = 30" }detail erläutert die Zahl; fps ist die verwendete Bildrate und seconds_max die Länge in Sekunden
bei dieser Rate. Mit "consistency": "enhanced" akzeptiert das Angebot eine feste Länge bis zu 721 Frames und
wendet den Preis über 481 Frames an (x 2 (over 20 s) in detail bei 24 fps, x 2 (over 481 frames) bei
einer anderen Rate). Dieselbe Route gibt es für Bilder, POST /images/quote, die immer
{ "cost": 1, ... } zurückgibt: ein Bild kostet immer 1 Credit.
Für einen Ultra-Clip mit Abrechnung pro Sekunde gibt das Angebot die abgerechnete Länge in seconds an, und detail schlüsselt den Preis pro Sekunde auf.
Abfragen, herunterladen, abbrechen
Dieselben Routen wie bei Bildern, unter /videos.
GET /videos/{jobId}:pending/completed/failed, gleiche Felder. Eine verstärkte Verlängerung kann alsfailedmit"error": "extension_not_applied"enden (die Engine hat das Ende des vorherigen Clips nicht übernommen): es werden keine Kosten berechnet, einfach erneut einreichen.GET /videos/{jobId}/file: das MP4 (Content-Type: video/mp4).POST /videos/{jobId}/cancel: bricht ab, ohne dass Kosten anfallen.
Bei Ultra mit Abrechnung pro Sekunde stoppt ein Rendering, das bereits läuft, nicht mehr: Der Abbruch antwortet 409 render_in_progress, und der Clip wird geliefert und abgerechnet. Ein Clip, den die Engine bei der Ausgabe ablehnt, endet als failed, mit einem Satz in detail und dem Code der Engine in reason: Es wird nichts abgebucht.
Ein Video dauert 1 bis 5 Minuten, länger wenn die Engine kalt startet. Alle 3 Sekunden abfragen und
herunterladen, sobald der Status completed ist: die Datei wird nicht archiviert.
Mehrere Shots in einem Clip
Ein einzelner Prompt kann mehrere Shots mit harten Schnitten enthalten, insgesamt bis zu 20 Sekunden bei 24 fps (16 s bei 30, dem Standard). Beschreib sie der
Reihe nach: Shot 1: <Bildausschnitt>, <Aktion>. Cut to Shot 2: .... Wiederhole in jedem Shot, was gleich bleiben soll
(Charakter, Outfit, Ort, Licht), und beende mit einer Zeile gemeinsamer Stimmung.
Lass Timecodes weg: halte duration_auto an, und die Engine wählt die Länge (bis zu 20 s bei 24 fps, 16 s bei 30) und
den Schnittmoment. Zwei bis vier Shots pro Clip funktionieren am besten.
A cinematic sequence of three shots, same woman, same place, same lighting throughout.
Shot 1: Wide shot, night, light rain on a narrow Paris street with glowing café windows. A woman in a long beige trench coat walks toward the camera under a transparent umbrella, wet cobblestones reflecting warm yellow streetlights.
Cut to Shot 2: Close-up on her face under the umbrella, raindrops on the plastic, warm café light on her cheek, she smiles softly.
Cut to Shot 3: Medium shot from inside the café through the rainy window, she pushes the door open and steps in, warm light spilling onto the wet pavement.
Calm, melancholic, romantic mood.Mehrere Shots in einem Clip oder eine Sequenz? Sie dienen unterschiedlichen Zwecken:
| Mehrere Shots in einem Clip | Sequenz (Verlängerungen) | |
|---|---|---|
| Zwischen den Shots | Harte Schnitte | Kein Schnitt: jeder Shot führt die Bewegung fort |
| Länge | Höchstens 20 s bei 24 fps (16 s bei 30) | Länger |
| Renderings | Eines | Eines pro Shot |
| Preis | Ein Clip | Ein Clip pro Shot |
Clip verlängern
Ein Clip kann verlängert werden: der nächste Shot führt die Bewegung des vorherigen nahtlos fort,
ohne Stopp am Übergang. Er wird durch etwa die letzte Sekunde des vorherigen Clips geführt, nicht durch ein einzelnes
Standbild. Füge zu POST /videos hinzu:
| Feld | Typ | Standard | Was es tut |
|---|---|---|---|
extend_job_id | string | Der zu verlängernde Clip: ein Rendering von deiner Lizenz, kurz nach Fertigstellung abgerufen. | |
extend_frames | int | 25 | Wie viel vom Ende des Clips den nächsten Shot führt, in Frames: 9, 17, 25, 33, 41 oder 49 (25 sind etwa 1 s bei 24 fps). |
extend_video | string | Statt extend_job_id: das Ende eines eigenen Clips als base64-MP4 mit genau extend_frames Frames, höchstens 8 MB. |
Der verlängerte Shot behält die Auflösung des vorherigen Clips: width und height werden
bei extend_job_id ignoriert, und bei extend_video wird die Größe aus der gesendeten Datei gelesen. Er enthält
nur die neuen Frames, sodass die aneinandergereihten Shots ein durchgehendes Video ergeben. Er behält die Bildrate
des vorherigen Clips: fps weglassen (er übernimmt sie) oder dieselbe angeben; eine andere wird
abgelehnt (extend_fps_mismatch). length ist die neue Dauer des Shots (121 = 5 s mehr bei
24 fps), und sie ist exakt: automatische Dauer gilt nicht für eine Verlängerung. Eine Verlängerung kostet den Preis eines Clips.
Einschränkungen: kein Endframe oder Schlüsselbilder gleichzeitig, außer mit verstärkter Konsistenz.
Der Sound setzt sich am Übergang fort. Mit audio: true, wenn das Ende des vorherigen Clips eine Tonspur hat,
übernimmt der neue Shot diesen Sound, anstatt einen neuen zu erstellen. Mit extend_job_id behält das abgeschnittene
Ende den Sound des Clips; mit extend_video das Ende mit seinem Sound senden. Ohne Tonspur in
diesem Ende, bei verstärkter Konsistenz und in Ultra, beginnt der Sound neu mit
dem Shot: dieselbe Atmosphäre in jedem Prompt beibehalten, damit der Übergang möglichst wenig hörbar ist.
Einen Clip kurz nach Fertigstellung verlängern. Später ist er bei uns nicht mehr verfügbar
(clip_unavailable), und du sendest sein Ende selbst in extend_video.
Einen Ultra-Shot verlängern, vorwärts oder rückwärts
Ein Shot, der in Ultra pro Sekunde gerendert wurde, wird ebenfalls in Ultra verlängert, vorwärts oder rückwärts; jeder andere Clip wird wie oben verlängert. Sende POST /videos mit "quality": "max" und:
| Feld | Typ | Standard | Was es tut |
|---|---|---|---|
extend_job_id | string | Der zu verlängernde Ultra-Shot, von deiner Lizenz vor weniger als 24 Stunden gerendert. | |
extend_upload_id | string | Stattdessen, für einen älteren Shot: die von POST /extensions (unten) gelieferte ID, sobald seine Originaldatei hochgeladen ist. | |
extend_direction | string | forward | forward rendert, was danach kommt; backward rendert die Momente direkt davor, um sie vor den Shot zu schneiden. |
- Das Rendering enthält nur den neuen Teil, so lang wie ein Ultra-Clip (
length/fps, 5 s bei automatischer Dauer). Es übernimmt die Auflösung des Shots (widthundheightwerden ignoriert) und schließt an sein letztes Bild (forward) oder sein erstes (backward) an. - Kein Startbild, keine Referenzen (
multiref), keine Bewegung und keine verstärkte Konsistenz.backwardkommt nicht in eine Sequenz, die ihre Shots nacheinander einordnet. - Preis: der neue Teil zum Ultra-Preis pro Sekunde, plus pro Sekunde des verlängerten Shots 2 Credits in 480p, 5 in 720p und 13 in 1080p (
ultra.extend_per_secondinGET /pricing). Diese Sekunden werden auf die nächste Sekunde aufgerundet (auf 0,1 s genau) und zählen bei 24 Bildern pro Sekunde: Ein Shot mit höherer Bildrate zählt anteilig (2 s bei 60 fps zählen als 5 s).POST /videos/quotemit denselben Feldern liefertextend_secondsund den genauen Preis. - Ein Shot, der älter als 24 Stunden ist: Lade seine Originaldatei hoch, so wie
GET /videos/{jobId}/filesie geliefert hat.POST /extensionsmit{ "size": <Bytes> }liefertupload_id,upload_url,headersundexpires_in(900 s); sende die Datei mitPUT upload_urlund genau diesenheaders, dann übergibextend_upload_idinnerhalb von 2 Stunden. Ein Upload dient einem Rendering: ein MP4 von 4 bis 30 s, höchstens 60 MB und 1080p. Vor dem Rendern wird jedes an den Ultra-Modus gesendete Video (eine Bewegung oder ein zu verlängerndes Video) geprüft, und bei einer Ablehnung wird nichts abgebucht (400 input_video_out_of_limits): 24 bis 60 Bilder pro Sekunde, ein Verhältnis Breite/Höhe von 0,4 bis 2,5 und pro Rendering höchstens 30 s und 10 Dateien für Videos und Referenztöne zusammen. Bei einem realistischen Gesicht wird eine neu kodierte oder geschnittene Datei abgelehnt (400 engine_refused): Nur das Original geht durch. Ein Video, das nicht im Ultra-Modus gerendert wurde (etwa das Rendering eines anderen Modus), wird in Ultra nicht verlängert, wenn es ein realistisches Gesicht zeigt (400 extension_real_face, es wird nichts abgebucht): verlängere es im Qualitätsmodus oder rendere den Shot neu in Ultra.
Verstärkte Konsistenz
Mit "consistency": "enhanced" wird der Clip von einer Lane gerendert, die Bewegung, Gesichter und
Hintergrund über die Zeit gleichmäßiger hält. Sie geht bis zu 721 Frames pro Shot, also 30 s bei 24 fps und 24 s bei 30 (length, feste Länge)
und ist hauptsächlich für lange Videos gedacht:
- Erster Shot: ein normaler Clip (Prompt, Startframe,
keyframes,end_image), bis zu 721 Frames. - Verlängerung:
extend_job_id(oderextend_video) wie in Clip verlängern, mit derselbenconsistency.lengthist weiterhin die neue Dauer (bis zu 721, also 30 s mehr bei 24 fps). Eine verstärkte Verlängerung nimmt auchkeyframes, derenatvom ersten neuen Frame an zählt, und einen Endframeend_image, der auf dem letzten Frame des Shots gesetzt wird: zum Beispiel der Startframe des ersten Shots, damit ein langes Video in einer Schleife läuft.
Nur im Qualitätsmodus (mode ltx25, ohne quality: "max"), bis 1080p, nicht in Multi-Ref
(400 consistency_mode). Preis: der Pauschalpreis des Formats (480p ohne Sound:
5 Credits) bis zu 481 neuen Frames (20 s bei 24 fps), darüber verdoppelt (siehe das
Preisraster oben). Bildraten: 24, 30, 50 oder 60. Über 30 ist die Länge fest
(fps_requires_fixed_duration sonst); 50 erzeugt eine leichte Zeitlupe (siehe fps). Das Rendering dauert länger als ein Standard-
Clip, und sein Start kann auf eine größere Grafikkarte warten (lange Shots). Eine Sequenz behält für alle Shots dieselbe
consistency. Ausgelieferte Größe: dieselbe wie in Qualität bei 720p und 1080p; bei 480p
kommt die kurze Seite auf 448 heraus (448 x 832, 832 x 448, 448 x 448), da diese Lane in Vielfachen von 64 arbeitet.
Einige Prompts werden noch nicht unterstützt. Für sie wird ein einzelner Shot von höchstens 20 s (15 s mit einem
end_image, bei fester Länge) in Standard-Konsistenz gerendert, zum gleichen Preis. Darüber hinaus
(length über 481 mit duration_auto: false, oder über 361 mit einem end_image), in einer Verlängerung oder in
einer Sequenz, wird die Anfrage mit 400 consistency_explicit abgelehnt: den Shot kürzen oder
consistency: "standard" anfordern.
Langes Video (Sequenzen)
Ein Clip dauert höchstens 481 Frames, also 20 s bei 24 fps (721 mit verstärkter Konsistenz, 30 s bei 24 fps). Für längere Videos reicht eine Sequenz jeden Shot ein, sobald sein Rendering fertig ist, und fügt sie dann ohne Re-Encoding zu einem einzelnen MP4 zusammen. Eine Minute zum Beispiel sind 3 Shots à 20 s oder 2 Shots à 30 s in verstärkter Konsistenz bei 24 fps.
POST /sequencesöffnet eine Sequenz und antwortet mit{ "sequence_id": "seq_...", ... }.POST /videosmit"sequence_id": "seq_..."für jeden Shot: der erste wie gewohnt, die folgenden mitextend_job_idauf den vorherigen Shot gesetzt. Jeder Shot wird in die Sequenz eingereicht, in Einreichungsreihenfolge, sobaldGET /videos/{jobId}ihn als fertig meldet.POST /sequences/{id}/exportsobald der letzte Shot fertig ist. Es antwortet mitseconds,resolutionundfile_url.GET /sequences/{id}/file: das zusammengefügte Video (MP4).
Daneben gibt GET /sequences/{id} den Status zurück (eingereichte oder noch erwartete Shots),
POST /sequences/{id}/clips mit { "job_id": "..." } reicht ein Rendering manuell ein, und
DELETE /sequences/{id} löscht die Sequenz sofort.
Regeln. Jeder Shot hat dieselbe Auflösung (Verlängerungen behalten sie) und dieselbe Sound-Einstellung, entweder
alle mit Sound oder alle stumm, dieselbe consistency und dieselbe Bildrate (fps): der erste Shot legt sie fest, und ein Shot,
der abweicht, wird abgelehnt (409 consistency_mismatch, 409 sequence_fps_mismatch; 422 encoding_mismatch
für einen manuell eingereichten Shot). Ein Shot ohne fps übernimmt die der Sequenz. Höchstens
30 Shots pro Sequenz und 5 Sequenzen gleichzeitig pro Lizenz.
Was wir speichern und wie lange. Die Shots einer laufenden Sequenz werden 30 Minuten nach dem letzten hinzugefügten gelöscht, und das zusammengefügte Video 24 Stunden nach dem Export. Dann ist alles weg.
Den Projektordner exportieren
Ein Projektordner bündelt in einem ZIP alles, was du brauchst, um ein Video anderswo weiterzubearbeiten oder zu automatisieren: die Shots, ihre Referenzen, den Schnitt und ein Manifest, mit dem sich jeder Shot erneut rendern lässt. Er ist kostenlos: Es wird nichts gerendert.
POST /videos/{jobId}/export: ein Render vonPOST /videos(einzelner Shot, Multi-Ref, Verlängerung).POST /sequences/{id}/project: alle Shots einer Sequenz, hintereinander.- Optionaler Body, dieselben Optionen wie im Exportfenster der App:
include_media(standardmäßigtrue): die Videos der Shots und ihre signierten Originale.false: kein einziges Video (kein Clip, kein Original, kein Film); die Shots behalten Text, Einstellungen und Referenzen ("state": "expired"), und das Manifest enthältvideos_included: false.include_references(standardmäßigtrue): die Ansichten der Charaktere und die Bilder der Elemente, inreferences/.false: keine wird kopiert; ihre Namen, @Erwähnungen,idund Fingerabdrücke bleiben im Manifest (references_included: false).exclude_references: die Referenzen, die nicht kopiert werden sollen, einzeln, perid(character_id,subject_id), Name oder @Erwähnung, zum Beispiel["@Parc", "chr_..."](höchstens 200). Das Manifest enthältreferences_included: "partial"und"included": falsebei jeder ausgelassenen (false, wenn alle ausgelassen sind). Ein Eintrag, der keine Referenz des Exports bezeichnet:400 unknown_reference.include_film(nur Sequenz, standardmäßigfalse): der Film einer bereits zusammengefügten Sequenz; setztinclude_mediavoraus (sonst400 invalid_export_options, wie eine Option, die kein Boolean ist, oder einexclude_references, das keine Liste von Texten ist).manifest_only: true: nur das Manifest, ohne ZIP.
Die Antwort ist { "manifest": { ... }, "file_url": "...", "export_id": "exp_...", "expires_at": "...", "bytes": n }, und GET /exports/{id}/file lädt das ZIP herunter. Ein Export gleichzeitig pro Lizenz (409 export_in_progress), höchstens 2 GB (413 export_too_large: exportiere die Shots einzeln).
| Datei | Inhalt |
|---|---|
tendre-project.json | Das Manifest (Schema tendre.project/1, englische Schlüssel). Für jeden Shot: sein Status, der eingegebene Prompt (prompt) und der an die Engine gesendete (prompt_sent), die Einstellungen, der Seed, die Kosten, die Verlängerung (extends, direction), die mit ihren Dateien verknüpften Referenzen und api_request, der Body von POST /videos, der den Shot erneut rendert (null, wenn ein Bild nur in Base64 gesendet wurde); am Anfang references_included: true im ZIP (die Dateien der Referenzen liegen in references/), false mit manifest_only (Referenzen ohne Datei: files leer, nur sha256-Fingerabdrücke); ein Manifest ohne dieses Feld (frühere Exporte) gilt als true. Ein von der App exportierter Ordner, in dem der Kunde die Referenzen einzeln auswählt, trägt true, false oder "partial", und jede Referenz kann included tragen (fehlt es: wie am Anfang, false, wenn dort false steht, sonst true); eine nicht enthaltene Referenz behält Namen, @Erwähnung, id und Beschreibung, mit leerem files. project.settings enthält die Einstellungen des ersten Shots (quality, width, height, fps, audio, output_format "mp4") und settings_from_shot, die id dieses Shots. Ein von der App exportierter Ordner kann einen der App vorbehaltenen app-Block enthalten: ignoriere ihn |
shots/NN/clip.mp4 | Der Render jedes Shots, solange der Server ihn hat; shots/NN/original.mp4 oder .mov: die signierte Datei der Engine, Byte für Byte, falls sie noch existiert |
references/ | Die Ansichten der Charaktere und die Bilder der verwendeten Orte, Objekte, Tiere, Stile und Outfits |
timeline.otio, timeline.fcpxml | Der Schnitt (OpenTimelineIO; FCPXML für Final Cut Pro und DaVinci Resolve), Medien per Pfad relativ zum Ordner |
film.mp4 | Das zusammengefügte Video einer Sequenz, nur mit include_film: true und wenn sie bereits zusammengefügt wurde (POST /sequences/{id}/export); sonst ist assembled im Manifest null |
Was wir speichern und wie lange. Zu jedem angenommenen POST /videos speichert der Server einen Eintrag des Renders ohne jedes Bild und Video: den Text, die Einstellungen, die Kennungen (ein in Base64 gesendetes Bild hinterlässt nur seinen Fingerabdruck). Er wird 24 Stunden nach dem Absenden gelöscht; danach antwortet der Export mit 404 unknown_export. Das ZIP wird 45 Minuten nach seinem ersten Download gelöscht, spätestens 2 Stunden nach seiner Erstellung. Ein Shot, den der Server nicht mehr hat, erscheint mit "state": "expired", ohne Datei, aber mit Text, Einstellungen und Referenzen: Ein Agent kann ihn mit api_request erneut rendern.
Sequenz. Das Zusammenfügen löscht die Shots einen nach dem anderen. Um die Shots und den Film zu bekommen, exportiere das Projekt vor dem Zusammenfügen, füge dann zusammen und exportiere erneut mit { "include_film": true }: Der Film kommt hinzu, die Shots erscheinen dann als expired.
Ultra-Modus
Der Ultra-Modus ist das feinste Video-Rendering. Füge "quality": "max" zu POST /videos hinzu (mit mode ltx25, dem Standard). Er wird pro Sekunde abgerechnet, oder zum Festpreis mit einem LoRA oder bei einer Verlängerung eines Clips, der nicht pro Sekunde gerendert wurde; die Verlängerung eines Ultra-Shots, vorwärts oder rückwärts, wird pro Sekunde abgerechnet. POST /videos/quote nennt den genauen Preis deiner Anfrage.
Pro Sekunde
Der Clip wird pro Sekunde nach seiner Auflösung abgerechnet, Sound inklusive:
| Auflösung | Preis |
|---|---|
| 480p | 4 Credits pro Sekunde |
| 720p | 8 Credits pro Sekunde |
| 1080p | 20 Credits pro Sekunde |
- Länge: 4 bis 30 s bei 24 Bildern pro Sekunde, vor dem Rendering bekannt: 5 s bei automatischer Länge (
duration_auto, Standard), sonstlength/fps(24, wennfpsfehlt), auf die Sekunde gerundet. - Format: das angefragte, im nächstgelegenen Seitenverhältnis; 480p wird in 480p gerendert. Über 1080p:
resolution_outside_ultra. - Startbild (
image): möglich. Die Engine kann einen Text oder ein Bild beim Absenden ablehnen:400 engine_refused, mit dem Grund indetailund dem Code incode; es wird nichts abgebucht. - Kein Seed:
seedwird ignoriert, und die Antwort enthält keinen. - Abbruch: kostenlos, solange das Rendering wartet; sobald es läuft,
409 render_in_progress, und der Clip wird geliefert und abgerechnet. - Kein Endbild, keine Schlüsselbilder und keine verstärkte Konsistenz in Ultra.
Zum Festpreis
Mit einem LoRA oder bei einer Verlängerung eines Clips, der nicht pro Sekunde gerendert wurde, wird Ultra mit dem vollständigen Videomodell gerendert, zum Festpreis:
| Angefordertes Format | Ausgelieferte Größe | Festpreis pro Clip |
|---|---|---|
| 480p oder 720p | Wie in der Tabelle oben bei 720p (1280 x 768), eine 480p-Anfrage wird in 720p gerendert | 40 Credits |
| 1080p | Wie in der Tabelle oben (1920 x 1088) | 60 Credits |
Der Preis ist pro Format fest: Sound und Länge ändern nichts. Ultra beginnt bei 720p: eine 480p-
Anfrage wird in 720p gerendert und berechnet. POST /videos/quote gibt den genauen Preis. 1080p (1920 x 1088) ist die Obergrenze, in jedem Modus: 4K wird nicht mehr angeboten. Eine größere Größe wird abgelehnt (ultra_4k_unavailable mit quality: "max", resolution_above_quality ohne).
- Länge: höchstens 481 Frames wie bei jedem Clip (20 s bei 24 fps, 16 s bei 30, 8 s bei 60). Verlängerungen und lange Videos funktionieren auch in Ultra. Eine Verlängerung behält die Größe des fortzusetzenden Clips, und unter 720p wird sie zum 720p-Preis berechnet.
- Dauer: mehrere Minuten für einen 5-s-Clip, länger für einen 20-s-Clip. Der Start kann auf eine freie große Grafikkarte warten.
- Kein Übergang (
end_image) in Ultra (ultra_incompatible). - Keine Schlüsselbilder (
keyframes) in Ultra (keyframes_mode). - Ein Charakter-LoRA von deinem Account funktioniert in Ultra wie im normalen Modus.
Multi-Ref Video
Ein Clip, in dem 1 bis 4 Charaktere (bis zu 12 in Ultra) mitspielen, jeder erkennbar, an einem optionalen Ort, mit gespeicherten
Objekten, Tieren und einem gespeicherten Ort, wenn du sie brauchst. Die Charaktere kommen aus
GET /characters: über die API aus einem Foto erstellt oder in der App. Die
Objekte, Tiere und Orte kommen aus GET /subjects. Das Objekt
multiref zu POST /videos hinzufügen (Berechtigung videos) und jeden Charakter mit @Name im
Prompt aufrufen:
{
"prompt": "@Lea walks toward @Tom in a sunny kitchen and hands him a cup. Sound: footsteps, soft music.",
"multiref": {
"characters": [
{ "character_id": "chr_8f3a...", "name": "Lea", "description": "a 28 year old woman with long red hair" },
{ "character_id": "chr_21bc...", "name": "Tom", "description": "a 30 year old man", "strength": 1.2 }
],
"background_b64": "<optional: an image of the location>",
"background_description": "a sunny kitchen"
},
"width": 1088, "height": 1920,
"audio": true
}Feld von multiref | Was es tut |
|---|---|
characters[].character_id | Ein Charakter aus GET /characters |
characters[].name | Ein Wort (Buchstaben, Ziffern, _), das nach @ im Prompt steht |
characters[].description | Eine kurze Beschreibung auf Englisch; standardmäßig sein kind |
characters[].strength | Gewichtung der Ähnlichkeit, 0 bis 2 (standardmäßig 1) |
characters[].sheet_id | Optional: welches Sheet für einen Charakter mit mehreren verwendet werden soll (standardmäßig das neueste) |
characters[].voice | Mit "audio": true, characters[0] und characters[1]: character (Standard) ist die Stimme aus seinem Profil, wenn sie online ist (has_voice am Charakter), sonst eine vom Modell erzeugte Stimme; generated verlangt eine vom Modell erzeugte Stimme. Die Antwort nennt die verwendete Stimme (voices). |
characters[].voice_b64 | Optional, nur characters[0] und characters[1], mit "audio": true: eine andere Stimme für den Charakter, eine Audiodatei (WAV, MP3, OGG, FLAC) in base64, höchstens 4 MB (ein kurzer Ausschnitt reicht), die Vorrang vor der Profilstimme hat |
background_b64, background_description | Optionaler Ort: ein Bild und ein paar englische Wörter |
- Prompt auf Englisch, ein Absatz im Präsens;
Sound:für den Sound, Dialogzeilen in Anführungszeichen,exactly 2 peopleund wo jede Person steht, wenn es hilft, keine Verneinungen. Ein Wesen wird durch das beschrieben, was es ist. Ein@Name, der keinem Charakter entspricht, wird abgelehnt (unknown_mention). - Formate (
widthxheight): Hochformat 480 x 832, 720 x 1280, 1088 x 1920; Querformat 832 x 480, 1280 x 720, 1920 x 1088; Quadrat 480 x 480, 720 x 720, 1088 x 1088. Kein 4K; 480p nur in Qualität. - Modi: Qualität (Standard) oder Ultra (
quality: "max"). Keine Verlängerung und kein Übergang. - Länge: automatisch (
duration_auto, Standard) oder fest mitduration_auto: falseundlength121 (5 s), 241 (10 s) oder 481 (20 s) bei 24 fps; bei einer anderen Rate dieselben Dauern in Frames gezählt, höchstens 481 (bei 30: 145, 297, 481; bei 60: 297, 481). - Bildrate:
fps24, 30 (Standard) oder 60, wie bei jedem Clip;lengthzählt Frames bei dieser Rate, höchstens 481 (16 s bei 30, 8 s bei 60). - Preis: der Preis eines Clips. In Qualität der Pauschalpreis des Formats im obigen Raster,
mit Sound verdoppelt; 480p ohne Sound bleibt bei 5 Credits (der niedrige Preis von
Qualität gilt nicht für Multi-Ref).
POST /videos/quotemit"multiref": truegibt den genauen Preis. - Der Server passt die Ansichten an das genaue Format des Videos an: sende die Charaktere so wie sie sind. Ein
Charakter, der nur eine Ansicht hat, wird gerendert, mit
warningslimited_likenessin der Antwort: die Ähnlichkeit ist eingeschränkt. - Profilstimmen: Mit Sound sprechen
characters[0]undcharacters[1]standardmäßig mit der Stimme aus ihrem Profil, wenn sie online ist (has_voice);voicegeneratedlässt das Modell eine erzeugen. Die Antwort nennt die Stimme jedes Charakters invoices(character_id,voice:character,customodergenerated). - Charakterstimmen (
voice_b64): das Modell lässt den Charakter mit dieser Stimme sprechen, inklusive Lippenbewegungen; der Server nimmt seine ersten 5 Sekunden. Höchstens zwei Stimmen, aufcharacters[0]undcharacters[1](die Engine unterstützt 2 Stimmen).characterswie den Dialog ordnen:characters[0]spricht zuerst,characters[1]antwortet. Sound wird benötigt ("audio": true), sonstvoice_requires_audio; eine Stimme auf einem anderen Charakter:voice_slot; eine unleserliche Datei:unsupported_audio_format; über 4 MB:audio_too_large. Nur die ersten 5 Sekunden werden verwendet: einen kurzen Ausschnitt senden. Der gesamte Request-Body bleibt unter 30 MB (darüber ein413ohne JSON-Body). Keine zusätzlichen Kosten. - Abfragen, Herunterladen und Abbrechen gelten wie bei jedem Video (siehe Abfragen, herunterladen, abbrechen oben).
Gespeicherte Objekte, Tiere und Orte. Zwei weitere Felder von multiref besetzen die
Motive, die du aus eigenen Bildern gespeichert hast:
Feld von multiref | Was es tut |
|---|---|
subjects[] | Objekte und Tiere (subject_id, dann optional name, description, strength). Sie teilen die Slots mit den Charakteren: insgesamt höchstens 4 Referenzen; in Ultra bis zu 30 Bilder insgesamt (siehe unten). |
location | Ein gespeicherter Ort als Kulisse (subject_id, dann optional name, description, strength): seine Bilder, mit eigener Stärke. Er ersetzt background_b64 (beides zusammen: multiref_incompatible). Er benötigt mindestens einen Charakter, ein Objekt oder ein Tier. |
name ist standardmäßig das erste Wort des Namens des Motivs, und jedes @Name im Prompt wird
wie bei einem Charakter abgeglichen. Ein als subjects übergebener Ort oder ein als location übergebenes Objekt wird
abgelehnt (invalid_subject_type). Der Preis ändert sich nicht: es ist der Preis eines Clips. Ein Motiv spielt mit seinen ersten 5 Bildern (in Ultra mit allen, höchstens 6).
"multiref": {
"characters": [{ "character_id": "chr_8f3a...", "name": "Lea" }],
"subjects": [{ "subject_id": "sub_1c2d...", "name": "Rex" }],
"location": { "subject_id": "sub_9e8f...", "name": "Loft" }
},
"prompt": "@Lea throws a ball to @Rex across @Loft. Sound: barking, laughter."In Ultra folgt ein Multi-Ref-Clip den Regeln von Ultra mit Abrechnung pro Sekunde: gleicher Preis pro Sekunde, Sound inklusive, 4 bis 30 s bei 24 Bildern pro Sekunde (5 s bei automatischer Länge), 480p bis 1080p, kein Seed.
- Jeder Charakter geht mit seiner Character Sheet (oder, ohne eine, mit allen seinen Bildern), vom Server zu einem einzigen Bild zusammengesetzt; jedes Objekt, Tier oder jeder Ort mit allen seinen Bildern (höchstens 6).
- Das erste Rendering eines Charakters bereitet dieses Bild vor, einige Dutzend Sekunden länger: Seine
jobIdbeginnt dann mitsdp-und wird wie die anderen verfolgt. - Keine Stimme:
voice_b64und die Stimme des Profils werden ignoriert (warningsvoice_ignored), undstrengthhat keine Wirkung. - Die Engine kann ein Referenzbild ablehnen (zum Beispiel ein echtes Gesicht): Das Rendering endet als
failedmit dem Grund, und es wird nichts abgebucht.
Stile, Outfits und Bewegung. Nur in Ultra (quality: "max"): drei weitere Felder von multiref; anderswo wird die Anfrage abgelehnt (multiref_ultra_only), nie ohne sie gerendert.
Feld von multiref | Was es macht |
|---|---|
styles[] | Gespeicherte Stile (subject_id, dann optional name, description): Der ganze Clip übernimmt ihren Look (Technik, Licht, Farben, Texturen), nie ihren Inhalt. |
outfits[] | Gespeicherte Outfits (dieselben Felder, plus worn_by), getragen wie auf ihren Bildern. worn_by (optional) ist der name eines der Charaktere: Es fügt "<Name> wears <Outfit>." am Anfang der Szene hinzu. Ohne es schreibst du es in den Prompt: @Lea wears @RedGown. |
motion | Ein Bewegungsvideo von 4 bis 30 s: { "motion_id": ... } (hochgeladen mit POST /motions) oder { "video_b64": ... } (MP4, MOV, WebM oder MKV, höchstens 20 MB), und eine optionale description der Bewegung auf Englisch. mode legt fest, was der Clip davon übernimmt: camera (Standard) Kamerabewegung, Bildausschnitt und Rhythmus; choreography die Körperbewegungen, Gesten und ihren Rhythmus. Nie die Person oder den Ort des Videos; gleicher Preis in beiden Modi. Der Server bringt es auf etwa 410 000 Pixel (856 × 482 bei 16:9), mit 24 Bildern pro Sekunde, ohne Ton; sein Verhältnis Breite/Höhe liegt zwischen 0,4 und 2,5. |
- Höchstens 30 Bilder in Ultra, Charaktere, Motive, Stile, Outfits und Ort zusammen (
multiref_too_many_images), davon höchstens 12 Charaktere (darübermultiref_characters_required). 8 werden empfohlen: Von 9 bis 12 läuft der Render mitwarningsmany_characters, da einige fehlen oder sich vermischen können. Ein Stil außerhalb vonstylesoder ein Outfit außerhalb vonoutfitswird abgelehnt (invalid_subject_type). -
Preis der Bewegung: 3 Credits pro Sekunde des Bewegungsvideos (auf die nächste Sekunde aufgerundet), zusätzlich zum Rendering, zu lesen in
GET /pricing(ultra.motion_per_second);POST /videos/quotemit demselbenmultiref.motionliefertmotion_secondsund den genauen Preis. - Direkter Upload für ein schweres Bewegungsvideo:
POST /motionsmit{ "size": <Bytes> }(höchstens 20 MB) liefertmotion_id,upload_url,headersundexpires_in(900 s); sende die Datei mitPUT upload_urlund genau diesenheaders, dann übergibmultiref.motion.motion_idinnerhalb von 2 Stunden anPOST /videos. Einemotion_iddient einem Rendering.
"quality": "max",
"multiref": {
"characters": [{ "character_id": "chr_8f3a...", "name": "Lea" }],
"styles": [{ "subject_id": "sub_a1b2..." }],
"outfits": [{ "subject_id": "sub_c3d4...", "name": "RedGown", "worn_by": "Lea" }],
"motion": { "motion_id": "4f0c2a9b1d7e6a35", "description": "a low tracking shot from the side" }
},
"prompt": "@Lea walks along a seaside promenade at sunset."Die Fehlercodes für Stile, Outfits und Bewegung stehen unter Grenzen und Fehler.
Mit dem MCP-Server erledigt der Agent all das mit tendre_multiref_video: Szene anfordern
und Charaktere, Objekte, Tiere sowie den Ort benennen (subjects, location_id).
Face swap
Die in deinem eigenen Video gefilmte Person wird zu einem deiner Charaktere: Gesicht,
Haare, Körper und Outfit (oder nur der Kopf, siehe part), unter Beibehaltung von Gesten, Lippenbewegungen und Umgebung, und der Stimme, sofern der Charakter keine eigene hat (siehe voice). Es ist der
Face swap der App, auf einem Abschnitt von höchstens 20 s: ein Charakter, ohne Verkettung und
ohne Übergang. Die Anfrage ist POST /faceswap (Berechtigung videos):
{
"video_b64": "<the video in base64: MP4, MOV, WebM or MKV, 20 MB at most>",
"character_id": "chr_8f3a...",
"start": 2,
"duration": 6,
"scene": "@Lea wears a long red coat.",
"zone": "normal",
"likeness": 1
}| Feld | Was es tut |
|---|---|
video_b64 | Das Video, höchstens 20 MB, mit einer deutlich sichtbaren Person. Darüber hinaus zuerst kürzen oder komprimieren, oder das MCP-Tool tendre_face_swap verwenden, das bis zu 95 MB akzeptiert. |
character_id, sheet_id | Ein Charakter aus GET /characters und sein Sheet, wenn er mehrere hat (standardmäßig das neueste). |
name | Optional, höchstens 60 Zeichen: der Name des Charakters, standardmäßig der Name in GET /characters. Ein in der App erstellter Charakter hat seinen Namen erst online, wenn die App ihn gesendet hat (App 0.9.1 und neuer; sonst ist name null in GET /characters): einen angeben, um ihn mit @Name in scene aufzurufen, sonst Image 1 verwenden. |
start, duration | Der Abschnitt in Sekunden: ab start (standardmäßig 0), für duration (standardmäßig bis zum Ende des Videos, höchstens 20 s). |
scene | Optional, auf Englisch, höchstens 400 Zeichen: was geändert oder präzisiert werden soll. Der Charakter wird mit @Name (erstes Wort seines Namens, siehe name) oder Image 1 aufgerufen. Ohne Szene bewegt er sich genau wie die gefilmte Person. Lass den Charakter darin nie sprechen und beschreibe weder seinen Mund noch seinen Blick oder Kopf („says“, „looks at the camera“, „smiles“): Er übernimmt sie aus dem Video, und eine Anweisung lässt ihn sie erfinden, mit versetzten Lippen und gedrehtem Kopf. Beschreibe, was sich drumherum ändert: Outfit, Accessoire, Licht. |
description | Optional, auf Englisch, höchstens 360 Zeichen: wer der Charakter ist ("a 28 year old woman with long red hair, wearing a black leather jacket"). Standardmäßig sein kind und sein Outfit. |
part | full (Standard): der ganze Charakter. head: nur der Kopf (Gesicht und Haare); der gefilmte Körper, die Kleidung und die Umgebung bleiben. Der Charakter wird dann aus den drei Porträts seines character sheet gerendert, auf den Kopf zugeschnitten (heads_only in der Antwort); ein Charakter mit einer oder zwei Ansichten behält sie ganz. Seine Standardbeschreibung nennt nur sein kind, ohne Outfit, und zone ist standardmäßig tight. |
zone | Der Raum um die gefilmte Silhouette, in dem der Charakter gezeichnet werden kann: tight, normal (Standard) oder wide (Platz für große Ohren, Flügel, einen breiten Körperbau). Mit part head ist es der Raum um den Kopf, standardmäßig tight. |
likeness | Wie eng der Charakter seinen Ansichten folgt, von 0,5 bis 2 (standardmäßig 1). |
audio | Standardmäßig true: der Sound des Videos wird beibehalten und die Lippen folgen ihm. false: ein stummes Video. |
voice | character (Standard): Der Sound des Videos wird in die Stimme aus dem Profil des Charakters umgewandelt, wenn er online eine hat (has_voice in GET /characters), im selben Render und ohne das Tempo zu ändern, sodass die Lippen synchron bleiben. Ohne Profilstimme bleibt die gefilmte Stimme. original: die gefilmte Stimme behalten. Die Antwort nennt die verwendete Stimme (voice: character, custom, original oder none ohne Sound). |
voice_b64 | Optional, mit Sound: eine andere Stimme für den Charakter (WAV, MP3, OGG, FLAC, höchstens 2 MB; die ersten 20 Sekunden werden verwendet), die Vorrang vor der Profilstimme hat. Der Sound des Videos wird in diese Stimme umgewandelt, ohne das Tempo zu ändern. |
seed | Seed des Renderings, von 0 bis 4294967295, um es erneut zu rendern oder zu variieren. |
Video und Stimme zusammen: höchstens 22 MB, damit der Request-Body unter 30 MB bleibt (darüber ein 413 ohne JSON-Body).
- Der Server bereitet alles vor. Er schneidet den Abschnitt, setzt ihn auf die Arbeitsbildrate (30 fps bei einer Quelle mit 29 fps oder mehr, auch 50 und 60 eingeschlossen, 24 darunter) und auf das Arbeitsformat (Vielfache von 128, kurze Seite 768, das Seitenverhältnis am nächsten zu deinem Video) und passt die Ansichten des Charakters an dieses Format an.
- Was du zurückbekommst ist das Video des Abschnitts im Arbeitsformat, etwa ein Megapixel (768 x 1408 bei einem vertikalen Video, zum Beispiel), mit den Proportionen deines Videos auf 5% genau. Volle Auflösung und mehrere Charaktere hintereinander bleiben der tendre.AI-Desktop-App vorbehalten: sie fügt den Charakter in voller Auflösung in das Originalvideo ein und verkettet mehrere Charaktere.
- Preis: 6 Credits pro Sekunde des vorbereiteten Abschnitts (
secondsin der Antwort), auf den nächsten Credit aufgerundet. Die Antwort gibtjobId,seed,costund den vorbereiteten Abschnitt (width,height,length,fps,seconds,audio,voice,views,part) zurück. Ein Charakter mit nur einer Ansicht wird gerendert, mitwarningslimited_likeness. - Kein Angebot: weder
POST /videos/quotenoch dastendre_quotedes MCP kennt Face swap. Um den Preis vor dem Einreichen zu berechnen,grid.body_swapinGET /pricinglesen: Sekunden des Abschnitts xper_block_720p(Preis eines Blocks) /block_seconds(Länge eines Blocks), auf den nächsten Credit aufgerundet. - Einige Szenen werden aus den drei auf den Kopf zugeschnittenen Porträts des Charakters gerendert (
heads_onlyin der Antwort), und das Outfit seiner Ansichten wird nicht mehr aufgezwungen: die Szene entscheidet. - Ein Face swap zählt als Verwendung des Charakters und verschiebt seine Löschung, wie Multi-Ref.
- Abfragen, Herunterladen und Abbrechen gelten wie bei jedem Video (siehe Abfragen, herunterladen, abbrechen oben):
GET /videos/{jobId},GET /videos/{jobId}/file,POST /videos/{jobId}/cancel. - Eigene Fehler:
video_required,video_too_large,unreadable_video,invalid_start,passage_too_short,invalid_duration,invalid_zone,invalid_likeness,invalid_scene,invalid_description,invalid_character_name,invalid_part,invalid_voice_choice,character_required,unknown_character,audio_too_large(eine Stimme über 2 MB),face_swap_too_large(der Abschnitt ist nach der Vorbereitung noch zu groß:durationkürzen),server_busy(zwei Videos werden bereits vorbereitet: nachRetry-After, 20 s, erneut versuchen),face_swap_unavailableundface_swap_price_missing(Face swap geschlossen oder ohne Preis: später erneut versuchen). Was jedes bedeutet: Grenzen und Fehler. - Dein Video passiert während der Vorbereitung unsere Server und geht dann wie jedes Quellbild an die Grafikkarte, die es rendert.
Verwende nur Videos von Personen, die ihr Einverständnis gegeben haben: das ist eine Regel der Nutzungsbedingungen.
Mit dem MCP-Server erledigt der Agent all das mit tendre_face_swap.