Pro API: generer og retusjere bilder

Ett bilde koster 1 kreditt, uansett modus. Generering fra en prompt og retusjeringav et bilde du laster opp går gjennom den samme ruten.

POST /images/quote tar samme body og returnerer prisen uten å opprette noe, alltid { "cost": 1, ... } her. Den finnes for symmetri med videoer, der prisen faktisk varierer.

Send inn et bilde

POST /images

json
{ "prompt": "portrait of a woman in a rainy street at night, neon reflections, cinematic",
  "width": 832, "height": 1216 }
FeltTypeStandardHva det gjør
promptstrengpåkrevdScenen. Engelsk gir de mest presise resultatene.
width, heightint1024 x 1024Pikselstørrelse. Gode formater: 1024 x 1024 (kvadrat), 832 x 1216 (portrett), 1216 x 832 (landskap).
modestrenggenerationedit, img2img eller inpaint, se nedenfor. Fraværende betyr generer fra prompten.
image_b64strengKildebilde i base64 (PNG eller JPEG), påkrevd av alle tre retusjeringsmodusene. Maks 12 MB dekodet.
mask_b64strengMaske i base64: påkrevd av inpaint, valgfri for edit. Mal områdene som skal retusjeres i rødt, i samme størrelse som kildebildet.
lorastrengEn trent karakter på kontoen: name returnert av GET /loras. Legg til trigger i prompten.
lora2, lora2_strengthstreng, tallEn andre karakter og dens styrke (0 til 1, standard 1) for en scene med to personer.
countint1Hvor mange bilder som skal rendres fra denne ene forespørselen, 1 til 8. Hvert får sitt eget unike seed; med seed brukes seed, seed+1, seed+2... Dette er appens Images per generation-velger.
seedinttilfeldigSeed for renderingen, fra 0 til 4294967295. Samme seed, samme prompt og samme innstillinger gir samme rendering, med svært små forskjeller hvis grafikkortet endres. Å beholde seed og justere prompten gir en variasjon som bevarer komposisjonen.
stepsintmotorLa stå tom. Motoren vet sin egen verdi.

Svaret:

json
{ "jobId": "test-79634842-4586-46d4-ad52-d9ea236ae00d", "seed": 178078967, "cost": 1 }

seed returneres i svaret, enten du oppga det eller det ble trukket tilfeldig: behold det for å rendre det samme bildet igjen, eller en variasjon av det.

Be om flere på én gang

Med count over 1 starter én forespørsel flere renderinger, hver med sitt eget seed, og svaret lister dem opp:

json
{ "count": 4, "requested": 4, "cost_total": 4,
  "jobs": [ { "jobId": "...", "seed": 178078967, "cost": 1 }, { "jobId": "...", "seed": 903412, "cost": 1 } ],
  "errors": [],
  "jobId": "...", "seed": 178078967, "cost": 1 }

To ting å lese nøye.

jobId, seed og cost for den første renderingen gjentas på toppnivå. Det er der for at klienter skrevet før batch-støtte skal fortsette å fungere uendret, ikke fordi den første er viktigere. Poll hver oppføring i jobs, ikke bare den ene.

Og sammenlign count med requested. En avvisning underveis, på grunn av manglende kreditter eller fordi nøkkelen nådde sitt daglige tak, stopper batchen der den er: requested er det du ba om, count er det som faktisk startet, og errors forteller hvorfor det stoppet. En klient som antar at de to er like mister renderinger uten å merke det.

POST /images/quote tar også count og prissetter hele batchen. Videoer har ingen count: én forespørsel, én klipp.

De tre retusjeringsmodusene

Alle tre kjører på den samme instruksjonsdrevne redigeringsmotoren, som bevarer utseendet til kildebildet. Når du laster opp et kildebilde, leses width og height fra selve bildet og trenger ikke sendes med.

modeInndataHva motoren gjør
editimage_b64 + prompt (+ valgfri mask_b64)Bruker instruksjonen på hele bildet ("add sunglasses", "make it snow"). Med en maske konsentreres endringen inne i det røde området.
inpaintimage_b64 + mask_b64 + promptRegenererer kun det røde området i masken, i tråd med instruksjonen. Resten rekomponeres piksel for piksel.
img2imgimage_b64 + promptBearbeider hele bildet langs prompten mens komposisjon og utseende bevares: en variasjon.

I edit velger serveren selv den beste måten å håndtere redigeringen på, som appen:

  • med en maske: den leser instruksjonen og velger mellom å erstatte innholdet i området (et annet objekt, et annet plagg, et ansikt: området tegnes på nytt ut fra det som skal vises der) og å endre det som er der (farge, materiale, lys). Med en karakter-lora tegnes området alltid på nytt, ansiktet inkludert;
  • uten maske, med en karakter-lora ("replace the woman with kara..."): serveren finner personen på bildet og tegner den på nytt som karakteren; finner den ingen, gjelder instruksjonen hele bildet, som før.

Samme pris i alle tilfeller (1 kreditt per bilde). Valget ses i resultatet, ikke i svaret.

bash
IMG=$(base64 -w0 photo.png)
curl -s $B/images -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d "{\"mode\":\"edit\",\"prompt\":\"add a red scarf, keep everything else identical\",\"image_b64\":\"$IMG\"}"

Lag et bilde med karakterer, objekter og et sted

Legg til et multiref-objekt i POST /images, så lar serveren dine karakterer (Karakterer), dine objekter og dyr og et sted (Subjekter) spille sammen i ett enkelt bilde, hver gjenkjennelig, som appens "Create an image"-skjerm. Kall hver av dem med @Navn i prompten, på engelsk.

json
{ "prompt": "@Mia hands a cup of coffee to @Tom on a sunny terrace, both smiling",
  "multiref": {
    "characters": [
      { "character_id": "chr_8f3a...", "name": "Mia", "view": 1 },
      { "character_id": "chr_21bc...", "name": "Tom", "lora": "tom_v1", "strength": 1.0, "lora_pass": 0.55 }
    ],
    "subjects": [ { "subject_id": "sub_...", "name": "Mug" } ],
    "location": { "subject_id": "sub_...", "name": "Terrace" }
  },
  "width": 1344, "height": 768, "seed": 42, "count": 1 }
Felt i multirefHva det gjør
characters[].character_id, nameEn karakter fra GET /characters; name er ordet som skrives etter @ (bokstaver, siffer, _).
characters[].viewVisningen i dens character sheet som representerer den, 1 til 5 (1, bysten forfra, som standard).
characters[].sheet_idValgfritt: character sheet som skal brukes (den nyeste som standard).
characters[].loraValgfritt: dens bilde-LoRA, et navn fra listen image i GET /loras. Karakteren spilles da av sin LoRA, ikke av sin visning.
characters[].strengthLoRA-styrke, 0 til 1,5 (1 som standard).
characters[].lora_passAndelen av bildet som males om av dens LoRA-runde, 0,3 til 0,9 (0,55 som standard); nyttig med flere subjekter.
characters[].descriptionValgfritt, på engelsk: antrekk, alder...
subjects[]Objekter og dyr fra /subjects: subject_id, name (som standard det første ordet i navnet), description, image (hvilket av bildene, 1 som standard).
locationEt sted fra /subjects (subject_id, name), eller en engangsbakgrunn: background_b64 og background_description.
count1 eller 2: bildene rendres ett etter ett.
  • Maks 4 subjekter (karakterer, objekter og dyr). Uten LoRA, kun fra bilder: maks 4 referanser, stedet medregnet. Serveren velger metoden ut fra referansene, og plasserer hver av dem i rekkefølgen characters og deretter subjects, fra venstre mot høyre.
  • Et @Navn som ikke matcher noen referanse avvises (unknown_mention); en referanse som mangler i prompten sendes likevel.
  • Pris: én runde koster prisen for ett bilde (1 kreditt). Et enkelt bilde er 1 runde; flere karakterer spilt av en LoRA, 1 pluss én runde per LoRA (maks 4); kun fra bilder, én runde per referanse utover den første; en blanding, begge deler. Totalen (runder x count) reserveres ved innsending og belastes én gang, ved det endelige bildet: en feil eller en avbrytelse koster ingenting. POST /images/quote med samme body gir den eksakte prisen, metoden og rundene dens, uten å starte noe.
  • Svar 202: { "jobId": "mri_...", "seed", "cost", "method", "passes", "billed_passes" } (med count 2: jobs og cost_total). Polling, nedlasting og avbryt går via de vanlige rutene nedenfor; under renderingen oppgir progress den pågående runden ("2/3"). Et bilde tar 1 til 3 minutter.
  • Det endelige bildet forblir tilgjengelig i 1 time, og 10 minutter etter første nedlasting. En mislykket runde gir status: "failed" med reason: "render_failed"; en avbrytelse, reason: "cancelled".
  • Feil: invalid_count, invalid_view, invalid_lora_pass, invalid_subject_image, invalid_size, character_not_ready, pluss dem fra Multi-Ref (unknown_character, unknown_subject, unknown_lora, unknown_mention, multiref_too_many_references, invalid_strength...). Se Grenser og feil.

Poll

GET /images/{jobId}

SvarBetydning
{ "status": "pending", "phase": "IN_QUEUE" }I kø
{ "status": "pending", "phase": "IN_PROGRESS" }Rendrer
{ "status": "completed", "cost": 1, "file_url": "/pro/v1/images/{jobId}/file", ... }Ferdig, fil klar
{ "status": "failed", "detail": "..." }Mislyktes, og ingenting belastes

Poll hvert 3. sekund, ikke raskere: køen er delt.

Last ned

GET /images/{jobId}/file

Selve PNG-filen, som responskropp (Content-Type: image/png). Tilgjengelig så snart statusen er completed, og 404 media_unavailable når renderingen er borte. Last den ned med én gang, den arkiveres ikke.

Avbryt

POST /images/{jobId}/cancel

Avbryter en køet eller pågående rendering. Svarer { "ok": true }. Ingenting belastes, og kostnaden reservert mot nøkkelens daglige tak tilbakebetales.

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.