Pro API: generer videoer med lyd
Et klip fra en prompt, eller en animation af et stillbillede du leverer. Filen er en MP4, med lyd når du beder om det.
Indsend 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 | Hvad det gør |
|---|---|---|---|
prompt | string | påkrævet | Handlingen, stemningen, lyset. Beskriv bevægelsen. |
width, height | int | 720 x 1280 | Vertikal som standard. Se prisguiden nedenfor. |
quality | string | max: Ultra-tilstand (den fineste gengivelse), se Ultra-tilstand. | |
consistency | string | standard | enhanced: forbedret konsistens, steadigere bevægelse, ansigter og baggrund over tid, op til 721 frames pr. skud (30 s ved 24 fps, 24 s ved 30), udvidelser inkluderet. Kun Quality-tilstand. Se Forbedret konsistens. |
mode | string | ltx25 | ltx25: motor 2.5 (lyd, automatisk varighed, 1080p, slutframe). turbo: udfaset den 11. oktober 2026; en turbo-anmodning gengives i Quality 480p (samme orientering, samme længde, 241 frames maks., fast længde) til Quality 480p-prisen. |
duration_auto | bool | true | Motoren vælger længden fra prompten, op til 20 s ved 24 fps (16 s ved 30, 8 s ved 60: grænsen tæller frames, se fps), og length ignoreres herefter. Sæt false for en fast længde angivet af length. Med consistency enhanced over 30 fps er længden altid fast (fps_requires_fixed_duration ellers). |
length | int | 121 | Længde i frames ved fps-hastigheden, altid på formen 8n+1; varigheden 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, dvs. 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). Bruges til fast længde (duration_auto sat til false); ignoreres ved automatisk varighed. |
fps | int | 30 | Billedhastighed i frames pr. sekund: 24, 30 eller 60. 30 som standard, den anbefalede indstilling (skarp bevægelse); 60, den jævneste; 24, biografhastigheden. 50, kun med consistency enhanced, giver en let slowmotion (ca. 0,83x: motoren sætter bevægelsen som ved 60 og afspiller den ved 50). length tæller frames ved denne hastighed. Prisen ændrer sig ikke (fast sats pr. klip); den maksimale længde gør, da den tæller frames. En udvidelse beholder billedhastigheden fra det forrige klip, en sekvens den fra sit første skud. En hastighed tilstanden ikke understøtter: invalid_fps, som lister dem den har. |
audio | bool | false | Lyd genereret sammen med billedet (baggrundslyd, stemme). Fordobler prisen på klippet (se Formater og pris). |
image | string | Startframe i base64: videoen animerer dette billede. | |
end_image | string | Slutframe i base64, sammen med image: klippet overgår fra det ene til det andet (kun motor 2.5). En overgang leveres i den ønskede størrelse, fra 480p til 1080p, og faktureres som et klip i det format. | |
keyframes | array | Keyframes (Quality-tilstand): 1 til 4 objekter { "image": base64, "at": seconds, "strength": 0.1 to 1 (1 by default) }. Klippet viser hvert billede på sit tidspunkt, f.eks. en karakter midt i et skud der starter og slutter på en tom location. Længden bliver fast (length, duration_auto tvinges til false); 0 < at < length, mindst 0,5 s mellem to keyframes; præcis til ca. en tredjedel af et sekund. Fungerer med image og end_image. Ikke i Ultra eller Multi-Ref; i en udvidelse kun med consistency enhanced (se Forbedret konsistens). Samme pris som et klip i samme format. | |
lora, lora_strength | string, number | En trænet karakter på kontoen (name fra GET /loras) og dens styrke (0 til 1). | |
lora2, lora2_strength | string, number | En anden karakter. | |
multiref | object | Cast 1 til 4 karakterer (12 i Ultra) fra GET /characters, plus gemte objekter, dyr og en location fra GET /subjects, kaldt med @Navn i prompten, se Multi-Ref Video. | |
seed | int | tilfældig | Seed til gengivelsen, fra 0 til 4294967295. Samme seed, samme prompt, samme billede og samme indstillinger (format, længde, lyd, tilstand): samme klip, med små forskelle hvis grafikkortet skifter. Med automatisk varighed ændrer en anden valgt længde klippet: for en streng gengivelse, sæt duration_auto til false og angiv length. |
steps | int | motor | Lad feltet være tomt. |
Standard billedhastighed: 30 fps. Klip blev tidligere gengivet ved 24 fps. Uden fps er et klip
med samme length derfor kortere end før (241 frames: 8 s i stedet for 10 s). Send "fps": 24
for at beholde den tidligere adfærd.
Svaret:
{ "jobId": "...", "seed": 908172, "cost": 30 }Prisen beregnes og meddeles ved indsendelse, inden noget trækkes. seed returneres også,
uanset om du angav den eller den blev trukket tilfældigt.
Formater og pris
En video prissættes pr. format som en fast sats uafhængig af dens længde. Grundpris: 5 kreditter.
Den faste sats ganges med 2 ved 720p og med 3 ved 1080p, og lyd fordobler derefter prisen.
Faktorerne anvendes på grundsatsen, ikke på hinanden: 1080p med lyd koster 5 x 3 x 2 = 30
kreditter. Op til 481 frames, dvs. 20 s ved 24 fps, ændrer længden intet (5 s eller 20 s, samme sats).
Over 481 frames (op til 721, kun med consistency enhanced, fast længde) fordobles prisen for
formatet. Billedhastigheden (fps) ændrer ikke prisen, men niveauerne tæller frames: ved 30 fps
gælder normalprisen op til 16 s; ved 60 op til 8 s (12 s til dobbelt pris i enhanced).
En undtagelse: i Quality koster 480p uden lyd 2 kreditter, uanset længde (siden 11. oktober 2026). Multi-Ref og forbedret konsistens beholder den faste sats for formatet, 5 kreditter.
| Format | Korteste side | Eksempelstørrelser | Uden lyd | Med lyd |
|---|---|---|---|---|
| 480p | 480 | 480 x 832, 832 x 480 | 2 (5 i Multi-Ref og forbedret konsistens) | 10 |
| 720p | 720 | 720 x 1280, 1280 x 720 | 10 | 20 |
| 1080p | 1080 | 1080 x 1920, 1920 x 1080 | 15 | 30 |
Den størrelse du modtager. Motoren arbejder i multipler af 32 og i to trin, så filen leveres i 768 x 1280 (eller 1280 x 768) ved 720p og 1088 x 1920 (eller 1920 x 1088) ved 1080p. 480p forbliver 480 x 832 (eller 832 x 480), undtagen i forbedret konsistens. Godt at vide hvis du sammensætter eller lægger noget ovenpå vores gengivelser.
turbo-sporet blev udfaset den 11. oktober 2026: en turbo-anmodning gengives i Quality 480p
og prissættes som sådan (2 kreditter uden lyd, 10 med lyd).
Kend prisen inden du indsender
POST /videos/quote tager samme body som POST /videos og kører samme beregning, men
intet oprettes: ingen gengivelse, ingen kreditter tilbageholdt, intet kvote forbrugt. Kald det inden
du forpligter dig, især fra en agent der arbejder inden for et budget.
{ "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 den anvendte billedhastighed, og seconds_max er længden i sekunder
ved den hastighed. Med "consistency": "enhanced" accepterer quote en fast længde op til 721 frames og
anvender satsen over 481 frames (x 2 (over 20 s) i detail ved 24 fps, x 2 (over 481 frames) ved
en anden hastighed). Den samme rute findes for billeder, POST /images/quote, som
altid svarer { "cost": 1, ... }: et billede koster altid 1 kredit.
For et Ultra-klip, der afregnes pr. sekund, giver tilbuddet den afregnede længde i seconds, og detail specificerer prisen pr. sekund.
Poll, download, annuller
Samme ruter som billeder, under /videos.
GET /videos/{jobId}:pending/completed/failed, samme felter. En forbedret udvidelse kan ende medfailedog"error": "extension_not_applied"(motoren tog ikke fat i slutningen af det forrige klip): intet trækkes, indsend igen.GET /videos/{jobId}/file: MP4'en (Content-Type: video/mp4).POST /videos/{jobId}/cancel: annullerer, og intet trækkes.
I Ultra pr. sekund stopper en gengivelse, der allerede beregnes, ikke længere: annulleringen svarer 409 render_in_progress, og klippet leveres og afregnes. Et klip, som motoren afviser ved output, ender som failed, med en sætning i detail og motorens kode i reason: intet trækkes.
En video tager 1 til 5 minutter, længere når motoren starter koldt. Poll hvert 3. sekund og
download så snart status er completed: filen arkiveres ikke.
Flere skud i ét klip
En enkelt prompt kan indeholde flere skud med hårde klip, op til 20 sekunder i alt ved 24 fps (16 s ved 30, standarden). Beskriv dem i
rækkefølge: Shot 1: <framing>, <action>. Cut to Shot 2: .... Gentag i hvert skud det der skal forblive
det samme (karakter, tøj, sted, lys), og afslut med én linje fælles stemning.
Udelad tidskoder: lad duration_auto være slået til, og motoren vælger længden (op til 20 s ved 24 fps, 16 s ved 30) og
hvor der klippes. To til fire skud pr. klip fungerer bedst.
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 skud i ét klip eller en sekvens? De gør forskellige ting:
| Flere skud i ét klip | Sekvens (udvidelser) | |
|---|---|---|
| Mellem skud | Hårde klip | Intet klip: hvert skud fører bevægelsen videre |
| Længde | Maks. 20 s ved 24 fps (16 s ved 30) | Længere |
| Gengivelser | Én | Én pr. skud |
| Pris | Ét klip | Ét klip pr. skud |
Forlæng et klip
Et klip kan forlænges: det næste skud fortsætter bevægelsen fra det forrige uden
stop ved samlingen. Det styres af ca. det sidste sekund af det forrige klip, ikke af et enkelt
stillbillede. Tilføj til POST /videos:
| Felt | Type | Standard | Hvad det gør |
|---|---|---|---|
extend_job_id | string | Klippet der skal forlænges: en gengivelse fra din licens, hentet kort efter den er færdig. | |
extend_frames | int | 25 | Hvor meget af slutningen af klippet der styrer det næste skud, i frames: 9, 17, 25, 33, 41 eller 49 (25 er ca. 1 s ved 24 fps). |
extend_video | string | I stedet for extend_job_id: slutningen af et klip du selv har, som en base64 MP4 med præcis extend_frames frames, maks. 8 MB. |
Det forlængede skud beholder opløsningen fra det forrige klip: width og height ignoreres
med extend_job_id, og med extend_video læses størrelsen fra den fil du sender. Det indeholder
kun de nye frames, så skuddene lagt efter hinanden udgør én sammenhængende video. Det beholder billedhastigheden
fra det forrige klip: udelad fps (det overtager den) eller angiv den samme; en anden afvises
(extend_fps_mismatch). length er den nye varighed af skuddet (121 = 5 s mere ved
24 fps), og den er præcis: automatisk varighed gælder ikke
for en udvidelse. En udvidelse koster prisen på et klip.
Begrænsninger: ingen slutframe eller keyframes på samme tid, undtagen med forbedret konsistens.
Lyden fortsætter ved samlingen. Med audio: true, når slutningen af det forrige klip har et
lydspor, henter det nye skud den lyd i stedet for at opfinde en ny. Med extend_job_id beholder det
afskårne stykke klippets lyd; med extend_video, send slutningen med dens lyd. Uden et lydspor i
det stykke, i forbedret konsistens og i Ultra, starter lyden frisk med
skuddet: behold den samme stemning i hver prompt, så samlingen høres mindst muligt.
Forlæng et klip kort efter det er færdigt. Senere er det ikke længere tilgængeligt for os
(clip_unavailable), og du sender selv slutningen i extend_video.
Forlæng et Ultra-skud, fremad eller bagud
Et skud, der er gengivet i Ultra pr. sekund, forlænges også i Ultra, fremad eller bagud; alle andre klip forlænges som ovenfor. Send POST /videos med "quality": "max" og:
| Felt | Type | Standard | Hvad det gør |
|---|---|---|---|
extend_job_id | string | Ultra-skuddet, der skal forlænges, gengivet af din licens for mindre end 24 timer siden. | |
extend_upload_id | string | I stedet, for et ældre skud: det id, som POST /extensions (nedenfor) returnerer, når originalfilen er uploadet. | |
extend_direction | string | forward | forward gengiver det, der kommer bagefter; backward gengiver øjeblikkene lige før skuddet, til at klippe ind foran det. |
- Gengivelsen indeholder kun den nye del, lige så lang som et Ultra-klip (
length/fps, 5 s med automatisk længde). Den får skuddets opløsning (widthogheightignoreres) og slutter sig til dets sidste billede (forward) eller dets første (backward). - Intet startbillede, ingen referencer (
multiref), ingen bevægelse og ingen forbedret konsistens.backwardgår ikke ind i en sekvens, som lægger sine skud efter hinanden. - Pris: den nye del til Ultra-prisen pr. sekund, plus, pr. sekund af det forlængede skud, 2 kreditter i 480p, 5 i 720p og 13 i 1080p (
ultra.extend_per_secondiGET /pricing). De sekunder rundes op til hele sekunder (med 0,1 s nøjagtighed) og tælles ved 24 billeder pr. sekund: et skud med højere billedfrekvens tælles forholdsmæssigt (2 s ved 60 fps tæller som 5 s).POST /videos/quotemed de samme felter giverextend_secondsog den nøjagtige pris. - Et skud ældre end 24 timer: upload dets originalfil, sådan som
GET /videos/{jobId}/fileleverede den.POST /extensionsmed{ "size": <bytes> }returnererupload_id,upload_url,headersogexpires_in(900 s); send filen medPUT upload_urlog præcis disseheaders, og send derefterextend_upload_idinden for 2 timer. En upload gælder for én gengivelse: en MP4 på 4 til 30 s, højst 60 MB og 1080p. Før renderingen kontrolleres hver video, der sendes til Ultra-tilstanden (en bevægelse eller en video, der skal forlænges), og intet trækkes, hvis den afvises (400 input_video_out_of_limits): 24 til 60 billeder pr. sekund, et forhold bredde/højde på 0,4 til 2,5 og, pr. rendering, højst 30 s og 10 filer for videoer og referencelyde tilsammen. For et realistisk ansigt afvises en omkodet eller redigeret fil (400 engine_refused): kun originalen går igennem. En video, som ikke er renderet i Ultra-tilstand (for eksempel en rendering fra en anden tilstand), forlænges ikke i Ultra, når den viser et realistisk ansigt (400 extension_real_face, intet trækkes): forlæng den i Quality-tilstand, eller lav skuddet om i Ultra.
Forbedret konsistens
Med "consistency": "enhanced" gengives klippet af et spor der holder bevægelse, ansigter og
baggrund steadigere over tid. Det går op til 721 frames pr. skud, dvs. 30 s ved 24 fps og 24 s ved 30 (length, fast længde)
og er primært beregnet til lange videoer:
- Første skud: et normalt klip (prompt, startframe,
keyframes,end_image), op til 721 frames. - Udvidelse:
extend_job_id(ellerextend_video) som i Forlæng et klip, med sammeconsistency.lengther stadig den nye varighed (op til 721, dvs. 30 s mere ved 24 fps). En forbedret udvidelse tager ogsåkeyframes, hvisattæller fra den første nye frame, og en slutframeend_image, sat på den sidste frame i skuddet: f.eks. startframen fra det første skud, så en lang video looper.
Kun Quality-tilstand (mode ltx25, uden quality: "max"), op til 1080p, ikke i Multi-Ref
(400 consistency_mode). Pris: den faste sats for formatet (480p uden lyd:
5 kreditter) op til 481 nye frames (20 s ved 24 fps), fordoblet derover (se
prisguiden ovenfor). Billedhastigheder: 24, 30, 50 eller 60. Over 30 er længden fast
(fps_requires_fixed_duration ellers); 50 giver en let slowmotion (se fps). Gengivelsen tager længere end et standard
klip, og starten kan vente på et større grafikkort (lange skud). En sekvens beholder den samme
consistency for alle sine skud. Leveret størrelse: den samme som i Quality ved 720p og 1080p; ved 480p
kommer den korte side ud på 448 (448 x 832, 832 x 448, 448 x 448), da dette spor arbejder i multipler af 64.
Nogle prompts understøttes endnu ikke. For dem gengives et enkelt skud på 20 s eller mindre (15 s med en
end_image, ved fast længde) i standard konsistens, til samme pris. Over det
(length over 481 med duration_auto: false, eller over 361 med en end_image), i en udvidelse eller i
en sekvens, afvises anmodningen med 400 consistency_explicit: afkort skuddet eller bed om
consistency: "standard".
Lang video (sekvenser)
Et klip er maks. 481 frames, dvs. 20 s ved 24 fps (721 med forbedret konsistens, 30 s ved 24 fps). For længere videoer arkiverer en sekvens hvert skud efterhånden som det er færdigt, og samler dem til én MP4 uden re-encoding. Et minut er f.eks. 3 skud à 20 s, eller 2 skud à 30 s i forbedret konsistens, ved 24 fps.
POST /sequencesåbner en sekvens og svarer med{ "sequence_id": "seq_...", ... }.POST /videosmed"sequence_id": "seq_..."for hvert skud: det første som sædvanligt, de næste medextend_job_idsat til det forrige skud. Hvert skud arkiveres i sekvensen, i indsendelsesrækkefølge, så snartGET /videos/{jobId}ser det som færdigt.POST /sequences/{id}/exportnår det sidste skud er færdigt. Det svarer medseconds,resolutionogfile_url.GET /sequences/{id}/file: den samlede video (MP4).
Derudover: GET /sequences/{id} giver tilstanden (skud arkiveret eller stadig forventet),
POST /sequences/{id}/clips med { "job_id": "..." } arkiverer en gengivelse manuelt, og
DELETE /sequences/{id} sletter sekvensen med det samme.
Regler. Alle skud har samme opløsning (udvidelser beholder den) og samme lydvalg, alle
med lyd eller alle lydløse, samme consistency og samme billedhastighed (fps): det første skud sætter dem, og et skud
der afviger afvises (409 consistency_mismatch, 409 sequence_fps_mismatch; 422 encoding_mismatch
for et skud arkiveret manuelt). Et skud uden fps overtager sekvensens. Maks.
30 skud pr. sekvens og 5 sekvenser i gang pr. licens.
Hvad vi gemmer, og hvor længe. Skuddene i en igangværende sekvens slettes 30 minutter efter det sidste blev tilføjet, og den samlede video 24 timer efter eksporten. Derefter er alt væk.
Eksportér projektmappen
En projektmappe samler i en ZIP alt, hvad du skal bruge for at arbejde videre med en video et andet sted eller automatisere den: skuddene, deres referencer, klipningen og et manifest, der kan rendere hvert skud igen. Den er gratis: intet renderes.
POST /videos/{jobId}/export: én rendering fraPOST /videos(enkelt skud, Multi-Ref, forlængelse).POST /sequences/{id}/project: alle skud i en sekvens, efter hinanden.- Valgfri krop, de samme valg som i appens eksportvindue:
include_media(truesom standard): skuddenes videoer og deres signerede originaler.false: ingen video overhovedet (hverken klip, original eller film); skuddene beholder tekst, indstillinger og referencer ("state": "expired"), og manifestet harvideos_included: false.include_references(truesom standard): karakterernes vinkler og elementernes billeder, ireferences/.false: ingen kopieres; deres navne, @omtaler,idog fingeraftryk bliver i manifestet (references_included: false).exclude_references: de referencer, der ikke skal kopieres, én ad gangen, viaid(character_id,subject_id), navn eller @omtale, for eksempel["@Parc", "chr_..."](højst 200). Manifestet harreferences_included: "partial"og"included": falsepå hver udeladt (false, hvis alle er det). En post, der ikke peger på nogen reference i eksporten:400 unknown_reference.include_film(kun sekvens,falsesom standard): filmen for en allerede samlet sekvens; kræverinclude_media(ellers400 invalid_export_options, ligesom et valg, der ikke er en boolesk værdi, eller enexclude_references, der ikke er en liste af tekster).manifest_only: true: kun manifestet, uden ZIP.
Svaret er { "manifest": { ... }, "file_url": "...", "export_id": "exp_...", "expires_at": "...", "bytes": n }, og GET /exports/{id}/file downloader ZIP-filen. Én eksport ad gangen pr. licens (409 export_in_progress), maks. 2 GB (413 export_too_large: eksportér skuddene ét ad gangen).
| Fil | Indhold |
|---|---|
tendre-project.json | Manifestet (skema tendre.project/1, engelske nøgler). For hvert skud: dets status, den prompt du skrev (prompt) og den, der blev sendt til motoren (prompt_sent), indstillingerne, seeden, prisen, forlængelsen (extends, direction), referencerne knyttet til deres filer, og api_request, kroppen til POST /videos, der renderer skuddet igen (null, hvis et billede kun blev sendt i base64); øverst references_included: true i ZIP-filen (referencernes filer ligger i references/), false med manifest_only (referencer uden fil: files tom, kun sha256-fingeraftryk); et manifest uden dette felt (tidligere eksporter) læses som true. En mappe, som appen har eksporteret, hvor kunden vælger referencerne én ad gangen, har true, false eller "partial", og hver reference kan have included (mangler det: som øverst, false hvis der står false der, ellers true); en reference, der ikke er med, beholder navn, @omtale, id og beskrivelse, med files tom. project.settings indeholder indstillingerne for det første skud (quality, width, height, fps, audio, output_format "mp4") og settings_from_shot, det skuds id. En mappe, som appen har eksporteret, kan indeholde en app-blok forbeholdt appen: ignorér den |
shots/NN/clip.mp4 | Renderingen af hvert skud, så længe serveren har den; shots/NN/original.mp4 eller .mov: motorens signerede fil, byte for byte, hvis den stadig findes |
references/ | Karakterernes vinkler og billederne af de anvendte steder, objekter, dyr, stilarter og outfits |
timeline.otio, timeline.fcpxml | Klipningen (OpenTimelineIO; FCPXML til Final Cut Pro og DaVinci Resolve), medier via sti i forhold til mappen |
film.mp4 | Den samlede video for en sekvens, kun med include_film: true og hvis den allerede er samlet (POST /sequences/{id}/export); ellers er assembled null i manifestet |
Hvad vi gemmer, og hvor længe. For hver accepteret POST /videos gemmer serveren et kort over renderingen uden noget billede eller video: teksten, indstillingerne, identifikatorerne (et billede sendt i base64 efterlader kun sit fingeraftryk). Det slettes 24 timer efter indsendelsen; derefter svarer eksporten 404 unknown_export. ZIP-filen slettes 45 minutter efter den første download, senest 2 timer efter oprettelsen. Et skud, som serveren ikke længere har, kommer ud som "state": "expired", uden fil, men med tekst, indstillinger og referencer: en agent kan rendere det igen med api_request.
Sekvens. Samlingen sletter skuddene ét efter ét. For at få både skuddene og filmen skal du eksportere projektet før samlingen, derefter samle og eksportere igen med { "include_film": true }: filmen tilføjes, og skuddene kommer så ud som expired.
Ultra-tilstand
Ultra-tilstanden er den fineste videogengivelse. Tilføj "quality": "max" til POST /videos (med mode ltx25, standardværdien). Den afregnes pr. sekund, eller til fast pris med en LoRA eller ved en udvidelse af et klip, der ikke er gengivet pr. sekund; at forlænge et Ultra-skud, fremad eller bagud, afregnes pr. sekund. POST /videos/quote giver den nøjagtige pris for din forespørgsel.
Pr. sekund
Klippet afregnes pr. sekund efter sin opløsning, lyd inkluderet:
| Opløsning | Pris |
|---|---|
| 480p | 4 kreditter pr. sekund |
| 720p | 8 kreditter pr. sekund |
| 1080p | 20 kreditter pr. sekund |
- Længde: 4 til 30 s ved 24 billeder pr. sekund, kendt før gengivelsen: 5 s med automatisk længde (
duration_auto, standard), ellerslength/fps(24 hvisfpsmangler), afrundet til sekundet. - Format: det ønskede, i nærmeste forhold; 480p gengives i 480p. Over 1080p:
resolution_outside_ultra. - Startbillede (
image): muligt. Motoren kan afvise en tekst eller et billede ved indsendelse:400 engine_refused, med årsagen idetailog koden icode; intet trækkes. - Intet seed:
seedignoreres, og svaret angiver intet. - Annullering: fri, mens gengivelsen venter på sin tur; når den beregnes,
409 render_in_progress, og klippet leveres og afregnes. - Intet slutbillede, ingen keyframes og ingen forbedret konsistens i Ultra.
Til fast pris
Med en LoRA eller ved en udvidelse af et klip, der ikke er gengivet pr. sekund, gengives Ultra med den fulde videomodel, til fast pris:
| Ønsket format | Leveret størrelse | Fast pris pr. klip |
|---|---|---|
| 480p eller 720p | Som i tabellen ovenfor ved 720p (1280 x 768), en 480p-anmodning gengives i 720p | 40 kreditter |
| 1080p | Som i tabellen ovenfor (1920 x 1088) | 60 kreditter |
Prisen er fast pr. format: lyd og længde ændrer intet. Ultra starter ved 720p: en 480p-anmodning
gengives og faktureres i 720p. POST /videos/quote giver den præcise pris. 1080p (1920 x 1088) er loftet, i alle tilstande: 4K tilbydes ikke længere. En større størrelse afvises (ultra_4k_unavailable med quality: "max", resolution_above_quality uden).
- Længde: maks. 481 frames, som ethvert klip (20 s ved 24 fps, 16 s ved 30, 8 s ved 60). Udvidelser og lange videoer fungerer i Ultra også. En udvidelse beholder størrelsen fra det klip den fortsætter, og under 720p faktureres den til 720p-prisen.
- Tid: flere minutter for et 5 s klip, længere for et 20 s klip. Starten kan vente på at et stort grafikkort bliver ledigt.
- Ingen overgang (
end_image) i Ultra (ultra_incompatible). - Ingen keyframes (
keyframes) i Ultra (keyframes_mode). - En karakter-LoRA fra din konto fungerer i Ultra som i normaltilstanden.
Multi-Ref Video
Et klip hvor 1 til 4 karakterer (op til 12 i Ultra) spiller med, hver enkelt genkendelig, i en valgfri location, med gemte
objekter, dyr og en gemt location når du har brug for det. Karaktererne kommer fra
GET /characters: lavet fra ét foto via API'en eller i appen. Objekter,
dyr og locations kommer fra GET /subjects. Tilføj multiref-objektet til POST /videos (tilladelse videos) og kald hver karakter med @Navn i
prompten:
{
"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 | Hvad det gør |
|---|---|
characters[].character_id | En karakter fra GET /characters |
characters[].name | Ét ord (bogstaver, cifre, _), det der skrives efter @ i prompten |
characters[].description | En kort beskrivelse på engelsk; som standard dens kind |
characters[].strength | Vægten af ligheden, 0 til 2 (1 som standard) |
characters[].sheet_id | Valgfrit: hvilken character sheet der bruges for en karakter med flere (den nyeste som standard) |
characters[].voice | Med "audio": true, characters[0] og characters[1]: character (standard) er stemmen i dens profil, når den er online (has_voice på karakteren), ellers en stemme lavet af modellen; generated beder om en stemme lavet af modellen. Svaret angiver, hvilken der blev brugt (voices). |
characters[].voice_b64 | Valgfrit, kun characters[0] og characters[1], med "audio": true: en anden stemme til karakteren, en lydfil (WAV, MP3, OGG, FLAC) i base64, maks. 4 MB (et kort uddrag er nok), som går forud for profilens stemme |
background_b64, background_description | Valgfri location: et billede og nogle få engelske ord |
- Prompt på engelsk, ét afsnit i nutid;
Sound:for lyden, replikker i anførselstegn,exactly 2 peopleog hvor hver person står når det hjælper, ingen negationer. Et væsen beskrives ved hvad det er. Et@Navnder ikke matcher nogen karakter afvises (unknown_mention). - Formater (
widthxheight): portræt 480 x 832, 720 x 1280, 1088 x 1920; landskab 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. - Tilstande: Quality (standard) eller Ultra (
quality: "max"). Ingen udvidelse og ingen overgang. - Længde: automatisk (
duration_auto, standard), eller fast medduration_auto: falseoglength121 (5 s), 241 (10 s) eller 481 (20 s) ved 24 fps; ved en anden hastighed de samme varigheder talt i frames, maks. 481 (ved 30: 145, 297, 481; ved 60: 297, 481). - Billedhastighed:
fps24, 30 (standard) eller 60, som for ethvert klip;lengthtæller frames ved denne hastighed, maks. 481 (16 s ved 30, 8 s ved 60). - Pris: prisen på et klip. I Quality den faste pris for formatet i guiden ovenfor,
fordoblet med lyd; 480p uden lyd forbliver 5 kreditter (Quality's lave pris gælder ikke for Multi-Ref).
POST /videos/quotemed"multiref": truegiver den præcise pris. - Serveren tilpasser visningerne til det præcise videoformat: send karaktererne som de er. En
karakter der kun har én visning gengives, med
warningslimited_likenessi svaret: ligheden er begrænset. - Profilstemmer: med lyd taler
characters[0]ogcharacters[1]som standard med stemmen i deres profil, når den er online (has_voice);voicegeneratedlader modellen lave en. Svaret angiver stemmen for hver ivoices(character_id,voice:character,customellergenerated). - Karakterstemmer (
voice_b64): modellen får karakteren til at tale med den stemme, inklusive læberne; serveren bruger de første 5 sekunder. Maks. to stemmer, påcharacters[0]ogcharacters[1](motoren understøtter 2 stemmer). Sortercharactersefter dialogen:characters[0]taler først,characters[1]svarer. Det kræver lyd ("audio": true), ellersvoice_requires_audio; en stemme på en anden karakter:voice_slot; en ulæselig fil:unsupported_audio_format; over 4 MB:audio_too_large. Kun de første 5 sekunder bruges: send et kort uddrag. Hele anmodningsbodyen forbliver under 30 MB (over det, en413uden JSON-body). Ingen ekstra pris. - Polling, download og annullering er dem for en hvilken som helst video (se Poll, download, annuller, ovenfor).
Gemte objekter, dyr og locations. To yderligere felter i multiref caster de
subjects du har gemt fra dine egne billeder:
Felt i multiref | Hvad det gør |
|---|---|
subjects[] | Objekter og dyr (subject_id, derefter valgfrit name, description, strength). De deler slots med karaktererne: maks. 4 referencer i alt; i Ultra op til 30 billeder i alt (se nedenfor). |
location | Én gemt location som setting (subject_id, derefter valgfrit name, description, strength): dens billeder, med sin egen styrke. Den erstatter background_b64 (begge sammen: multiref_incompatible). Den kræver mindst én karakter, ét objekt eller ét dyr med sig. |
name er som standard det første ord i subjectets navn, og hvert @Navn i prompten matches
som en karakters. En location sendt i subjects, eller et objekt sendt som location, afvises
(invalid_subject_type). Prisen ændres ikke: det er prisen på et klip. Et subject bruges med sine første 5 billeder (alle i Ultra, højst 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-klip reglerne for Ultra pr. sekund: samme pris pr. sekund, lyd inkluderet, 4 til 30 s ved 24 billeder pr. sekund (5 s med automatisk længde), 480p til 1080p, intet seed.
- Hver karakter sendes med sit character sheet (eller, uden et, med alle sine billeder), og serveren samler det hele til ét billede; hvert objekt, dyr eller sted med alle sine billeder (højst 6).
- Den første gengivelse af en karakter forbereder det billede, nogle titals sekunder længere: dens
jobIdbegynder da medsdp-og følges som de andre. - Ingen stemme:
voice_b64og profilens stemme ignoreres (warningsvoice_ignored), ogstrengthhar ingen virkning. - Motoren kan afvise et referencebillede (et rigtigt ansigt, for eksempel): gengivelsen ender som
failedmed årsagen, og intet trækkes.
Stilarter, outfits og bevægelse. Kun i Ultra (quality: "max"), tre felter mere i multiref; ellers afvises forespørgslen (multiref_ultra_only), den renderes aldrig uden dem.
Felt i multiref | Hvad det gør |
|---|---|
styles[] | Gemte stilarter (subject_id, derefter valgfrit name, description): hele klippet overtager deres udtryk (teknik, lys, farver, teksturer), aldrig deres indhold. |
outfits[] | Gemte outfits (samme felter plus worn_by), båret som på deres billeder. worn_by (valgfrit) er name på en af karaktererne: det tilføjer "<Navn> wears <Outfit>." i starten af scenen. Uden det skriver du det i prompten: @Lea wears @RedGown. |
motion | Én bevægelsesvideo på 4 til 30 s: { "motion_id": ... } (uploadet med POST /motions) eller { "video_b64": ... } (MP4, MOV, WebM eller MKV, højst 20 MB) og en valgfri description af bevægelsen på engelsk. mode angiver, hvad klippet overtager fra den: camera (standard) kamerabevægelsen, beskæringen og rytmen; choreography kropsbevægelserne, gestusserne og deres rytme. Aldrig personen eller stedet i videoen; samme pris i begge tilstande. Serveren nedskalerer den til omkring 410.000 pixels (856 × 482 i 16:9), 24 billeder pr. sekund, uden lyd; forholdet bredde/højde skal ligge mellem 0,4 og 2,5. |
- Højst 30 billeder i Ultra, karakterer, subjects, stilarter, outfits og lokation tilsammen (
multiref_too_many_images), heraf højst 12 karakterer (derudovermultiref_characters_required). 8 anbefales: fra 9 til 12 gennemføres renderen medwarningsmany_characters, fordi nogle kan mangle eller blive blandet sammen. En stil uden forstyleseller et outfit uden foroutfitsafvises (invalid_subject_type). -
Pris for bevægelsen: 3 kreditter pr. sekund af bevægelsesvideoen (rundet op til hele sekunder), oven i renderingen, angivet i
GET /pricing(ultra.motion_per_second);POST /videos/quotemed sammemultiref.motiongivermotion_secondsog den nøjagtige pris. - Direkte upload af en tung bevægelsesvideo:
POST /motionsmed{ "size": <bytes> }(højst 20 MB) returnerermotion_id,upload_url,headersogexpires_in(900 s); send filen medPUT upload_urlog præcis disseheaders, og send dereftermultiref.motion.motion_idtilPOST /videosinden for 2 timer. Etmotion_idgælder for én 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."Fejlkoderne for stilarter, outfits og bevægelse står i Grænser og fejl.
Med MCP-serveren klarer agenten alt dette med tendre_multiref_video: bed om
scenen og navngiv karaktererne, objekterne, dyrene og locationen (subjects, location_id).
Face swap
Personen filmet i din egen video bliver til en af dine karakterer: ansigt,
hår, krop og tøj (eller kun hovedet, se part), mens gestik, læber og omgivelser bevares, og stemmen også, medmindre karakteren har sin egen (se voice). Det er appens
Face swap, på ét passager på maks. 20 s: én karakter, uden kædering og
ingen overgang. Anmodningen er POST /faceswap (tilladelse 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 | Hvad det gør |
|---|---|
video_b64 | Videoen, maks. 20 MB, med én person tydeligt synlig. Over det, trim eller komprimer den først, eller brug MCP-værktøjet tendre_face_swap, som tager op til 95 MB. |
character_id, sheet_id | En karakter fra GET /characters, og dens character sheet hvis den har flere (den nyeste som standard). |
name | Valgfrit, maks. 60 tegn: karakterens navn, som standard det den har i GET /characters. En karakter oprettet i appen har først sit navn online, når appen har sendt det (app 0.9.1 og nyere; ellers er name null i GET /characters): angiv et for at kalde den @Navn i scene, ellers kald den Image 1. |
start, duration | Passagen i sekunder: fra start (0 som standard), i duration (som standard til slutningen af videoen, maks. 20 s). |
scene | Valgfrit, på engelsk, maks. 400 tegn: hvad der skal ændres eller præciseres. Karakteren kaldes @Navn (det første ord i dens navn, se name) eller Image 1. Uden en scene bevæger den sig præcis som personen på kameraet. Lad aldrig karakteren tale i den, og beskriv aldrig dens mund, blik eller hoved (»says«, »looks at the camera«, »smiles«): den kopierer dem fra videoen, og en instruktion får den til at opfinde dem, med usynkrone læber og drejet hoved. Beskriv det, der ændrer sig omkring: tøj, tilbehør, lys. |
description | Valgfrit, 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 dens tøj. |
part | full (standard): hele karakteren. head: kun hovedet (ansigt og hår); den filmede krop, tøjet og omgivelserne bliver. Karakteren gengives så fra de tre portrætter i dens character sheet, beskåret til hovedet (heads_only i svaret); en karakter med én eller to visninger beholder dem hele. Standardbeskrivelsen angiver kun dens kind, uden tøjet, og zone er tight som standard. |
zone | Pladsen rundt om den filmede silhouet hvor karakteren kan tegnes: tight, normal (standard) eller wide (plads til store ører, vinger, en bred bygning). Med part head er det pladsen rundt om hovedet, tight som standard. |
likeness | Hvor tæt karakteren holder sig til sine visninger, fra 0,5 til 2 (1 som standard). |
audio | true som standard: videoens lyd bevares, og læberne følger den. false: en lydløs video. |
voice | character (standard): videoens lyd konverteres til stemmen i karakterens profil, når den har en online (has_voice i GET /characters), i samme rendering og uden at ændre tempoet, så læberne forbliver synkroniseret. Uden profilstemme bliver den filmede stemme. original: behold den filmede stemme. Svaret angiver, hvilken der blev brugt (voice: character, custom, original eller none uden lyd). |
voice_b64 | Valgfrit, med lyd: en anden stemme til karakteren (WAV, MP3, OGG, FLAC, maks. 2 MB; de første 20 sekunder bruges), som går forud for profilens stemme. Videoens lyd konverteres til denne stemme uden at ændre tempoet. |
seed | Seed til gengivelsen, fra 0 til 4294967295, for at gengive den igen eller variere den. |
Video og stemme tilsammen: maks. 22 MB, så anmodningsbodyen forbliver under 30 MB (over det, en
413 uden JSON-body).
- Serveren forbereder alt. Den klipper passagen, sætter den til den arbejdsmæssige billedhastighed (30 fps for en kilde ved 29 fps eller mere, 50 og 60 inkluderet, 24 under) og til det arbejdsmæssige format (multipler af 128, en kort side på 768, det format tættest på din video), og tilpasser karakterens visninger til det format.
- Det du modtager er videoen af passagen i det arbejdsmæssige format, ca. én megapixel (768 x 1408 for en vertikal video, f.eks.), med din videos proportioner inden for 5%. Fuld opløsning og flere karakterer i træk er specifikt for tendre.AI-desktopappen: den indsætter karakteren tilbage i den originale video i fuld opløsning og kæder flere karakterer.
- Pris: 6 kreditter pr. sekund af den forberedte passage (
secondsi svaret), rundet op til næste kredit. Svaret giverjobId,seed,costog den forberedte passage (width,height,length,fps,seconds,audio,voice,views,part). En karakter der kun har én visning gengives, medwarningslimited_likeness. - Ingen quote: hverken
POST /videos/quoteeller MCP'enstendre_quotekender Face swap. For at beregne prisen inden du indsender, læsgrid.body_swapiGET /pricing: sekunder af passagen xper_block_720p(prisen pr. blok) /block_seconds(længden af en blok), rundet op til næste kredit. - Nogle scener gengives fra karakterens tre portrætter beskåret til hovedet (
heads_onlyi svaret), og tøjet fra dens visninger pålægges ikke længere: scenen bestemmer. - En Face swap tæller som en brug af karakteren og udskyder dens sletning, ligesom Multi-Ref.
- Polling, download og annullering er dem for en hvilken som helst video (se Poll, download, annuller, ovenfor):
GET /videos/{jobId},GET /videos/{jobId}/file,POST /videos/{jobId}/cancel. - Egne fejl:
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(passagen er stadig for tung efter forberedelse: afkortduration),server_busy(to videoer forberedes allerede: prøv igen efterRetry-After, 20 s),face_swap_unavailableogface_swap_price_missing(Face swap lukket, eller uden en pris: prøv igen senere). Hvad hver enkelt betyder: Grænser og fejl. - Din video sendes igennem vores servere mens den forberedes, og sendes derefter til det grafikkort der gengiver den, ligesom et killebillede.
Brug kun videoer af personer der har givet deres samtykke: det er en regel i brugsbetingelserne.
Med MCP-serveren klarer agenten alt dette med tendre_face_swap.