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
{ "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 }| Felt | Type | Standard | Hva det gjør |
|---|---|---|---|
prompt | streng | påkrevd | Handlingen, stemningen, lyset. Beskriv bevegelsen. |
width, height | heltall | 720 x 1280 | Vertikal som standard. Se prisene nedenfor. |
quality | streng | max: Ultra-modus (den fineste renderingen), se Ultra-modus. | |
consistency | streng | standard | enhanced: 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. |
mode | streng | ltx25 | ltx25: 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_auto | bool | true | Motoren 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). |
length | heltall | 121 | Lengde 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. |
fps | heltall | 30 | Bilderate, 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. |
audio | bool | false | Lyd generert sammen med bildet (bakgrunnslyd, stemme). Dobler prisen på klippet (se Formater og pris). |
image | streng | Startbilde i base64: videoen animerer dette bildet. | |
end_image | streng | Sluttbilde 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. | |
keyframes | array | Keyframes (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_strength | streng, tall | En trent karakter på kontoen (name fra GET /loras) og dens styrke (0 til 1). | |
lora2, lora2_strength | streng, tall | En andre karakter. | |
multiref | objekt | Cast 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. | |
seed | heltall | tilfeldig | Seed 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. |
steps | heltall | motor | La 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:
{ "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.
| Format | Korteste side | Eksempelstørrelser | Uten lyd | Med lyd |
|---|---|---|---|---|
| 480p | 480 | 480 x 832, 832 x 480 | 2 (5 i Multi-Ref og Enhanced consistency) | 10 |
| 720p | 720 | 720 x 1280, 1280 x 720 | 10 | 20 |
| 1080p | 1080 | 1080 x 1920, 1920 x 1080 | 15 | 30 |
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.
{ "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 somfailedmed"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.
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 video | Sekvens (forlengelser) | |
|---|---|---|
| Mellom klipp | Harde kutt | Ingen kutt: hvert klipp viderefører bevegelsen |
| Lengde | Maks 20 s ved 24 fps (16 s ved 30) | Lengre |
| Renderinger | Én | Én per klipp |
| Pris | Ett klipp | Ett 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:
| Felt | Type | Standard | Hva det gjør |
|---|---|---|---|
extend_job_id | streng | Klippet som skal forlenges: en rendering fra lisensen din, hentet kort tid etter at den er ferdig. | |
extend_frames | heltall | 25 | Hvor 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_video | streng | I 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:
| Felt | Type | Standard | Hva det gjør |
|---|---|---|---|
extend_job_id | streng | Ultra-opptaket som skal forlenges, rendret av lisensen din for mindre enn 24 timer siden. | |
extend_upload_id | streng | I stedet, for et eldre opptak: id-en som POST /extensions (nedenfor) returnerer, når originalfilen er lastet opp. | |
extend_direction | streng | forward | forward 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 (widthogheightignoreres) og kobles til det siste bildet (forward) eller det første (backward). - Ingen startbilde, referanser (
multiref), bevegelse eller enhanced consistency.backwardgå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_secondiGET /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/quotemed de samme feltene girextend_secondsog den eksakte prisen. - Et opptak eldre enn 24 timer: last opp originalfilen, slik
GET /videos/{jobId}/fileleverte den.POST /extensionsmed{ "size": <bytes> }girupload_id,upload_url,headersogexpires_in(900 s); send filen medPUT upload_urlog nøyaktig disseheaders, og send deretterextend_upload_idinnen 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(ellerextend_video) som i Forleng et klipp, med sammeconsistency.lengther fortsatt den nye varigheten (opptil 721, det vil si 30 s mer ved 24 fps). En Enhanced- forlengelse tar ogsåkeyframes, deratteller fra det første nye bildet, og et sluttbildeend_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.
POST /sequencesåpner en sekvens og svarer{ "sequence_id": "seq_...", ... }.POST /videosmed"sequence_id": "seq_..."for hvert klipp: det første som normalt, de neste medextend_job_idsatt til forrige klipp. Hvert klipp legges inn i sekvensen, i innsendingsrekkefølge, så snartGET /videos/{jobId}ser at det er ferdig.POST /sequences/{id}/exportnår det siste klippet er ferdig. Det svarer medseconds,resolutionogfile_url.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 fraPOST /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(truesom 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 harvideos_included: false.include_references(truesom standard): visningene av karakterene og bildene av elementene, ireferences/.false: ingen kopieres; navn, @omtaler,idog fingeravtrykk blir værende i manifestet (references_included: false).exclude_references: referansene som ikke skal kopieres, én og én, viaid(character_id,subject_id), navn eller @omtale, for eksempel["@Parc", "chr_..."](høyst 200). Manifestet harreferences_included: "partial"og"included": falsepå hver utelatt (falsehvis alle er det). En oppføring som ikke peker på noen referanse i eksporten:400 unknown_reference.include_film(kun sekvens,falsesom standard): filmen til en sekvens som allerede er satt sammen; kreverinclude_media(ellers400 invalid_export_options, som et valg som ikke er en boolsk verdi eller enexclude_referencessom 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).
| Fil | Innhold |
|---|---|
tendre-project.json | Manifestet (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.mp4 | Rendringen 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.fcpxml | Redigeringen (OpenTimelineIO; FCPXML for Final Cut Pro og DaVinci Resolve), medier via sti relativt til mappen |
film.mp4 | Den 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øsning | Pris |
|---|---|
| 480p | 4 credits per sekund |
| 720p | 8 credits per sekund |
| 1080p | 20 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), ellerslength/fps(24 hvisfpsmangler), 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 idetailog koden icode; ingenting belastes. - Ingen seed:
seedignoreres, 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 format | Størrelse levert | Fast pris per klipp |
|---|---|---|
| 480p eller 720p | Som i tabellen ovenfor ved 720p (1280 x 768), en 480p-forespørsel rendres i 720p | 40 credits |
| 1080p | Som 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:
{
"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 multiref | Hva det gjør |
|---|---|
characters[].character_id | En karakter fra GET /characters |
characters[].name | Ett ord (bokstaver, siffer, _), det som skrives etter @ i teksten |
characters[].description | En kort beskrivelse på engelsk; som standard dens kind |
characters[].strength | Vekten av likheten, 0 til 2 (1 som standard) |
characters[].sheet_id | Valgfritt: hvilken character sheet som skal brukes for en karakter som har flere (den nyeste som standard) |
characters[].voice | Med "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_b64 | Valgfritt, 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_description | Valgfri lokasjon: et bilde og noen engelske ord |
- Tekst på engelsk, ett avsnitt i presens;
Sound:for lyden, replikker i anførselstegn,exactly 2 peopleog hvor hver står når det hjelper, ingen nektelser. En skapning beskrives ut fra hva den er. Et@Navnsom ikke matcher noen karakter avvises (unknown_mention). - Formater (
widthxheight): 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 medduration_auto: falseoglength121 (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:
fps24, 30 (standarden) eller 60, som for ethvert klipp;lengthteller 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/quotemed"multiref": truegir 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
warningslimited_likenessi svaret: likheten er begrenset. - Profilstemmer: med lyd snakker
characters[0]ogcharacters[1]som standard med stemmen i profilen sin når den er på nett (has_voice);voicegeneratedlar modellen lage en. Svaret oppgir stemmen til hver ivoices(character_id,voice:character,customellergenerated). - 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]ogcharacters[1](motoren støtter 2 stemmer). Sortercharactersetter dialogen:characters[0]snakker først,characters[1]svarer. Det krever lyd ("audio": true), ellersvoice_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, en413uten 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 multiref | Hva 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).
"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:
jobIdbegynner da medsdp-og følges som de andre. - Ingen stemme:
voice_b64og profilens stemme ignoreres (warningsvoice_ignored), ogstrengthhar ingen effekt. - Motoren kan avvise et referansebilde (et ekte ansikt, for eksempel): renderingen ender som
failedmed å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 multiref | Hva 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 detmultiref_characters_required). 8 anbefales: fra 9 til 12 går rendringen gjennom medwarningsmany_characters, fordi noen kan mangle eller blandes sammen. En stil utenforstyles, eller et antrekk utenforoutfits, 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/quotemed sammemultiref.motiongirmotion_secondsog den eksakte prisen. - Direkte opplasting, for en tung bevegelsesvideo:
POST /motionsmed{ "size": <bytes> }(maks 20 MB) girmotion_id,upload_url,headersogexpires_in(900 s); send filen medPUT upload_urlog nøyaktig disseheaders, og send derettermultiref.motion.motion_idtilPOST /videosinnen 2 timer. Enmotion_idgjelder for én rendring.
"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):
{
"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
}| Felt | Hva det gjør |
|---|---|
video_b64 | Videoen, 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_id | En karakter fra GET /characters, og dens character sheet hvis den har flere (den nyeste som standard). |
name | Valgfritt, 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, duration | Passasjen, i sekunder: fra start (0 som standard), i duration (som standard frem til slutten av videoen, maks 20 s). |
scene | Valgfritt, 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. |
description | Valgfritt, 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. |
part | full (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. |
zone | Plassen 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. |
likeness | Hvor tett karakteren holder seg til visningene sine, fra 0,5 til 2 (1 som standard). |
audio | true som standard: lyden fra videoen beholdes, og leppene følger den. false: en stille video. |
voice | character (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_b64 | Valgfritt, 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. |
seed | Seed 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 (
secondsi svaret), avrundet opp til neste credit. Svaret girjobId,seed,costog den forberedte passasjen (width,height,length,fps,seconds,audio,voice,views,part). En karakter som bare har én visning rendres, medwarningslimited_likeness. - Ingen kalkulator: verken
POST /videos/quoteeller MCP-enstendre_quotekjenner til Face swap. For å beregne prisen før innsending, lesgrid.body_swapiGET /pricing: sekunder av passasjen xper_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_onlyi 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: forkortduration),server_busy(to videoer forberedes allerede: prøv igjen etterRetry-After, 20 s),face_swap_unavailableogface_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.