Alternativa all'API FLUX Kontext: modificare le foto con GPT Image 2
Modifiche guidate da un'istruzione, senza maschera: il codice della richiesta, una catena di tre modifiche eseguite il 28 ottobre 2026 e cosa ha conservato ogni passo.
In questa pagina
- Che cos'è la modifica a istruzioni
- La richiesta
- Una catena di tre modifiche
- Una modifica dall'originale
- Cosa ha tenuto e cosa no
- Istruzioni che hanno funzionato
- Quale scegliere
- Domande frequenti
- Che cosa fa l'API FLUX Kontext?
- FLUX Kontext è ancora attuale?
- Posso modificare una foto via API usando solo il testo?
- Posso concatenare le modifiche?
- Quanto durano i link al risultato?
L'API FLUX Kontext modifica una foto partendo da un prompt e un'immagine per richiesta. La pagina di BFL definisce FLUX.1 Kontext un modello di generazione precedente e consiglia FLUX.2 per i progetti nuovi (verificato il 28 ottobre 2026). GPT-Image 2 accetta gli stessi due input. Tre modifiche in catena il 28 ottobre 2026 hanno conservato il tavolo del bar, la tazza, la pianta e la finestra, insieme a ogni cambiamento precedente.
Che cos'è la modifica a istruzioni
Invii una foto e una frase come "trasforma la bicicletta rossa in nero opaco". Il modello restituisce una foto nuova con quella modifica applicata e il resto dell'inquadratura intatto. BFL descrive Kontext come modifica di immagini tramite prompt testuali semplici, senza flussi di lavoro complessi né fine-tuning (docs.bfl.ai/kontext/kontext_image_editing, verificato il 28 ottobre 2026).
Tre numeri di BFL determinano il codice: input fino a 20 MB o 20 megapixel, output di circa 1 MP e link firmati al risultato validi 10 minuti. Scarica il risultato subito.
L'istruzione porta con sé due parti: la modifica e l'elenco di ciò che resta.
GPT-Image 2 su OmniaKey riceve un'attività di modifica con gli stessi due ingredienti, e la pagina del modello elenca testo in immagine e modifica immagine con qualità low, medium e high (omniakey.com/gpt-image-2, verificato il 28 ottobre 2026). Non abbiamo eseguito nessun modello FLUX, quindi quello che segue sono le nostre quattro modifiche e il codice.
La richiesta
Una modifica è una POST a https://api.omniakey.com/v1/media/tasks con model impostato a gpt-image-2, type image, operation edit, la frase in input.prompt e la foto di partenza in input.image come Base64 con il suo tipo mime (docs.omniakey.com/en/media/image, verificato il 2026-10-28). La chiamata risponde HTTP 202 con un id attività. Interroga GET /v1/media/tasks/{task_id} finché lo stato è queued o processing, poi prendi assets[0].url dall'attività completata.
Due dettagli ci sono costati un tentativo in più. Una POST con lo User-Agent predefinito di Python restituiva HTTP 403 finché non ne abbiamo impostato uno (28 ottobre 2026), e il Base64 nel corpo rientra nel limite di 1 MiB della richiesta, quindi riduci la foto prima di codificarla.
Il risultato è un PNG opaco dietro un link firmato che scade dopo circa un'ora; il file resta 24 ore. Scaricalo e leggi la larghezza e l'altezza reali, invece di fidarti della dimensione che hai chiesto.
import base64
import json
import os
import time
import urllib.request
import uuid
API = "https://api.omniakey.com/v1/media/tasks"
KEY = os.environ["OMNIAKEY_API_KEY"]
def request(method, url, body=None, extra_headers=None):
headers = {"Authorization": f"Bearer {KEY}", "User-Agent": "omniakey-example/1"}
data = None
if body is not None:
headers["Content-Type"] = "application/json"
data = json.dumps(body).encode()
headers.update(extra_headers or {})
req = urllib.request.Request(url, data=data, headers=headers, method=method)
with urllib.request.urlopen(req, timeout=120) as resp:
return json.load(resp)
def edit_image(source_path, prompt, out_path, size="1024x1536", quality="medium"):
with open(source_path, "rb") as f:
image = base64.b64encode(f.read()).decode()
body = {
"model": "gpt-image-2",
"type": "image",
"operation": "edit",
"input": {"prompt": prompt, "image": {"data": image, "mime_type": "image/jpeg"}},
"parameters": {"size": size, "quality": quality},
}
task = request("POST", API, body, {"Idempotency-Key": str(uuid.uuid4())})["id"]
for _ in range(150):
time.sleep(4)
state = request("GET", f"{API}/{task}")
if state["status"] not in ("queued", "processing"):
break
if state["status"] != "succeeded":
raise RuntimeError(state.get("error") or state["status"])
asset_url = state["assets"][0]["url"] # signed link: valid for about an hour, so download now
req = urllib.request.Request(asset_url, headers={"User-Agent": "omniakey-example/1"})
with urllib.request.urlopen(req, timeout=120) as resp, open(out_path, "wb") as f:
f.write(resp.read())
return task
if __name__ == "__main__":
task = edit_image(
"cafe-base.jpg",
"Change the red bicycle to a matte black bicycle with a brown wicker basket on the front. Keep everything else exactly the same: the wooden table, the coffee cup, the plant, the window frame and the bright daylight. Photorealistic, no text, no logos.",
"cafe-step1.png",
size="1536x1024",
)
print("task", task)
Le nostre esecuzioni usavano size 1536x1024 e quality medium. La documentazione dice che n deve essere 1 per GPT Image; la funzione non lo passa. La chiamata di esempio in fondo al file è il passo 1 della catena.
Una catena di tre modifiche
Ogni passo riceve come input il risultato precedente, quindi la catena sono tre attività e tre download. La foto di base è un tavolo di bar vicino alla finestra: una tazza bianca di caffè con piattino, una bicicletta rossa sul marciapiede, una pianta in vaso sul davanzale, 1536x1024 a qualità medium.
- Passo 1: "Change the red bicycle to a matte black bicycle with a brown wicker basket on the front. Keep everything else exactly the same: the wooden table, the coffee cup, the plant, the window frame and the bright daylight. Photorealistic, no text, no logos." Risultato: una bicicletta nero opaco con cesto di vimini; tavolo, tazza, pianta e finestra invariati.
- Passo 2, dal passo 1: "Make it evening outside: the sky is dark blue and the street lamps are on. The cafe interior lights are warm yellow. Keep the table, the cup, the plant, the black bicycle and the window frame exactly the same. Photorealistic, no text, no logos." Risultato: cielo serale, lampioni accesi, luce calda all'interno e la bicicletta nera con il suo cesto al loro posto.
- Passo 3, dal passo 2: "Replace the coffee in the white cup with a clear glass of iced tea with a lemon slice on the rim. Keep everything else exactly the same. Photorealistic, no text, no logos." Risultato: tè freddo con una fetta di limone al posto del caffè; la scena serale è rimasta.

Tutte e quattro le inquadrature sono scene sintetiche create da gpt-image-2. Generated with GPT-Image 2 via the OmniaKey API on October 28, 2026, size 1536x1024, quality medium.
Una modifica dall'originale
Non ogni modifica richiede una catena. Questa parte dalla foto di base e scambia un oggetto sul davanzale: "Remove the potted plant from the windowsill and place a stack of three old hardcover books there. Keep everything else exactly the same: the table, the cup, the red bicycle and the daylight. Photorealistic, no text, no logos."
Sul davanzale sono comparsi tre vecchi libri rilegati, la pianta è sparita e la bicicletta rossa è rimasta rossa. Una frase ha fatto due cambiamenti, ed entrambi sono apparsi nell'inquadratura.

Cosa ha tenuto e cosa no
Il tavolo, la tazza, la pianta e il telaio della finestra hanno attraversato tutti e tre i passi, la bicicletta nera e il suo cesto hanno superato la luce serale, e ogni modifica precedente era ancora nella cornice successiva. La luce è cambiata una volta sola, nel passo 2, dove la frase lo chiedeva.
La fetta di limone stava sul bordo del bicchiere, come chiedeva la frase, e il tè freddo è rimasto sul piattino. Ogni istruzione è stata eseguita una volta, quindi ogni fotogramma è un solo campione.
Istruzioni che hanno funzionato
Quattro istruzioni hanno prodotto quattro modifiche utilizzabili, con uno schema comune.
- Un cambiamento per frase, poi l'elenco di ciò che resta. Il passo 1 ha cambiato la bicicletta e ha indicato tavolo, tazza, pianta e finestra come invariati.
- Ripeti l'elenco di ciò che resta a ogni giro, cambiamento precedente compreso: il passo 2 scrive "the black bicycle" e il passo 3 conserva la scena serale.
- Dì dove va la cosa nuova nella stessa frase in cui parli di quella vecchia: "place a stack of three old hardcover books there".
- Usa materiali e colori concreti: "matte black", "brown wicker basket", "warm yellow", "clear glass".
- Chiudi con "Photorealistic, no text, no logos". Ogni istruzione della nostra catena finiva così.
Per l'ordine delle frasi e la scelta delle parole nella modifica, la nostra guida ai prompt di GPT Image 2 spiega la struttura. La guida al virtual try-on tratta il cambio di outfit, mentre la guida alla rimozione di oggetti tratta le cancellazioni.
Quale scegliere
| FLUX.1 Kontext | Modifica con GPT-Image 2 | |
|---|---|---|
| Input per richiesta | Un prompt, un'immagine | Un prompt, un'immagine |
| Limite del file di partenza | 20 MB o 20 megapixel | Richiesta da 1 MiB, Base64 incluso |
| Dimensione del risultato | Circa 1 MP | La dimensione che chiedi, in PNG |
| Link del risultato | 10 minuti | Circa un'ora |
| Stato del modello | Generazione precedente, secondo BFL | Disponibile su OmniaKey |
Scegli Kontext se una pipeline FLUX è già in produzione e per ora vuoi mantenere quella forma di chiamata. Scegli GPT-Image 2 se vuoi la dimensione che decidi tu e un'ora di tempo per scaricare dal link. BFL indirizza i lavori nuovi su FLUX.2, quindi un progetto nuovo è un buon momento per rivedere la scelta.
Sul costo, la pagina dei prezzi di OpenAI (verificata il 2026-10-28) fattura gpt-image-2 per milione di token: $8.00 per l'input immagine, $30.00 per l'output immagine, $2.00 per l'input immagine in cache, e il batch a metà della tariffa standard. Non c'è una riga per singola immagine; la guida alla generazione di immagini ha un calcolatore per una sola immagine.
Domande frequenti
Che cosa fa l'API FLUX Kontext?
Modifica una foto da un'istruzione testuale, con un prompt e un'immagine di input per richiesta (BFL, verificato il 2026-10-28). La pagina di BFL dice che "edits images using simple text prompts".
FLUX Kontext è ancora attuale?
BFL definisce FLUX.1 Kontext un modello di generazione precedente e consiglia FLUX.2 per i progetti nuovi (verificato il 2026-10-28).
Posso modificare una foto via API usando solo il testo?
Sì. Manda una foto e un'istruzione all'endpoint di modifica di GPT-Image 2 e torna una foto nuova. Il 28 ottobre 2026 abbiamo eseguito quattro modifiche così.
Posso concatenare le modifiche?
Sì, con un'attività per passo: ogni risultato diventa la foto di partenza del passo successivo. La nostra catena di tre passi ha conservato le modifiche precedenti sia con la luce serale sia con il cambio di bevanda.
Quanto durano i link al risultato?
Circa un'ora su OmniaKey, mentre il file resta 24 ore (docs.omniakey.com, verificato il 2026-10-28). Scarica il PNG appena l'attività va a buon fine, poi leggi le dimensioni reali.
OmniaKey offre le modifiche di GPT-Image 2 con il flusso di attività qui sopra; i prezzi attuali sono nella pagina dei prezzi.
Modelli citati in questo articolo
Articoli correlati
GPT Image 2: guida ai prompt, struttura, esempi e immagini reali
Otto prompt e nove immagini reali: dove GPT Image 2 ha preso tutto alla lettera, cosa ha aggiunto e come correggerlo.
API di virtual try-on: cambiare outfit al modello con GPT Image 2
Una foto e un prompt cambiano l'outfit. Qui ci sono il codice della richiesta, tre cambi che abbiamo eseguito il 28 ottobre 2026 e dove la modifica sbanda.
API per rimuovere oggetti: togli un oggetto dalla foto con GPT Image 2
Un'istruzione per oggetto è bastata per tutte e tre le rimozioni. Qui trovi il codice della richiesta, i risultati a piena risoluzione e i punti in cui la modifica non è ancora affidabile.
Articoli recenti
- Clapping Cat Meme AI: fai battere le mani al tuo animale con l'image-to-video
- Guida ai prompt di Kling 3.0: struttura, esempi e clip reali
- Guida ai prompt di MiniMax H3: struttura, esempi e clip reali
- Claude Haiku 5.5 vs Sonnet 5.5: codice, costo e velocità
- Guida ai prompt di Wan 3.0: struttura, esempi e clip reali
