Pro API: generowanie i retuszowanie obrazów
Jeden obraz kosztuje 1 kredyt, niezależnie od trybu. Generowanie z promptu i retuszowanie dostarczonego przez ciebie obrazu przechodzą przez tę samą ścieżkę.
Wyślij żądanie wygenerowania obrazu
POST /images
{ "prompt": "portrait of a woman in a rainy street at night, neon reflections, cinematic",
"width": 832, "height": 1216 }
| Pole | Typ | Domyślnie | Co robi |
|---|---|---|---|
prompt | string | wymagane | Opis sceny. Angielski daje najdokładniejsze wyniki. |
width, height | int | 1024 x 1024 | Rozmiar w pikselach. Dobre proporcje: 1024 x 1024 (kwadrat), 832 x 1216 (portret), 1216 x 832 (pejzaż). |
mode | string | generation | edit, img2img lub inpaint, patrz niżej. Brak oznacza generowanie z promptu. |
image_b64 | string | Obraz źródłowy w base64 (PNG lub JPEG), wymagany przez wszystkie trzy tryby retuszu. Maksymalnie 12 MB po zdekodowaniu. | |
mask_b64 | string | Maska w base64: wymagana przez inpaint, opcjonalna dla edit. Zamaluj obszary do retuszu na czerwono, w rozmiarze obrazu źródłowego. | |
lora | string | Wytrenowana postać na koncie: wartość name zwracana przez GET /loras. Umieść jej trigger w prompcie. | |
lora2, lora2_strength | string, number | Druga postać i jej siła (od 0 do 1, domyślnie 1) do sceny z dwiema osobami. | |
steps | int | silnik | Zostaw puste. Silnik sam zna swoją wartość. |
Odpowiedź:
{ "jobId": "test-79634842-4586-46d4-ad52-d9ea236ae00d", "seed": 178078967, "cost": 1 }
Wartość seed jest losowana przez silnik i zwracana informacyjnie. W tej wersji nie można jej
ustalić na wejściu.
Trzy tryby retuszowania
Wszystkie trzy działają na tym samym silniku edycji sterowanej instrukcjami, który zachowuje
wygląd obrazu źródłowego. Gdy dostarczasz obraz źródłowy, width i height są odczytywane
z samego obrazu i nie trzeba ich przesyłać.
mode | Dane wejściowe | Co robi silnik |
|---|---|---|
edit | image_b64 + prompt (+ opcjonalnie mask_b64) | Stosuje instrukcję do całego obrazu ("add sunglasses", "make it snow"). Z maską zmiana koncentruje się wewnątrz czerwonego obszaru. |
inpaint | image_b64 + mask_b64 + prompt | Regeneruje tylko czerwony obszar maski zgodnie z instrukcją. Reszta jest odtworzona piksel po pikselu. |
img2img | image_b64 + prompt | Przetwarza cały obraz zgodnie z promptem, zachowując jego kompozycję i wygląd: wariacja. |
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\"}"
Polling
GET /images/{jobId}
| Odpowiedź | Znaczenie |
|---|---|
{ "status": "pending", "phase": "IN_QUEUE" } | W kolejce |
{ "status": "pending", "phase": "IN_PROGRESS" } | Renderowanie |
{ "status": "completed", "cost": 1, "file_url": "/pro/v1/images/{jobId}/file", ... } | Gotowe, plik dostępny |
{ "status": "failed", "detail": "..." } | Błąd, nic nie zostaje naliczone |
Odpytuj co 3 sekundy, nie częściej: kolejka jest współdzielona.
Pobieranie
GET /images/{jobId}/file
Sam plik PNG jako treść odpowiedzi (Content-Type: image/png). Dostępny od razu, gdy status
wynosi completed, i 404 media_indisponible gdy render zostanie usunięty. Pobierz go od razu,
nie jest archiwizowany.
Anulowanie
POST /images/{jobId}/cancel
Anuluje render oczekujący w kolejce lub w trakcie wykonywania. Odpowiada { "ok": true }. Nic
nie jest naliczane, a koszt zarezerwowany na poczet dziennego limitu klucza jest zwracany.