Il servizio di modifica immagini di OpenAI consente di inviare un numero arbitrario di immagini e istruzioni, restituendo immagini modificate. Attualmente l’API supporta contemporaneamenteDocumentation 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, l’ultima versione gpt-image-2, e la serie di modelli nano-banana / nano-banana-2 / nano-banana-pro integrati tramite la stessa interfaccia.
Questo documento descrive principalmente il flusso di utilizzo dell’OpenAI Images Edits API, che permette di sfruttare facilmente le funzionalità ufficiali di editing immagini di OpenAI.
Procedura di Richiesta
Per utilizzare l’OpenAI Images Edits API, puoi innanzitutto visitare la pagina OpenAI Images Edits API e cliccare sul pulsante «Acquire» per ottenere le credenziali necessarie per le richieste:
Se non hai effettuato il login o la registrazione, verrai automaticamente reindirizzato alla pagina di accesso per registrarti o autenticarti; dopo il login verrai riportato automaticamente alla pagina corrente.
Alla prima richiesta viene offerto un credito gratuito per utilizzare l’API senza costi.
Modello GPT-Image-2
gpt-image-2 offre miglioramenti evidenti rispetto a gpt-image-1 nel contesto dell’editing immagini:
- Maggiore stabilità strutturale: nel cambio di skin, colori o sfondo la composizione e il layout originali vengono quasi sempre preservati.
- Maggiore accuratezza nel mantenimento del testo: immagini con testo come infografiche, poster o menu mantengono il testo chiaro e leggibile dopo la modifica.
- Supporto per URL diretti: oltre al tradizionale upload file
multipart/form-data,gpt-image-2supporta anche il passaggio dell’immagine tramite URL in formato JSON, senza necessità di scaricare l’immagine localmente, ideale per pipeline server-side. - Supporto per ridisegno ad alta risoluzione: è possibile fornire un’immagine originale 1K e richiedere output 2K o 4K tramite il parametro
size; il modello eseguirà l’editing e l’ingrandimento contemporaneamente.
Valori supportati per size e fasce di prezzo
Le restrizioni sul parametro size sono identiche a quelle dell’API di generazione: gpt-image-2 accetta solo valori auto, vuoti o nel formato WIDTHxHEIGHT; altri formati restituiscono errore 400. Il prezzo dipende solo dal valore di size, indipendentemente dalla risoluzione originale:
- Prezzo standard 1K: qualsiasi dimensione 1K raccomandata nella tabella sottostante, o alias comuni 1K upstream (
1254x1254,1672x941,941x1672). - Altre fasce (1.5×): dimensioni 2K / 4K raccomandate o qualsiasi dimensione personalizzata
WIDTHxHEIGHT.
| Aspect Ratio | 1K (Prezzo standard) | 2K raccomandato (×1.5) | 4K raccomandato (×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 |
Per esempio: se l’immagine originale è1024x1024esizeè2048x2048, il modello ridisegnerà e restituirà un’immagine 2K, con tariffa “altre fasce”; sesizeè3840x2160, l’output sarà un’immagine 4K orizzontale, sempre con tariffa “altre fasce”; sesizeèautoo omesso, si applica il prezzo standard 1K.
Nota sul parametroDi seguito due esempi reali da diverse prospettive per mostrare le capacità di editing dinL’API di editinggpt-image-2non supportan > 1: questo parametro viene ignorato silenziosamente e indipendentemente dal valore (es.n=1on=10), ogni richiesta restituisce una sola immagine e viene fatturata come una sola. Per ottenere più risultati in un’unica sessione, occorre inviare più richieste concorrenti. Questa limitazione vale anche pergpt-image-1/gpt-image-1.5e la serienano-banana. Solodall-e-2supporta nativamenten > 1per l’editing.
gpt-image-2.
Metodo 1: JSON + URL immagine (consigliato)
Invia la richiesta in formatoapplication/json con il campo image contenente l’URL di un’immagine; il modello scaricherà l’immagine e la modificherà secondo il prompt.
Ad esempio, l’immagine originale qui sotto è un’infografica generata con gpt-image-2:


Suggerimento: il campoimagesupporta anche un array, ad esempio"image": ["url1", "url2", "url3"], fino a 16 immagini di riferimento, permettendo al modello di considerare più immagini contemporaneamente.
Metodo 2: JSON + più immagini di riferimento
gpt-image-2 supporta l’uso simultaneo di più immagini di riferimento per generare il risultato finale, ad esempio combinando più foto di prodotti in un unico cesto regalo:
Esempio di scenario: cambio stile mantenendo struttura
Ecco un altro esempio: sostituire una libreria in legno con una mensola moderna sospesa, mantenendo esattamente il numero e la disposizione dei libri per ogni ripiano. Immagine originale (libreria in legno generata congpt-image-2):

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

Metodo 3: multipart/form-data (compatibile con OpenAI SDK)
Se usi già l’OpenAI Python SDK ufficiale, puoi continuare a caricare i file conmultipart/form-data, basta cambiare il modello in gpt-image-2:
OPENAI_BASE_URL a https://api.xhuoapi.ai/v1/openai e OPENAI_API_KEY al token ottenuto:
Serie Nano Banana
La serienano-banana è integrata nell’endpoint /openai/images/edits; basta impostare model su uno dei valori della tabella seguente.
| Modello | Costo (Crediti / chiamata) | Scenario d’uso |
|---|---|---|
nano-banana | 0.14 | Editing immagini standard, velocità massima e costo minimo |
nano-banana-2 | 0.28 | Qualità e dettaglio migliorati |
nano-banana-pro | 0.35 | Top di gamma, migliore conservazione di struttura, testo e stile |
Importante: parametri supportati Nano Banana usa un layer di adattamento per aderire al protocollo OpenAI, supportando solo i parametri:model,prompt,image.
imagepuò essere caricato tramitemultipart/form-data(internamente convertito indata:<mime>;base64,...per l’upstream) oppure passato come URL stringa nel form.- Non sono supportati parametri come
mask,n,size,response_format; se forniti vengono ignorati.- La risposta segue il formato OpenAI (
data[].url), macreatedè sempre0, non viene restituitob64_jsonerevised_promptè identico al prompt originale.
Chiamata con form + URL immagine

Chiamata con form + file locale
Callback asincrono
Il meccanismo di callback asincrono tramitecallback_url è supportato anche da nano-banana, con lo stesso flusso degli altri modelli, come descritto nella sezione Callback asincrono.
Utilizzo base
Ora puoi effettuare chiamate tramite codice; qui sotto un esempio con CURL:authorization (selezionabile dal menu a tendina), model (scegli il modello OpenAI, qui principalmente uno, vedi i modelli disponibili), prompt (la descrizione per generare l’immagine) e image (il percorso dell’immagine da modificare). L’immagine da modificare è mostrata qui sotto:

OPENAI_BASE_URL a https://api.xhuoapi.ai/v1/openai e OPENAI_API_KEY al token ottenuto da authorization. Su Mac OS puoi impostarle così:
gift-basket.png nella cartella corrente, come mostrato:

dall-e-2, gpt-image-1 e gpt-image-2, con gpt-image-2 come modello consigliato, vedi la sezione Modello GPT-Image-2.
Callback asincrono
Poiché l’editing immagini con OpenAI Images Edits API può richiedere tempo, mantenere la connessione HTTP aperta per lunghi periodi consuma risorse di sistema. Per questo l’API supporta callback asincroni. Il flusso è: il client invia la richiesta specificando un campocallback_url; l’API risponde subito con un task_id identificativo del task. Quando il task è completato, il risultato dell’editing viene inviato tramite POST JSON all’URL specificato in callback_url, includendo anche il task_id per correlare la risposta.
Ecco un esempio pratico.
Un webhook è un servizio HTTP che riceve richieste; devi sostituire l’URL con il tuo server HTTP. Per demo usiamo il sito pubblico https://webhook.site/, che genera un URL webhook come mostrato:
Copia questo URL, ad esempio https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab.
Poi invia la richiesta con il campo callback_url impostato a questo URL, come nel codice seguente:
task_id e il campo data con il risultato dell’editing, uguale a quello della chiamata sincrona, permettendo di associare i risultati tramite ID.
Gestione errori
Se si verifica un errore durante la chiamata all’API, questa restituisce un codice e un messaggio di errore. Alcuni esempi:400 token_mismatched: richiesta errata, parametri mancanti o non validi.400 api_not_implemented: richiesta errata, parametri mancanti o non validi.401 invalid_token: non autorizzato, token di autorizzazione mancante o non valido.429 too_many_requests: troppe richieste, superato il limite di velocità.500 api_error: errore interno del server.

