Skip to main content
Il servizio di editing delle immagini di OpenAI consente di inviare immagini e istruzioni, restituendo immagini modificate. I modelli della serie GPT Image possono ricevere fino a 16 immagini di riferimento contemporaneamente. Attualmente, l’interfaccia supporta gpt-image-1, l’ultimo gpt-image-2, e i modelli della serie nano-banana / nano-banana-2-lite / nano-banana-2 / nano-banana-pro accessibili tramite la stessa interfaccia. Questo documento descrive principalmente il processo di utilizzo dell’API OpenAI Images Edits, permettendoci di utilizzare facilmente le funzionalità di editing delle immagini ufficiali di OpenAI.

Processo di Richiesta

Per utilizzare l’API OpenAI Images Edits, prima di tutto visita il Pannello di Controllo di Ace Data Cloud per ottenere il tuo API Token, da tenere come riserva. Se non hai ancora effettuato il login o la registrazione, verrai automaticamente reindirizzato alla pagina di login che ti inviterà a registrarti e accedere; una volta completato, verrai riportato automaticamente alla pagina corrente. Un API Token è sufficiente per accedere a tutti i servizi della piattaforma, senza necessità di richiederne uno separato per ogni servizio. La prima richiesta ti darà un credito gratuito, permettendoti di provare senza costi; quando il credito è insufficiente, puoi ricaricare il saldo generale nel pannello di controllo.
📘 Documentazione Completa: OpenAI Images Edits API →

Modello GPT-Image-2

gpt-image-2 presenta miglioramenti significativi rispetto a gpt-image-1 nel contesto dell’editing delle immagini:
  • Struttura più stabile: Cambiando pelle, colori o sfondo, la composizione e il layout dell’immagine originale non vengono quasi mai compromessi.
  • Testo mantenuto con maggiore precisione: Immagini contenenti testo come infografiche, manifesti, menu, ecc., rimangono chiare e leggibili anche dopo la modifica.
  • Supporto per invio diretto di URL: Oltre al tradizionale caricamento di file multipart/form-data, gpt-image-2 supporta anche l’invio di URL delle immagini in formato JSON, senza necessità di scaricare prima l’immagine localmente, molto adatto per integrazioni in pipeline server.
  • Supporto per invio diretto di base64: In linea con l’ufficiale, il campo image può anche ricevere direttamente base64 (data:image/png;base64,... o base64 nudo), consentendo di modificare immagini locali senza doverle prima caricare su un servizio di hosting.
  • Supporto per ridisegno ad alta risoluzione: È possibile inviare un’immagine originale da 1K e richiedere un output a 2K / 4K tramite il parametro size, il modello ingrandirà l’immagine durante il processo di modifica.

Varianti di Linea (:official / :reverse)

gpt-image-2 utilizza di default la linea standard. È possibile scegliere esplicitamente la linea tramite il suffisso del nome del modello:
  • gpt-image-2:official: Canale ufficiale, stabile e conforme. I costi sono determinati dal Token di input testuale, dal Token di input dell’immagine durante la modifica e dal Token di output dell’immagine, con il pagamento finale basato sull’uso effettivo riportato nella risposta; il prezzo visualizzato per qualità/dimensione è solo una stima; il prezzo per i clienti è circa l’80% del prezzo standard ufficiale di OpenAI, calcolato in base al pacchetto di utilizzo massimo. Il servizio gestirà automaticamente il failover tra i canali disponibili, con capacità e costi basati sui risultati effettivi restituiti.
  • gpt-image-2:reverse: Completamente equivalente al gpt-image-2 di default, con un miglior rapporto qualità-prezzo, senza variazione di prezzo.
Formula di fatturazione :official Costo finale = Token di input testuale + Token di input dell’immagine (solo modifica) + Token di output dell’immagine. Il prezzo visualizzato di quality × size è una stima prima della richiesta, il costo effettivo sarà basato sull’usage della risposta riuscita. Ad esempio, un’immagine di low, 1024x1024 costa generalmente circa 0.0505 Crediti, più un piccolo numero di Token di input; utilizzando auto, il modello potrebbe scegliere una qualità superiore, e il limite di pre-autorizzazione sarà controllato in modo conservativo in base a livelli più alti.

Valori supportati per size

La validazione del formato size per l’interfaccia di modifica è coerente con quella dell’interfaccia di generazione: gpt-image-2 richiede che size sia auto, vuoto, o conforme al formato WIDTHxHEIGHT, qualsiasi altra forma restituirà un errore 400. Il gpt-image-2 di default e :reverse addebitano uniformemente per ogni immagine; :official calcolerà contemporaneamente i Token di input testuale, di input dell’immagine di riferimento e di output dell’immagine, l’immagine originale, le dimensioni e la qualità possono influenzare il costo finale. Limitazioni delle dimensioni: le dimensioni personalizzate devono soddisfare che sia la larghezza che l’altezza siano multipli di 16, con il lato lungo ≤ 3840, e il numero totale di pixel ≤ 8.294.400; oltre questi limiti verrà restituito un errore 4xx.
Ad esempio: se l’immagine originale è 1024x1024, e size è 2048x2048, il modello ridisegnerà e restituirà un’immagine 2K secondo le istruzioni di modifica; se size è 3840x2160, restituirà un’immagine 4K in orizzontale. Le tre dimensioni di addebito per gpt-image-2 di default e :reverse sono le stesse; :official si basa sull’uso effettivo dei Token. Omettere il campo size è completamente equivalente a passare esplicitamente auto: gpt-image-2 leggerà prima le intenzioni di dimensione esplicite nel prompt, comprese pixel, rapporto, orientamento, risoluzione (ad esempio 4K / alta risoluzione) o nomi della tela. Quando viene identificata un’intenzione di dimensione, verranno utilizzate le dimensioni specifiche pianificate; se il prompt non ha requisiti di dimensione o se il giudizio automatico non è disponibile, si tornerà alle dimensioni della prima immagine di riferimento. Le dimensioni finali specifiche saranno normalizzate a multipli di 16, con limiti sul lato lungo e sul numero totale di pixel; per un controllo assoluto, si prega di passare direttamente WIDTHxHEIGHT. Una volta completata la generazione, non verrà tentata automaticamente una nuova generazione a causa di pixel di output diversi, per evitare costi di generazione duplicati. Riguardo al parametro n L’interfaccia di editing gpt-image-2 supporta n > 1: è possibile ricevere il numero corrispondente di risultati di editing in un’unica richiesta. Per impostazione predefinita, gpt-image-2 e :reverse vengono addebitati in base al numero di successi; :official viene addebitato in base al consumo effettivo di Token per l’intera risposta (valore di n da 1 a 10). Si applica anche a gpt-image-1 / gpt-image-1.5, così come alla serie nano-banana / nano-banana-2-lite / nano-banana-2 / nano-banana-pro. Si noti che response_format=b64_json supporta solo n=1, per n>1 si prega di utilizzare il ritorno URL predefinito. Se alcune immagini non vengono generate correttamente, verranno restituite e addebitate solo le parti di successo.
Di seguito, attraverso due esempi reali da diverse angolazioni, possiamo percepire le capacità di editing di gpt-image-2.

Metodo di chiamata uno: JSON + URL immagine (raccomandato)

Invia direttamente la richiesta in formato application/json, il campo image deve contenere l’URL di un’immagine, il modello andrà a recuperare quell’immagine e la modificherà secondo il prompt. Ad esempio, l’immagine originale qui sotto è un’infografica generata con gpt-image-2:

Vogliamo cambiarla in una colorazione “modalità notturna”. Possiamo chiamarla in questo modo:
Oppure usando Python:
Il risultato restituito è il seguente:
L’immagine dopo l’editing è la seguente:

Si può notare che la struttura del modulo, la suddivisione delle informazioni e la tipografia sono state rigorosamente mantenute, solo la colorazione è stata invertita in un tema scuro.
Suggerimento: il campo image supporta anche l’inserimento di un array, ad esempio "image": ["url1", "url2", "url3"], fino a un massimo di 16 immagini di riferimento contemporaneamente, consentendo al modello di fare riferimento a più immagini per l’editing.
Invio diretto in base64: image (e ogni elemento dell’array) può essere un URL, ma anche in base64 — data:image/png;base64,... o base64 nudo, adatto per immagini locali che non si desidera caricare su un server di immagini. Ad esempio:

Metodo di chiamata due: JSON + più immagini di riferimento

gpt-image-2 supporta il riferimento a più immagini contemporaneamente per generare il risultato finale, ad esempio combinando più foto di prodotti in un unico cesto regalo:

Esempio di scenario: cambiare stile + mantenere la struttura

Ecco un altro esempio, sostituendo una libreria in legno con una moderna mensola flottante, ma mantenendo rigorosamente il numero e l’ordine dei libri su ogni ripiano. Immagine originale (libreria in legno generata con gpt-image-2):

Chiamata:
Risultato dell’editing (task_id: e9544dba-727e-44a2-81e1-223d49869380):

Si può notare che lo stile e l’ambiente sono stati completamente sostituiti secondo le istruzioni, ma il numero di libri su ogni ripiano (1 / 3 / 7) è rimasto rigorosamente invariato, e come richiesto è stata aggiunta una piccola pianta grassa.

Metodo di chiamata tre: multipart/form-data (compatibile con OpenAI SDK)

Se stai già utilizzando l’SDK Python ufficiale di OpenAI, il metodo di upload multipart/form-data esistente è comunque valido, basta cambiare model in gpt-image-2:
Quando utilizzi l’SDK, è necessario importare due variabili ambientali, OPENAI_BASE_URL impostato su https://api.acedata.cloud/openai, OPENAI_API_KEY impostato sul token ottenuto:

Modelli della serie Nano Banana

La serie nano-banana ha integrato anche /openai/images/edits per scenari di editing, basta cambiare model in uno qualsiasi di quelli nella tabella sottostante.
Importante: intervallo di supporto dei parametri Nano Banana si integra con il protocollo OpenAI tramite un layer di adattamento, supporta solo i seguenti parametri: model, prompt, image, n.
  • image può essere caricato tramite multipart/form-data (i file locali verranno automaticamente convertiti in base64), oppure può essere passato direttamente come stringa URL dell’immagine nei campi del modulo.
  • Non supporta parametri come mask, size, response_format, ecc.; se forniti, verranno ignorati. n > 1 è supportato (1–10), restituirà e addebiterà il numero corrispondente di risultati di editing.
  • La struttura di ritorno segue il formato OpenAI (data[].url), ma created è fisso a 0, e non verrà restituito b64_json, revised_prompt sarà sempre uguale al prompt originale.

Chiamata tramite modulo + URL immagine

Il risultato restituito è il seguente:
Immagine modificata:

Chiamata tramite modulo + file locale

Callback asincrona

Il meccanismo di callback callback_url è valido anche per nano-banana, il flusso di chiamata è completamente identico ad altri modelli, vedere la sezione Callback asincrona qui sotto.

Utilizzo di base

Ora puoi utilizzare il codice per effettuare chiamate, qui sotto è un esempio di chiamata tramite CURL:
Quando utilizzi per la prima volta questa interfaccia, è necessario compilare almeno quattro contenuti, uno è authorization, che puoi selezionare direttamente dall’elenco a discesa. Un altro parametro è model, model è la categoria del modello che scegli di utilizzare dal sito ufficiale di OpenAI, qui abbiamo principalmente 1 tipo di modello, i dettagli possono essere visti nei modelli forniti. Un altro parametro è prompt, prompt è il termine che inseriamo per generare l’immagine. L’ultimo parametro è image, questo parametro è il percorso dell’immagine da modificare, l’immagine da modificare è mostrata qui sotto:
Nota: image[] può apparire più volte per caricare più immagini di riferimento, ad esempio -F "image[]=@a.png" -F "image[]=@b.png", i modelli della serie GPT Image supportano fino a 16 immagini (ognuna non superiore a 50MB, formati png/webp/jpg). Superare il numero restituirà 400.

Ecco un esempio di codice Python per una chiamata con lo stesso effetto:
Per utilizzare Python, dobbiamo prima importare due variabili ambientali, una OPENAI_BASE_URL, che può essere impostata su https://api.acedata.cloud/openai, e l’altra variabile di credenziali OPENAI_API_KEY, il cui valore è ottenuto da authorization, su Mac OS puoi impostare le variabili ambientali con il seguente comando:
Dopo la chiamata, noteremo che verrà generata un’immagine gift-basket.png nella directory corrente, il risultato specifico è il seguente:

Così abbiamo completato le operazioni di editing delle immagini. Attualmente, l’interfaccia Edits supporta due modelli: gpt-image-1 e gpt-image-2, dove gpt-image-2 è il modello raccomandato da utilizzare, come descritto nel paragrafo precedente Modello GPT-Image-2.

Callback asincrono

Poiché l’API OpenAI Images Edits potrebbe richiedere un tempo relativamente lungo per modificare le immagini, se l’API non risponde per un lungo periodo, la richiesta HTTP manterrà la connessione aperta, causando un consumo aggiuntivo di risorse di sistema. Pertanto, questa API offre anche supporto per callback asincroni. Il flusso generale è il seguente: quando il client invia una richiesta, specifica un campo callback_url aggiuntivo. Dopo che il client ha inviato la richiesta API, l’API restituirà immediatamente un risultato contenente un campo task_id, che rappresenta l’ID del compito corrente. Quando il compito è completato, il risultato dell’editing dell’immagine verrà inviato al callback_url specificato dal client in formato JSON POST, includendo anche il campo task_id, in modo che il risultato del compito possa essere associato tramite l’ID. Di seguito, vediamo un esempio per capire come operare concretamente. Innanzitutto, il callback Webhook è un servizio in grado di ricevere richieste HTTP, e gli sviluppatori dovrebbero sostituirlo con l’URL del server HTTP che hanno creato. Qui, per comodità di dimostrazione, utilizziamo un sito Web pubblico di esempio per Webhook https://webhook.site/, aprendo questo sito si ottiene un URL Webhook, come mostrato nell’immagine: Copia questo URL e puoi usarlo come Webhook; l’esempio qui è https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab. Successivamente, possiamo impostare il campo callback_url su questo URL Webhook, riempiendo i parametri corrispondenti, come mostrato nel seguente codice:
Dopo la chiamata, si può notare che si ottiene immediatamente un risultato, come segue:
Dopo un momento, possiamo osservare il risultato dell’editing dell’immagine sull’URL Webhook, il contenuto è il seguente:
Si può vedere che nel risultato c’è un campo task_id, e il campo data contiene lo stesso risultato di editing dell’immagine della chiamata sincrona; tramite il campo task_id è possibile realizzare l’associazione del compito.

Gestione degli errori

Quando si chiama l’API, se si verifica un errore, l’API restituirà il codice di errore e le informazioni corrispondenti. Ad esempio:
  • 400 token_mismatched: Richiesta non valida, probabilmente a causa di parametri mancanti o non validi.
  • 400 api_not_implemented: Richiesta non valida, probabilmente a causa di parametri mancanti o non validi.
  • 401 invalid_token: Non autorizzato, token di autorizzazione non valido o mancante.
  • 429 too_many_requests: Troppe richieste, hai superato il limite di frequenza.
  • 500 api_error: Errore interno del server, qualcosa è andato storto sul server.

Esempio di risposta di errore

Conclusione

Attraverso questo documento, hai appreso come utilizzare facilmente l’API OpenAI Images Edits per sfruttare le funzionalità di editing delle immagini ufficiali di OpenAI. Speriamo che questo documento possa aiutarti a integrare e utilizzare meglio questa API. Se hai domande, non esitare a contattare il nostro team di supporto tecnico.