Pro API: generer videoer med lyd

Et klipp fra en tekst, eller en animasjon av et stillbilde du leverer. Filen er en MP4, med lyd når du ber om det.

Send inn en video

POST /videos

json
{ "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 }
FeltTypeStandardHva det gjør
promptstrengpåkrevdHandlingen, stemningen, lyset. Beskriv bevegelsen.
width, heightheltall720 x 1280Vertikal som standard. Se prisene nedenfor.
qualitystrengmax: Ultra-modus (den fineste renderingen), se Ultra-modus.
consistencystrengstandardenhanced: Enhanced consistency, jevnere bevegelse, ansikter og bakgrunn over tid, opptil 721 bilder per klipp (30 s ved 24 fps, 24 s ved 30), forlengelser inkludert. Kun i Quality-modus. Se Enhanced consistency.
modestrengltx25ltx25: motor 2.5 (lyd, automatisk varighet, 1080p, sluttbilde). turbo: avviklet 11. oktober 2026; en turbo-forespørsel rendres i Quality 480p (samme orientering, samme lengde, maks 241 bilder, fast lengde), til Quality 480p-prisen.
duration_autobooltrueMotoren velger lengden ut fra teksten, opptil 20 s ved 24 fps (16 s ved 30, 8 s ved 60: grensen teller bilder, se fps), og length ignoreres da. Sett false for fast lengde, angitt av length. Med consistency enhanced over 30 fps er lengden alltid fast (fps_requires_fixed_duration ellers).
lengthheltall121Lengde i bilder, ved fps-raten, alltid på formen 8n+1; varigheten er (length - 1) / fps. Maks 481 (721 med consistency enhanced). Ved 24 fps: 73 (3 s), 121 (5 s), 241 (10 s), 361 (15 s), 481 (20 s; 721, det vil si 30 s, i enhanced). Ved 30: 241 (8 s), 481 (16 s; 721, 24 s). Ved 60: 241 (4 s), 481 (8 s; 721, 12 s). Brukes for fast lengde (duration_auto satt til false); ignoreres ved automatisk varighet.
fpsheltall30Bilderate, i bilder per sekund: 24, 30 eller 60. 30 som standard, den anbefalte innstillingen (skarp bevegelse); 60, den glatteste; 24, kinoformatet. 50, kun med consistency enhanced, gir en svak sakte film (omtrent 0,83x: motoren setter bevegelsen som for 60 og spiller den av ved 50). length teller bilder ved denne raten. Prisen endres ikke (fast sats per klipp); maksimal lengde gjør det, siden den teller bilder. En forlengelse beholder bilderaten til forrige klipp, og en sekvens bruker bilderaten til det første klippet. En rate som modusen ikke støtter: invalid_fps, som lister opp de som støttes.
audioboolfalseLyd generert sammen med bildet (bakgrunnslyd, stemme). Dobler prisen på klippet (se Formater og pris).
imagestrengStartbilde i base64: videoen animerer dette bildet.
end_imagestrengSluttbilde i base64, sammen med image: klippet går over fra det ene til det andre (kun motor 2.5). En overgang leveres i ønsket størrelse, fra 480p til 1080p, og faktureres som et klipp i det formatet.
keyframesarrayKeyframes (Quality-modus): 1 til 4 objekter { "image": base64, "at": seconds, "strength": 0.1 to 1 (1 by default) }. Klippet viser hvert bilde på sitt tidspunkt, for eksempel en karakter midt i et klipp som starter og slutter på en tom lokasjon. Lengden blir fast (length, duration_auto tvinges til false); 0 < at < length, minst 0,5 s mellom to keyframes; nøyaktig til omtrent en tredjedels sekund. Fungerer med image og end_image. Ikke i Ultra eller Multi-Ref; i en forlengelse kun med consistency enhanced (se Enhanced consistency). Samme pris som et klipp i samme format.
lora, lora_strengthstreng, tallEn trent karakter på kontoen (name fra GET /loras) og dens styrke (0 til 1).
lora2, lora2_strengthstreng, tallEn andre karakter.
multirefobjektCast 1 til 4 karakterer (12 i Ultra) fra GET /characters, pluss lagrede objekter, dyr og en lokasjon fra GET /subjects, kalt med @Navn i teksten, se Multi-Ref Video.
seedheltalltilfeldigSeed for renderingen, fra 0 til 4294967295. Samme seed, samme tekst, samme bilde og samme innstillinger (format, lengde, lyd, modus): samme klipp, med små forskjeller hvis grafikkortet endres. Med automatisk varighet kan en annerledes valgt lengde endre klippet: for en streng reproduksjon, sett duration_auto til false og angi length.
stepsheltallmotorLa stå tomt.

Standard bilderate: 30 fps. Klipp ble tidligere rendret ved 24 fps. Uten fps er et klipp med samme length derfor kortere enn før (241 bilder: 8 s i stedet for 10 s). Send "fps": 24 for å beholde den tidligere oppførselen.

Svaret:

json
{ "jobId": "...", "seed": 908172, "cost": 30 }

Prisen beregnes og oppgis ved innsending, før noe trekkes. seed returneres også, enten du oppga den eller den ble trukket tilfeldig.

Formater og pris

En video prises per format, som en fast sats uavhengig av lengden. Basis: 5 credits.

Den faste satsen multipliseres med 2 ved 720p og med 3 ved 1080p, og lyd dobler prisen. Faktorene gjelder for basissatsen, ikke for hverandre: 1080p med lyd koster 5 x 3 x 2 = 30 credits. Opptil 481 bilder, det vil si 20 s ved 24 fps, endrer ikke lengden noe (5 s eller 20 s, samme sats). Over 481 bilder (opptil 721, kun med consistency enhanced, fast lengde) dobles prisen for formatet. Bilderaten (fps) endrer ikke prisen, men nivåene teller bilder: ved 30 fps gjelder normalprisen opptil 16 s; ved 60 opptil 8 s (12 s til dobbel pris i enhanced).

Ett unntak: i Quality koster 480p uten lyd 2 credits, uavhengig av lengden (siden 11. oktober 2026). Multi-Ref og Enhanced consistency beholder den faste satsen for formatet, 5 credits.

FormatKorteste sideEksempelstørrelserUten lydMed lyd
480p480480 x 832, 832 x 4802 (5 i Multi-Ref og Enhanced consistency)10
720p720720 x 1280, 1280 x 7201020
1080p10801080 x 1920, 1920 x 10801530

Størrelsen du får tilbake. Motoren arbeider i multipler av 32 og i to trinn, så filen leveres som 768 x 1280 (eller 1280 x 768) for 720p og 1088 x 1920 (eller 1920 x 1088) for 1080p. 480p forblir 480 x 832 (eller 832 x 480), unntatt i Enhanced consistency. Nyttig å vite hvis du syr sammen eller legger oppå våre renderinger.

turbo-sporet ble avviklet 11. oktober 2026: en turbo-forespørsel rendres i Quality 480p og prises deretter (2 credits uten lyd, 10 med lyd).

Kjenn prisen før du sender inn

POST /videos/quote tar samme body som POST /videos og kjører samme beregning, men ingenting opprettes: ingen rendering, ingen credits holdes, ingen kvote forbrukes. Kall det før du forplikter deg, særlig fra en agent som jobber mot et budsjett.

json
{ "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 forklarer tallet; fps er bilderaten som brukes, og seconds_max er lengden i sekunder ved den raten. Med "consistency": "enhanced" aksepterer kalkulatoren en fast lengde opptil 721 bilder og bruker satsen over 481 bilder (x 2 (over 20 s) i detail ved 24 fps, x 2 (over 481 frames) ved en annen rate). Den samme ruten finnes for bilder, POST /images/quote, som alltid svarer { "cost": 1, ... }: et bilde koster alltid 1 credit.

For et Ultra-klipp som faktureres per sekund, gir tilbudet den fakturerte lengden i seconds, og detail spesifiserer prisen per sekund.

Poll, last ned, avbryt

De samme rutene som for bilder, under /videos.

  • GET /videos/{jobId}: pending / completed / failed, samme felt. En Enhanced-forlengelse kan avsluttes som failed med "error": "extension_not_applied" (motoren tok ikke opp slutten av forrige klipp): ingenting belastes, send inn på nytt.
  • GET /videos/{jobId}/file: MP4-filen (Content-Type: video/mp4).
  • POST /videos/{jobId}/cancel: avbryter, og ingenting belastes.

I Ultra per sekund stopper ikke en rendering som allerede beregnes: avbruddet svarer 409 render_in_progress, og klippet leveres og faktureres. Et klipp som motoren avviser ved utdata, ender som failed, med en setning i detail og motorens kode i reason: ingenting belastes.

En video tar 1 til 5 minutter, lenger når motoren starter kaldt. Poll hvert 3. sekund og last ned så snart statusen er completed: filen arkiveres ikke.

Flere klipp i ett klipp

En enkelt tekst kan inneholde flere klipp med harde kutt, opptil 20 sekunder totalt ved 24 fps (16 s ved 30, standard). Beskriv dem i rekkefølge: Shot 1: <bildevinkel>, <handling>. Cut to Shot 2: .... Gjenta i hvert klipp det som skal forbli det samme (karakter, antrekk, sted, lys), og avslutt med én linje med felles stemning.

La timecodes være: behold duration_auto aktivert, så velger motoren lengden (opptil 20 s ved 24 fps, 16 s ved 30) og hvor det skal kuttes. To til fire klipp per video fungerer best.

text
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.

Flere klipp i én video, eller en sekvens? De gjør forskjellige ting:

Flere klipp i én videoSekvens (forlengelser)
Mellom klippHarde kuttIngen kutt: hvert klipp viderefører bevegelsen
LengdeMaks 20 s ved 24 fps (16 s ved 30)Lengre
RenderingerÉnÉn per klipp
PrisEtt klippEtt klipp per klipp

Forleng et klipp

Et klipp kan forlenges: det neste klippet viderefører bevegelsen fra det forrige, uten stopp i overgangen. Det styres av omtrent det siste sekundet av forrige klipp, ikke av ett enkelt stillbilde. Legg til i POST /videos:

FeltTypeStandardHva det gjør
extend_job_idstrengKlippet som skal forlenges: en rendering fra lisensen din, hentet kort tid etter at den er ferdig.
extend_framesheltall25Hvor mye av slutten av klippet som styrer neste klipp, i bilder: 9, 17, 25, 33, 41 eller 49 (25 er omtrent 1 s ved 24 fps).
extend_videostrengI stedet for extend_job_id: slutten av et klipp du selv har, som en base64 MP4 på nøyaktig extend_frames bilder, maks 8 MB.

Det forlengede klippet beholder oppløsningen til forrige klipp: width og height ignoreres med extend_job_id, og med extend_video leses størrelsen fra filen du sender. Det inneholder bare de nye bildene, slik at klippene lagt etter hverandre utgjør én sammenhengende video. Det beholder bilderaten til forrige klipp: utelat fps (det arves) eller angi den samme; en annen avvises (extend_fps_mismatch). length er den nye varigheten til klippet (121 = 5 s mer ved 24 fps), og den er eksakt: automatisk varighet gjelder ikke for en forlengelse. En forlengelse koster prisen av ett klipp.

Begrensninger: ikke sluttbilde eller keyframes samtidig, unntatt med Enhanced consistency.

Lyden fortsetter i overgangen. Med audio: true, når slutten av forrige klipp har et lydspor, tar det nye klippet opp den lyden i stedet for å lage en ny. Med extend_job_id beholder det avklipte sluttstykket klippets lyd; med extend_video, send slutten med lyden dens. Uten et lydspor i det sluttstykket, i Enhanced consistency og i Ultra, starter lyden på nytt med klippet: bruk samme stemning i alle tekstbeskrivelser, så overgangen høres minst mulig.

Forleng et klipp kort tid etter at det er ferdig. Senere er det ikke lenger tilgjengelig for oss (clip_unavailable), og du sender slutten selv i extend_video.

Forleng et Ultra-opptak, forover eller bakover

Et opptak som er rendret i Ultra per sekund, forlenges også i Ultra, forover eller bakover; alle andre klipp forlenges som over. Send POST /videos med "quality": "max" og:

FeltTypeStandardHva det gjør
extend_job_idstrengUltra-opptaket som skal forlenges, rendret av lisensen din for mindre enn 24 timer siden.
extend_upload_idstrengI stedet, for et eldre opptak: id-en som POST /extensions (nedenfor) returnerer, når originalfilen er lastet opp.
extend_directionstrengforwardforward rendrer det som kommer etter; backward rendrer øyeblikkene like før opptaket, til å klippe inn foran det.
  • Rendringen inneholder bare den nye delen, like lang som et Ultra-klipp (length / fps, 5 s med automatisk lengde). Den får oppløsningen til opptaket (width og height ignoreres) og kobles til det siste bildet (forward) eller det første (backward).
  • Ingen startbilde, referanser (multiref), bevegelse eller enhanced consistency. backward går ikke inn i en sekvens, som legger opptakene sine etter hverandre.
  • Pris: den nye delen til Ultra-prisen per sekund, pluss, per sekund av opptaket som forlenges, 2 credits i 480p, 5 i 720p og 13 i 1080p (ultra.extend_per_second i GET /pricing). Disse sekundene rundes opp til hel sekund (med 0,1 s nøyaktighet) og telles ved 24 bilder per sekund: et opptak med høyere bildefrekvens telles forholdsmessig (2 s ved 60 fps teller som 5 s). POST /videos/quote med de samme feltene gir extend_seconds og den eksakte prisen.
  • Et opptak eldre enn 24 timer: last opp originalfilen, slik GET /videos/{jobId}/file leverte den. POST /extensions med { "size": <bytes> } gir upload_id, upload_url, headers og expires_in (900 s); send filen med PUT upload_url og nøyaktig disse headers, og send deretter extend_upload_id innen 2 timer. En opplasting gjelder for én rendring: en MP4 på 4 til 30 s, maks 60 MB og 1080p. Før renderingen kontrolleres hver video som sendes til Ultra-modusen (en bevegelse eller en video som skal forlenges), og ingenting trekkes hvis den avvises (400 input_video_out_of_limits): 24 til 60 bilder per sekund, et forhold bredde/høyde på 0,4 til 2,5 og, per rendering, maks 30 s og 10 filer for videoer og referanselyder til sammen. For et realistisk ansikt avvises en omkodet eller redigert fil (400 engine_refused): bare originalen går gjennom. En video som ikke ble rendret i Ultra-modus (for eksempel en rendering fra en annen modus) forlenges ikke i Ultra når den viser et realistisk ansikt (400 extension_real_face, ingenting belastes): forleng den i Quality-modus, eller lag opptaket på nytt i Ultra.

Enhanced consistency

Med "consistency": "enhanced" rendres klippet av et spor som holder bevegelse, ansikter og bakgrunn mer stabil over tid. Det går opptil 721 bilder per klipp, det vil si 30 s ved 24 fps og 24 s ved 30 (length, fast lengde) og er primært beregnet på lange videoer:

  • Første klipp: et vanlig klipp (tekst, startbilde, keyframes, end_image), opptil 721 bilder.
  • Forlengelse: extend_job_id (eller extend_video) som i Forleng et klipp, med samme consistency. length er fortsatt den nye varigheten (opptil 721, det vil si 30 s mer ved 24 fps). En Enhanced- forlengelse tar også keyframes, der at teller fra det første nye bildet, og et sluttbilde end_image, satt på det siste bildet i klippet: for eksempel startbildet til det første klippet, slik at en lang video looper.

Kun Quality-modus (mode ltx25, uten quality: "max"), opptil 1080p, ikke i Multi-Ref (400 consistency_mode). Pris: den faste satsen for formatet (480p uten lyd: 5 credits) opptil 481 nye bilder (20 s ved 24 fps), dobles deretter (se prisene ovenfor). Bilderater: 24, 30, 50 eller 60. Over 30 er lengden fast (fps_requires_fixed_duration ellers); 50 gir en svak sakte film (se fps). Renderingen tar lengre tid enn et standard klipp, og starten kan måtte vente på et større grafikkort (lange klipp). En sekvens beholder den samme consistency for alle klippene sine. Størrelse levert: samme som i Quality ved 720p og 1080p; ved 480p er den korte siden 448 (448 x 832, 832 x 448, 448 x 448), siden dette sporet arbeider i multipler av 64.

Noen tekster støttes ikke ennå. For dem rendres et enkelt klipp på 20 s eller kortere (15 s med en end_image, ved fast lengde) i standard consistency, til samme pris. Over det (length over 481 med duration_auto: false, eller over 361 med en end_image), i en forlengelse eller i en sekvens, avvises forespørselen med 400 consistency_explicit: forkort klippet eller be om consistency: "standard".

Lang video (sekvenser)

Et klipp er maks 481 bilder, det vil si 20 s ved 24 fps (721 med Enhanced consistency, 30 s ved 24 fps). For lengre videoer legger en sekvens inn hvert klipp etter hvert som det er ferdig rendret, og setter dem deretter sammen til én enkelt MP4 uten ny koding. Ett minutt, for eksempel, er 3 klipp på 20 s, eller 2 klipp på 30 s i Enhanced consistency, ved 24 fps.

  1. POST /sequences åpner en sekvens og svarer { "sequence_id": "seq_...", ... }.
  2. POST /videos med "sequence_id": "seq_..." for hvert klipp: det første som normalt, de neste med extend_job_id satt til forrige klipp. Hvert klipp legges inn i sekvensen, i innsendingsrekkefølge, så snart GET /videos/{jobId} ser at det er ferdig.
  3. POST /sequences/{id}/export når det siste klippet er ferdig. Det svarer med seconds, resolution og file_url.
  4. GET /sequences/{id}/file: den sammensatte videoen (MP4).

I tillegg: GET /sequences/{id} gir tilstanden (klipp som er lagt inn eller fortsatt ventes), POST /sequences/{id}/clips med { "job_id": "..." } legger inn en rendering manuelt, og DELETE /sequences/{id} sletter sekvensen umiddelbart.

Regler. Alle klipp har samme oppløsning (forlengelser beholder den) og samme lydvalg, enten alle med lyd eller alle uten, samme consistency og samme bilderate (fps): det første klippet setter dem, og et klipp som avviker avvises (409 consistency_mismatch, 409 sequence_fps_mismatch; 422 encoding_mismatch for et klipp lagt inn manuelt). Et klipp uten fps arver sekvensens. Maks 30 klipp per sekvens og 5 sekvenser pågår per lisens.

Hva vi beholder, og hvor lenge. Klippene i en pågående sekvens slettes 30 minutter etter at det siste ble lagt til, og den sammensatte videoen 24 timer etter eksporten. Deretter er alt borte.

Eksporter prosjektmappen

En prosjektmappe samler i en ZIP alt du trenger for å jobbe videre med en video et annet sted eller automatisere den: klippene, referansene deres, redigeringen og et manifest som lar deg rendre hvert klipp på nytt. Den er gratis: ingenting rendres.

  • POST /videos/{jobId}/export: én rendring fra POST /videos (enkeltklipp, Multi-Ref, forlengelse).
  • POST /sequences/{id}/project: alle klippene i en sekvens, etter hverandre.
  • Valgfri kropp, de samme valgene som i appens eksportvindu:
    • include_media (true som standard): videoene til klippene og deres signerte originaler. false: ingen video i det hele tatt (verken klipp, original eller film); klippene beholder tekst, innstillinger og referanser ("state": "expired"), og manifestet har videos_included: false.
    • include_references (true som standard): visningene av karakterene og bildene av elementene, i references/. false: ingen kopieres; navn, @omtaler, id og fingeravtrykk blir værende i manifestet (references_included: false).
    • exclude_references: referansene som ikke skal kopieres, én og én, via id (character_id, subject_id), navn eller @omtale, for eksempel ["@Parc", "chr_..."] (høyst 200). Manifestet har references_included: "partial" og "included": false på hver utelatt (false hvis alle er det). En oppføring som ikke peker på noen referanse i eksporten: 400 unknown_reference.
    • include_film (kun sekvens, false som standard): filmen til en sekvens som allerede er satt sammen; krever include_media (ellers 400 invalid_export_options, som et valg som ikke er en boolsk verdi eller en exclude_references som ikke er en liste med tekster).
    • manifest_only: true: bare manifestet, uten ZIP.

Svaret er { "manifest": { ... }, "file_url": "...", "export_id": "exp_...", "expires_at": "...", "bytes": n }, og GET /exports/{id}/file laster ned ZIP-filen. Én eksport om gangen per lisens (409 export_in_progress), maks 2 GB (413 export_too_large: eksporter klippene ett og ett).

FilInnhold
tendre-project.jsonManifestet (skjema tendre.project/1, engelske nøkler). For hvert klipp: statusen, prompten du skrev (prompt) og den som ble sendt til motoren (prompt_sent), innstillingene, seeden, kostnaden, forlengelsen (extends, direction), referansene koblet til filene sine, og api_request, kroppen til POST /videos som rendrer klippet på nytt (null hvis et bilde bare ble sendt i base64); øverst references_included: true i ZIP-filen (filene til referansene ligger i references/), false med manifest_only (referanser uten fil: files tom, bare sha256-fingeravtrykk); et manifest uten dette feltet (eldre eksporter) leses som true. En mappe appen har eksportert, der kunden velger referansene én og én, har true, false eller "partial", og hver referanse kan ha included (mangler det: som øverst, false hvis det står false der, ellers true); en referanse som ikke er tatt med, beholder navn, @omtale, id og beskrivelse, med files tom. project.settings inneholder innstillingene for det første klippet (quality, width, height, fps, audio, output_format "mp4") og settings_from_shot, id-en til det klippet. En mappe appen har eksportert kan inneholde en app-blokk reservert for appen: ignorer den
shots/NN/clip.mp4Rendringen av hvert klipp, så lenge serveren har den; shots/NN/original.mp4 eller .mov: motorens signerte fil, byte for byte, hvis den fortsatt finnes
references/Visningene av karakterene og bildene av stedene, objektene, dyrene, stilene og antrekkene som er brukt
timeline.otio, timeline.fcpxmlRedigeringen (OpenTimelineIO; FCPXML for Final Cut Pro og DaVinci Resolve), medier via sti relativt til mappen
film.mp4Den sammensatte videoen for en sekvens, bare med include_film: true og hvis den allerede er satt sammen (POST /sequences/{id}/export); ellers er assembled null i manifestet

Hva vi beholder, og hvor lenge. For hver godtatt POST /videos lagrer serveren et kort over rendringen uten noe bilde eller video: teksten, innstillingene, identifikatorene (et bilde sendt i base64 etterlater bare fingeravtrykket sitt). Det slettes 24 timer etter innsendingen; etter det svarer eksporten 404 unknown_export. ZIP-filen slettes 45 minutter etter første nedlasting, senest 2 timer etter at den ble laget. Et klipp serveren ikke lenger har, kommer ut som "state": "expired", uten fil, men med tekst, innstillinger og referanser: en agent kan rendre det på nytt med api_request.

Sekvens. Sammensettingen sletter klippene ett etter ett. For å få både klippene og filmen, eksporter prosjektet før du setter sammen, sett deretter sammen og eksporter på nytt med { "include_film": true }: filmen legges til, og klippene kommer da ut som expired.

Ultra-modus

Ultra-modus er den fineste videorenderingen. Legg til "quality": "max" i POST /videos (med mode ltx25, standardverdien). Den faktureres per sekund, eller til fast pris med en LoRA eller ved en forlengelse av et klipp som ikke er rendret per sekund; å forlenge et Ultra-opptak, forover eller bakover, faktureres per sekund. POST /videos/quote gir den nøyaktige prisen for forespørselen din.

Per sekund

Klippet faktureres per sekund etter oppløsningen, lyd inkludert:

OppløsningPris
480p4 credits per sekund
720p8 credits per sekund
1080p20 credits per sekund
  • Lengde: 4 til 30 s ved 24 bilder per sekund, kjent før renderingen: 5 s med automatisk lengde (duration_auto, standard), ellers length / fps (24 hvis fps mangler), avrundet til sekundet.
  • Format: det forespurte, i nærmeste forhold; 480p renderes i 480p. Over 1080p: resolution_outside_ultra.
  • Startbilde (image): mulig. Motoren kan avvise en tekst eller et bilde ved innsending: 400 engine_refused, med årsaken i detail og koden i code; ingenting belastes.
  • Ingen seed: seed ignoreres, og svaret oppgir ingen.
  • Avbrudd: fritt mens renderingen venter på tur; når den beregnes, 409 render_in_progress, og klippet leveres og faktureres.
  • Ingen sluttbilde, ingen keyframes og ingen enhanced consistency i Ultra.

Til fast pris

Med en LoRA eller ved en forlengelse av et klipp som ikke er rendret per sekund, renderes Ultra med den fullstendige videomodellen, til fast pris:

Ønsket formatStørrelse levertFast pris per klipp
480p eller 720pSom i tabellen ovenfor ved 720p (1280 x 768), en 480p-forespørsel rendres i 720p40 credits
1080pSom i tabellen ovenfor (1920 x 1088)60 credits

Prisen er fast per format: lyd og lengde endrer ingenting. Ultra starter ved 720p: en 480p- forespørsel rendres og faktureres i 720p. POST /videos/quote gir den eksakte prisen. 1080p (1920 x 1088) er taket, i alle moduser: 4K tilbys ikke lenger. En større størrelse avvises (ultra_4k_unavailable med quality: "max", resolution_above_quality uten).

  • Lengde: maks 481 bilder, som ethvert klipp (20 s ved 24 fps, 16 s ved 30, 8 s ved 60). Forlengelser og lange videoer fungerer i Ultra også. En forlengelse beholder størrelsen til klippet den viderefører, og under 720p faktureres den til 720p-prisen.
  • Tid: flere minutter for et 5 s klipp, lenger for et 20 s klipp. Starten kan måtte vente på at et stort grafikkort blir ledig.
  • Ingen overgang (end_image) i Ultra (ultra_incompatible).
  • Ingen keyframes (keyframes) i Ultra (keyframes_mode).
  • En Character LoRA fra kontoen din fungerer i Ultra som i normal modus.

Multi-Ref Video

Et klipp der 1 til 4 karakterer (opptil 12 i Ultra) spiller, hver gjenkjennelig, på en valgfri lokasjon, med lagrede objekter, dyr og en lagret lokasjon når du trenger det. Karakterene hentes fra GET /characters: laget fra ett foto via API-et, eller i appen. Objekter, dyr og lokasjoner hentes fra GET /subjects. Legg til multiref-objektet i POST /videos (tillatelse videos) og kall hver karakter med @Navn i teksten:

json
{
  "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
}
Felt i multirefHva det gjør
characters[].character_idEn karakter fra GET /characters
characters[].nameEtt ord (bokstaver, siffer, _), det som skrives etter @ i teksten
characters[].descriptionEn kort beskrivelse på engelsk; som standard dens kind
characters[].strengthVekten av likheten, 0 til 2 (1 som standard)
characters[].sheet_idValgfritt: hvilken character sheet som skal brukes for en karakter som har flere (den nyeste som standard)
characters[].voiceMed "audio": true, characters[0] og characters[1]: character (standard) er stemmen i profilen når den er på nett (has_voice på karakteren), ellers en stemme laget av modellen; generated ber om en stemme laget av modellen. Svaret oppgir hvilken som ble brukt (voices).
characters[].voice_b64Valgfritt, kun characters[0] og characters[1], med "audio": true: en annen stemme for karakteren, en lydfil (WAV, MP3, OGG, FLAC) i base64, maks 4 MB (et kort utdrag er nok), som går foran profilens stemme
background_b64, background_descriptionValgfri lokasjon: et bilde og noen engelske ord
  • Tekst på engelsk, ett avsnitt i presens; Sound: for lyden, replikker i anførselstegn, exactly 2 people og hvor hver står når det hjelper, ingen nektelser. En skapning beskrives ut fra hva den er. Et @Navn som ikke matcher noen karakter avvises (unknown_mention).
  • Formater (width x height): portrett 480 x 832, 720 x 1280, 1088 x 1920; landskap 832 x 480, 1280 x 720, 1920 x 1088; kvadrat 480 x 480, 720 x 720, 1088 x 1088. Ingen 4K; 480p kun i Quality.
  • Moduser: Quality (standarden), eller Ultra (quality: "max"). Ingen forlengelse og ingen overgang.
  • Lengde: automatisk (duration_auto, standarden), eller fast med duration_auto: false og length 121 (5 s), 241 (10 s) eller 481 (20 s) ved 24 fps; ved en annen rate, de samme varighetene telt i bilder, maks 481 (ved 30: 145, 297, 481; ved 60: 297, 481).
  • Bilderate: fps 24, 30 (standarden) eller 60, som for ethvert klipp; length teller bilder ved denne raten, maks 481 (16 s ved 30, 8 s ved 60).
  • Pris: prisen for ett klipp. I Quality, den faste prisen for formatet i tabellen ovenfor, doblet med lyd; 480p uten lyd forblir 5 credits (den lave prisen i Quality gjelder ikke for Multi-Ref). POST /videos/quote med "multiref": true gir den eksakte prisen.
  • Serveren tilpasser visningene til det eksakte formatet på videoen: send karakterene som de er. En karakter som bare har én visning rendres, med warnings limited_likeness i svaret: likheten er begrenset.
  • Profilstemmer: med lyd snakker characters[0] og characters[1] som standard med stemmen i profilen sin når den er på nett (has_voice); voice generated lar modellen lage en. Svaret oppgir stemmen til hver i voices (character_id, voice: character, custom eller generated).
  • Karakterstemmer (voice_b64): modellen får karakteren til å snakke med den stemmen, inkludert leppebevegelser; serveren bruker de første 5 sekundene. Maks to stemmer, på characters[0] og characters[1] (motoren støtter 2 stemmer). Sorter characters etter dialogen: characters[0] snakker først, characters[1] svarer. Det krever lyd ("audio": true), ellers voice_requires_audio; en stemme på en annen karakter: voice_slot; en fil som ikke kan leses: unsupported_audio_format; over 4 MB: audio_too_large. Kun de første 5 sekundene brukes: send et kort utdrag. Hele forespørselsbodyen holder seg under 30 MB (over det, en 413 uten JSON-body). Ingen ekstra kostnad.
  • Polling, nedlasting og avbryt er det samme som for enhver video (se Poll, last ned, avbryt, ovenfor).

Lagrede objekter, dyr og lokasjoner. To ekstra felt i multiref caster subjects du har lagret fra egne bilder:

Felt i multirefHva det gjør
subjects[]Objekter og dyr (subject_id, deretter valgfritt name, description, strength). De deler plassene med karakterene: maks 4 referanser totalt; i Ultra opptil 30 bilder totalt (se nedenfor).
locationÉn lagret lokasjon som setting (subject_id, deretter valgfritt name, description, strength): bildene dens, med en egen styrke. Den erstatter background_b64 (begge samtidig: multiref_incompatible). Den krever minst én karakter, ett objekt eller ett dyr sammen med den.

name bruker som standard det første ordet i subjektets navn, og hvert @Navn i teksten matches som en karakters. En lokasjon sendt i subjects, eller et objekt sendt som location, avvises (invalid_subject_type). Prisen endres ikke: det er prisen for ett klipp. Et subjekt brukes med sine første 5 bilder (alle i Ultra, maks 6).

json
"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."

I Ultra følger et Multi-Ref-klipp reglene for Ultra per sekund: samme pris per sekund, lyd inkludert, 4 til 30 s ved 24 bilder per sekund (5 s med automatisk lengde), 480p til 1080p, ingen seed.

  • Hver karakter sendes med sitt character sheet (eller, uten et, med alle bildene sine), og serveren setter alt sammen til ett enkelt bilde; hvert objekt, dyr eller sted med alle bildene sine (maks 6).
  • Den første renderingen av en karakter forbereder det bildet, noen titalls sekunder lenger: jobId begynner da med sdp- og følges som de andre.
  • Ingen stemme: voice_b64 og profilens stemme ignoreres (warnings voice_ignored), og strength har ingen effekt.
  • Motoren kan avvise et referansebilde (et ekte ansikt, for eksempel): renderingen ender som failed med årsaken, og ingenting belastes.

Stiler, antrekk og bevegelse. Bare i Ultra (quality: "max"), tre felt til i multiref; ellers avvises forespørselen (multiref_ultra_only), den rendres aldri uten dem.

Felt i multirefHva det gjør
styles[]Lagrede stiler (subject_id, deretter valgfritt name, description): hele klippet tar uttrykket deres (teknikk, lys, farger, teksturer), aldri innholdet.
outfits[]Lagrede antrekk (samme felt, pluss worn_by), båret slik som på bildene sine. worn_by (valgfritt) er name til en av karakterene: det legger til "<Navn> wears <Antrekk>." i starten av scenen. Uten det skriver du det i prompten: @Lea wears @RedGown.
motionÉn bevegelsesvideo på 4 til 30 s: { "motion_id": ... } (lastet opp med POST /motions) eller { "video_b64": ... } (MP4, MOV, WebM eller MKV, maks 20 MB), og en valgfri description av bevegelsen på engelsk. mode angir hva klippet tar fra den: camera (standard) kamerabevegelsen, utsnittet og rytmen; choreography kroppsbevegelsene, gestene og rytmen deres. Aldri personen eller stedet i videoen; samme pris i begge moduser. Serveren skalerer den ned til omtrent 410 000 piksler (856 × 482 i 16:9), 24 bilder per sekund, uten lyd; forholdet bredde/høyde skal være mellom 0,4 og 2,5.
  • Maks 30 bilder i Ultra, karakterer, subjekter, stiler, antrekk og sted til sammen (multiref_too_many_images), hvorav maks 12 karakterer (utover det multiref_characters_required). 8 anbefales: fra 9 til 12 går rendringen gjennom med warnings many_characters, fordi noen kan mangle eller blandes sammen. En stil utenfor styles, eller et antrekk utenfor outfits, avvises (invalid_subject_type).
  • Pris for bevegelsen: 3 credits per sekund av bevegelsesvideoen (rundet opp til hel sekund), i tillegg til rendringen, oppgitt i GET /pricing (ultra.motion_per_second); POST /videos/quote med samme multiref.motion gir motion_seconds og den eksakte prisen.
  • Direkte opplasting, for en tung bevegelsesvideo: POST /motions med { "size": <bytes> } (maks 20 MB) gir motion_id, upload_url, headers og expires_in (900 s); send filen med PUT upload_url og nøyaktig disse headers, og send deretter multiref.motion.motion_id til POST /videos innen 2 timer. En motion_id gjelder for én rendring.
json
"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."

Feilkodene for stiler, antrekk og bevegelse står i Grenser og feil.

Med MCP-serveren gjør agenten alt dette med tendre_multiref_video: beskriv scenen og navngi karakterene, objektene, dyrene og lokasjonen (subjects, location_id).

Face swap

Personen filmet i din egen video blir en av karakterene dine: ansikt, hår, kropp og antrekk (eller bare hodet, se part), mens gester, leppebevegelser og omgivelser beholdes, og stemmen også, med mindre karakteren har sin egen (se voice). Det er appens Face swap, på ett passasje på maks 20 s: én karakter, uten kjeding og ingen overgang. Forespørselen er POST /faceswap (tillatelse videos):

json
{
  "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
}
FeltHva det gjør
video_b64Videoen, maks 20 MB, med én person klart synlig. Over det, trim eller komprimer den først, eller bruk MCP-verktøyet tendre_face_swap, som tar opptil 95 MB.
character_id, sheet_idEn karakter fra GET /characters, og dens character sheet hvis den har flere (den nyeste som standard).
nameValgfritt, maks 60 tegn: karakterens navn, som standard det den har i GET /characters. En karakter opprettet i appen har navnet sitt online først når appen har sendt det (app 0.9.1 og nyere; ellers er name null i GET /characters): angi ett for å kalle den @Navn i scene, ellers kall den Image 1.
start, durationPassasjen, i sekunder: fra start (0 som standard), i duration (som standard frem til slutten av videoen, maks 20 s).
sceneValgfritt, på engelsk, maks 400 tegn: hva som skal endres eller presiseres. Karakteren kalles @Navn (det første ordet i navnet, se name) eller Image 1. Uten en scene beveger den seg nøyaktig som personen på kameraet. La aldri karakteren snakke i den, og beskriv aldri munnen, blikket eller hodet («says», «looks at the camera», «smiles»): den kopierer dem fra videoen, og en instruks får den til å finne dem på, med usynkrone lepper og vridd hode. Beskriv det som endrer seg rundt: antrekk, tilbehør, lys.
descriptionValgfritt, på engelsk, maks 360 tegn: hvem karakteren er ("a 28 year old woman with long red hair, wearing a black leather jacket"). Som standard dens kind og antrekk.
partfull (standarden): hele karakteren. head: bare hodet (ansikt og hår); den filmede kroppen, klærne og omgivelsene blir værende. Karakteren rendres da fra de tre portrettene i dens character sheet, beskåret til hodet (heads_only i svaret); en karakter med én eller to visninger beholder dem hele. Standardbeskrivelsen oppgir bare dens kind, uten antrekket, og zone er tight som standard.
zonePlassen rundt den filmede silhuetten der karakteren kan tegnes: tight, normal (standarden) eller wide (plass til store ører, vinger, bred kroppsbygning). Med part head er det plassen rundt hodet, tight som standard.
likenessHvor tett karakteren holder seg til visningene sine, fra 0,5 til 2 (1 som standard).
audiotrue som standard: lyden fra videoen beholdes, og leppene følger den. false: en stille video.
voicecharacter (standard): lyden fra videoen konverteres til stemmen i karakterens profil når den har en på nett (has_voice i GET /characters), i samme rendring og uten å endre tempoet, så leppene forblir synkronisert. Uten profilstemme blir den filmede stemmen værende. original: behold den filmede stemmen. Svaret oppgir hvilken som ble brukt (voice: character, custom, original eller none uten lyd).
voice_b64Valgfritt, med lyd: en annen stemme for karakteren (WAV, MP3, OGG, FLAC, maks 2 MB; de første 20 sekundene brukes), som går foran profilens stemme. Lyden fra videoen konverteres til denne stemmen, uten å endre tempoet.
seedSeed for renderingen, fra 0 til 4294967295, for å rendre den igjen eller variere den.

Video og stemme sammen: maks 22 MB, slik at forespørselsbodyen holder seg under 30 MB (over det, en 413 uten JSON-body).

  • Serveren forbereder alt. Den klipper ut passasjen, setter den til den arbeidende bilderaten (30 fps for en kilde ved 29 fps eller mer, inkludert 50 og 60, 24 under) og til det arbeidende formatet (multipler av 128, en kort side på 768, forholdet nærmest videoen din), og tilpasser karakterens visninger til det formatet.
  • Det du får tilbake er videoen av passasjen i det arbeidende formatet, omtrent én megapiksel (768 x 1408 for en vertikal video, for eksempel), med proporsjoner innenfor 5% av videoen din. Full oppløsning og flere karakterer etter hverandre er forbeholdt tendre.AI-skrivebordsappen: den limer karakteren tilbake på den originale videoen i full oppløsning og kjeder flere karakterer.
  • Pris: 6 credits per sekund av den forberedte passasjen (seconds i svaret), avrundet opp til neste credit. Svaret gir jobId, seed, cost og den forberedte passasjen (width, height, length, fps, seconds, audio, voice, views, part). En karakter som bare har én visning rendres, med warnings limited_likeness.
  • Ingen kalkulator: verken POST /videos/quote eller MCP-ens tendre_quote kjenner til Face swap. For å beregne prisen før innsending, les grid.body_swap i GET /pricing: sekunder av passasjen x per_block_720p (prisen for en blokk) / block_seconds (lengden av en blokk), avrundet opp til neste credit.
  • Noen scener rendres fra karakterens tre portretter beskåret til hodet (heads_only i svaret), og antrekket fra visningene pålegges ikke lenger: scenen bestemmer.
  • En Face swap teller som en bruk av karakteren og utsetter slettingen, som Multi-Ref.
  • Polling, nedlasting og avbryt er det samme som for enhver video (se Poll, last ned, avbryt, ovenfor): GET /videos/{jobId}, GET /videos/{jobId}/file, POST /videos/{jobId}/cancel.
  • Egne feil: 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 (en stemme over 2 MB), face_swap_too_large (passasjen er fortsatt for tung etter forberedelse: forkort duration), server_busy (to videoer forberedes allerede: prøv igjen etter Retry-After, 20 s), face_swap_unavailable og face_swap_price_missing (Face swap stengt, eller uten en pris: prøv igjen senere). Hva hver enkelt betyr: Grenser og feil.
  • Videoen din passerer gjennom serverne våre mens den forberedes, og sendes deretter til grafikkortet som rendrer den, som ethvert kildebilde.

Bruk bare videoer av personer som har gitt sitt samtykke: det er et krav i brukervilkårene.

Med MCP-serveren gjør agenten alt dette med tendre_face_swap.

Windows · Mac · Sky eller lokalt

Generer privat. I kveld.

Last ned tendre.AI gratis og generer uten grenser, privat, på din egen GPU.

OS Windows 10/11GPU NVIDIA 8GB+VRAM 12GB anbefaltDisk 20GB

Mac: Apple silicon (M1 eller nyere), macOS 13 eller nyere. Intel-Mac støttes ikke.

Lokal bildegenerering på Mac krever en M4 med 24 GB minne, eller en M2- eller M3 Pro, Max eller Ultra med 24 GB. Under det kjører alt online med credits. Retusjering og video kjører foreløpig online på Mac.

Alt om tendre.AI for Mac

Ingen NVIDIA GPU? Start 100% i skyen: 5 gratis bilder og 1 gratis video hver dag. Et NVIDIA-kort (8GB+) låser opp ubegrenset lokal generering.