Usługa edycji obrazów OpenAI pozwala przesłać dowolną liczbę obrazów i poleceń, a następnie otrzymać zmodyfikowane obrazy. Obecnie interfejs obsługuje modeleDocumentation Index
Fetch the complete documentation index at: https://docs.xhuoapi.ai/llms.txt
Use this file to discover all available pages before exploring further.
dall-e-2, gpt-image-1, najnowszy gpt-image-2, a także modele z serii nano-banana / nano-banana-2 / nano-banana-pro dostępne przez ten sam interfejs.
Niniejsza dokumentacja opisuje proces korzystania z OpenAI Images Edits API, dzięki któremu możemy łatwo korzystać z oficjalnych funkcji edycji obrazów OpenAI.
Proces rejestracji
Aby korzystać z OpenAI Images Edits API, najpierw należy przejść na stronę OpenAI Images Edits API i kliknąć przycisk „Acquire”, aby uzyskać niezbędne poświadczenia do zapytań:
Jeśli nie jesteś zalogowany lub zarejestrowany, zostaniesz automatycznie przekierowany na stronę logowania, gdzie możesz się zarejestrować i zalogować. Po zalogowaniu zostaniesz automatycznie przekierowany z powrotem na tę stronę.
Przy pierwszym wniosku otrzymujesz darmowy limit, który pozwala bezpłatnie korzystać z API.
Model GPT-Image-2
gpt-image-2 w scenariuszach edycji obrazów oferuje znaczną poprawę w porównaniu do gpt-image-1:
- Stabilniejsze zachowanie struktury: zmiana skórek, kolorów czy tła niemal nie narusza układu i kompozycji oryginalnego obrazu.
- Dokładniejsze zachowanie tekstu: obrazy zawierające tekst, takie jak infografiki, plakaty, menu, po edycji zachowują czytelność tekstu.
- Obsługa przesyłania URL bezpośrednio: oprócz tradycyjnego przesyłania plików w formacie
multipart/form-data,gpt-image-2dodatkowo obsługuje przekazywanie URL obrazu w formacie JSON, co eliminuje konieczność pobierania obrazów lokalnie i jest idealne do integracji po stronie serwera. - Obsługa wysokiej rozdzielczości: można przesłać obraz 1K i za pomocą parametru
sizezażądać wyjścia w 2K lub 4K; model podczas edycji jednocześnie dokonuje powiększenia.
Obsługiwane wartości size i poziomy rozliczeń
Ograniczenia parametru size w interfejsie edycji są takie same jak w interfejsie generowania — gpt-image-2 akceptuje size jako auto, pusty lub w formacie WIDTHxHEIGHT. Każda inna forma zwróci błąd 400. Rozliczenie odbywa się na dwóch poziomach, niezależnie od rozdzielczości oryginału, tylko na podstawie wartości size:
- 1K – standardowa cena: dowolny z rekomendowanych rozmiarów 1K z tabeli poniżej lub popularne aliasy 1K (
1254x1254,1672x941,941x1672). - Inne poziomy (1,5×): obejmują rekomendowane rozmiary 2K / 4K oraz dowolne niestandardowe
WIDTHxHEIGHT.
| Proporcje | 1K (standard) | 2K rekomendowane (×1,5) | 4K rekomendowane (×1,5) |
|---|---|---|---|
| 1:1 | 1024x1024 | 2048x2048 | 2880x2880 |
| 4:3 | 1536x1024 | 2048x1536 | 3264x2448 |
| 3:4 | 1024x1536 | 1536x2048 | 2448x3264 |
| 16:9 | 1792x1024 | 2048x1152 | 3840x2160 |
| 9:16 | 1024x1792 | 1152x2048 | 2160x3840 |
Przykład: jeśli oryginał ma rozmiar1024x1024isizeustawimy na2048x2048, model przerysuje obraz zgodnie z poleceniem i zwróci obraz 2K, rozliczając go na poziomie „inne”; jeślisizeto3840x2160, otrzymamy obraz 4K w orientacji poziomej, również rozliczany jako „inne”; jeślisizetoautolub pominiemy ten parametr, rozliczenie nastąpi według ceny standardowej 1K.
O parametrzePoniżej przedstawiamy dwa przykłady pokazujące możliwości edycjinInterfejs edycjigpt-image-2nie obsługujen > 1: ten parametr jest ignorowany, niezależnie czy podamyn=1czyn=10, w odpowiedzi zwrócony zostanie tylko jeden obraz i rozliczony jako jeden. Jeśli potrzebujesz wielu wariantów, musisz wykonać wiele równoległych zapytań. To samo ograniczenie dotyczy modeligpt-image-1/gpt-image-1.5oraz seriinano-banana. Jedyniedall-e-2natywnie wspieran > 1.
gpt-image-2.
Metoda wywołania 1: JSON + URL obrazu (zalecane)
Wysyłamy zapytanie jakoapplication/json, w polu image podając URL obrazu, który model pobierze i edytuje zgodnie z prompt.
Na przykład, poniższy obraz to infografika wygenerowana przez gpt-image-2:


Wskazówka: poleimagemoże przyjmować tablicę URL-i, np."image": ["url1", "url2", "url3"], maksymalnie do 16 obrazów, co pozwala modelowi korzystać z wielu referencji podczas edycji.
Metoda wywołania 2: JSON + wiele obrazów referencyjnych
gpt-image-2 pozwala na jednoczesne użycie wielu obrazów referencyjnych do wygenerowania wyniku, np. połączenie kilku zdjęć produktów w jeden kosz prezentowy:
Przykład scenariusza: zmiana stylu z zachowaniem struktury
Inny przykład: zamiana drewnianej półki na nowoczesną, ale z zachowaniem dokładnej liczby i układu książek na każdej półce. Oryginalny obraz (drewniana półka wygenerowana przezgpt-image-2):

task_id: e9544dba-727e-44a2-81e1-223d49869380):

Metoda wywołania 3: multipart/form-data (kompatybilne z OpenAI SDK)
Jeśli korzystasz z oficjalnego OpenAI Python SDK, możesz nadal używać tradycyjnego przesyłania plikówmultipart/form-data, wystarczy zmienić model na gpt-image-2:
OPENAI_BASE_URL na https://api.xhuoapi.ai/v1/openai oraz OPENAI_API_KEY na uzyskany token:
Modele z serii Nano Banana
Modele z seriinano-banana również obsługują endpoint /openai/images/edits; wystarczy zmienić model na dowolny z poniższej tabeli.
| Model | Koszt (Credits / wywołanie) | Zastosowanie |
|---|---|---|
nano-banana | 0.14 | Standardowa edycja obrazów, najszybsza i najtańsza |
nano-banana-2 | 0.28 | Wyraźna poprawa jakości i detali |
nano-banana-pro | 0.35 | Flagowy model serii, najlepsze zachowanie struktury, tekstu i stylu |
Ważne: obsługiwane parametry Nano Banana korzysta z warstwy adaptacyjnej zgodnej z protokołem OpenAI i obsługuje tylko parametry:model,prompt,image.
imagemożna przesłać jako plik wmultipart/form-data(wewnętrznie konwertowany dodata:<mime>;base64,...dla upstream) lub jako URL w polu formularza.- Nie obsługuje parametrów
mask,n,size,response_format– jeśli zostaną podane, zostaną zignorowane.- Odpowiedź ma format zgodny z OpenAI (
data[].url), alecreatedjest zawsze0, nie zwracany jestb64_json, arevised_promptjest zawsze taki sam jak oryginalnyprompt.
Wywołanie przez formularz + URL obrazu

Wywołanie przez formularz + plik lokalny
Asynchroniczne wywołanie zwrotne (callback)
Mechanizm asynchronicznego callbackcallback_url działa również z nano-banana, proces wywołania jest identyczny jak dla innych modeli, opisany w sekcji Asynchroniczne wywołanie zwrotne.
Podstawowe użycie
Poniżej przykład wywołania CURL:authorization (wybierane z listy rozwijanej), model (wybór modelu OpenAI, tutaj mamy 1 model, szczegóły w dokumentacji modeli), prompt (tekst polecenia do wygenerowania obrazu) oraz image (ścieżka do obrazu do edycji). Przykładowy obraz do edycji:

OPENAI_BASE_URL na https://api.xhuoapi.ai/v1/openai oraz OPENAI_API_KEY na token z pola authorization. Na Mac OS można to zrobić tak:
gift-basket.png, efekt:

dall-e-2, gpt-image-1 oraz gpt-image-2. Zalecanym modelem jest gpt-image-2, szczegóły powyżej w sekcji Model GPT-Image-2.
Asynchroniczne wywołanie zwrotne
Ponieważ edycja obrazów przez OpenAI Images Edits API może trwać dłużej, a długie oczekiwanie na odpowiedź HTTP może obciążać zasoby systemowe, API oferuje wsparcie dla asynchronicznego callbacku. Proces jest następujący: klient wysyła zapytanie z dodatkowym polemcallback_url. API natychmiast zwraca odpowiedź z task_id – identyfikatorem zadania. Po zakończeniu edycji wynik jest przesyłany metodą POST w formacie JSON na wskazany callback_url, zawierając również task_id, co pozwala powiązać wynik z zadaniem.
Przykład działania:
Webhook to usługa HTTP, która odbiera zapytania. Należy podać adres własnego serwera HTTP. Dla demonstracji można użyć publicznego serwisu https://webhook.site/, który generuje unikalny URL webhooka, np.:
Skopiuj URL, np. https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab, i użyj go jako callback_url:
task_id oraz pole data z obrazem w formacie base64, co pozwala powiązać odpowiedź z zadaniem.
Obsługa błędów
W przypadku błędów API zwraca odpowiedni kod i komunikat, np.:400 token_mismatched: Niepoprawne żądanie, brak lub błędne parametry.400 api_not_implemented: Niepoprawne żądanie, brak lub błędne parametry.401 invalid_token: Nieautoryzowany, nieprawidłowy lub brakujący token.429 too_many_requests: Zbyt wiele żądań, przekroczono limit.500 api_error: Błąd wewnętrzny serwera.

