dall-e-2, gpt-image-1, den senaste gpt-image-2, samt modellerna nano-banana / nano-banana-2-lite / nano-banana-2 / nano-banana-pro som är anslutna via samma API.
Detta dokument beskriver huvudsakligen användningsflödet för OpenAI Images Edits API, vilket gör att vi enkelt kan använda den officiella OpenAI bildredigeringsfunktionen.
Ansökningsprocess
För att använda OpenAI Images Edits API, börja med att gå till Ace Data Cloud-konsolen för att hämta din API-token, som du kan spara för framtida bruk.
Om du inte har loggat in eller registrerat dig, kommer du automatiskt att omdirigeras till inloggningssidan där du blir inbjuden att registrera dig och logga in. När detta är klart kommer du automatiskt att återvända till den aktuella sidan.
En API-token kan användas för att anropa alla tjänster på plattformen, utan att behöva ansöka separat för varje tjänst. Första gången du ansöker får du en gratis kvot för att prova; om kvoten tar slut kan du ladda på allmän balans i konsolen.
📘 Fullständig dokumentation: OpenAI Images Edits API →
GPT-Image-2 Modell
gpt-image-2 har en mycket tydlig förbättring jämfört med gpt-image-1 i bildredigeringsscenarier:
- Strukturen förblir mer stabil: Vid byte av hud, färgschema eller bakgrund förstörs nästan aldrig den ursprungliga bildens layout och komposition.
- Texten bevaras mer exakt: Bilder som informationsgrafik, affischer, menyer etc. med text förblir tydliga och läsbara efter redigering.
- Stöd för direktöverföring av URL: Förutom traditionell
multipart/form-datafiluppladdning, stödergpt-image-2även att ta emot bild-URL:er i JSON-format, vilket gör det onödigt att först ladda ner bilderna till den lokala enheten, vilket är mycket lämpligt för serverpipeline-integration. - Stöd för direktöverföring av base64: I enlighet med officiella riktlinjer kan
image-fältet också direkt ta emot base64 (data:image/png;base64,...eller ren base64), vilket gör att lokala bilder inte behöver laddas upp till en bildvärd innan redigering. - Stöd för högupplöst omritning: Du kan skicka in en 1K-originalbild och begära 2K / 4K-utdata med
size-parametern, modellen kommer att förstora bilden under redigeringsprocessen.
Officiell omdirigering / Omvänd variant (:official / :reverse)
gpt-image-2 använder som standard den omvända linjen. Genom att använda suffixet på modellnamnet kan du uttryckligen välja linje:
gpt-image-2:official: Officiell omdirigeringslinje. Stödern > 1(returnera flera bilder på en gång) och verklig 2K / 4K, debitering per bild, enhetspriset är 2 gånger det vanligagpt-image-2. För närvarande tillhandahålls detta endast av openai-hk-kanalen, och om linjen inte är tillgänglig returneras ett fel direkt, utan att nedgraderas till den omvända linjen.gpt-image-2:reverse: Helt ekvivalent med standardgpt-image-2(omvänd linje), priset förblir oförändrat.
Nedan gäller begränsningarna för “n”-parametern endast för standard / omvänd linje;gpt-image-2:officialstödern > 1och debiterar per bild.
Stödda size-värden
Begränsningarna för size i redigeringsgränssnittet är helt identiska med de i genereringsgränssnittet — gpt-image-2 kräver att size är auto, tomt, eller i formatet WIDTHxHEIGHT, alla andra former kommer att returnera 400. Alla storlekar (1K / 2K / 4K / anpassade) debiteras enhetligt per bild, oavsett originalbildens upplösning och begärd size.
Övre gränser för anpassade storlekar gäller också: både bredd och höjd måste vara multiplar av 16, långsidan ≤ 3840, totalt antal pixlar ≤ 8,294,400.
Till exempel: om originalbilden är1024x1024, ochsizeanges som2048x2048, kommer modellen att omrita och returnera en 2K-bild; omsizeanges som3840x2160kommer den att returnera en 4K liggande bild; omautoanges eller utelämnas kommer modellen att välja själv. Debiteringen för de tre är densamma.
OmNedan ges två olika verkliga exempel för att uppleva redigeringsförmågan hosn-parametern Redigeringsgränssnittet förgpt-image-2stöder för närvarande inten > 1: denna parameter kommer att tyst ignoreras, oavsett omn=1ellern=10anges, kommer en enda begäran alltid att returnera 1 bild och debiteras endast för 1 bild. Om du behöver få flera kandidatredigeringsresultat på en gång, vänligen initiera flera begärningar parallellt. Denna begränsning gäller också förgpt-image-1/gpt-image-1.5, samt seriernanano-banana/nano-banana-2-lite/nano-banana-2/nano-banana-pro.dall-e-2är för närvarande den enda modellen som ursprungligen stödern > 1för redigering.
gpt-image-2.
Anropmetod ett: JSON + Bild-URL (Rekommenderad)
Skicka en begäran direkt iapplication/json-format, fyll i image-fältet med en bild-URL, modellen kommer att hämta den bilden och redigera den enligt prompt.
Till exempel, nedan är den ursprungliga bilden som genererades med gpt-image-2 som en populärvetenskaplig bild:


Tips:image-fältet stöder också att ta emot en array, till exempel"image": ["url1", "url2", "url3"], upp till 16 referensbilder kan skickas samtidigt för att modellen ska kunna referera till flera bilder vid redigering.
base64 direktöverföring:image(och varje post i arrayen) kan förutom URL också vara base64 —data:image/png;base64,...eller ren base64 fungerar också, lämpligt för lokala bilder som inte vill laddas upp till en bildvärd först. Till exempel:
Anropmetod två: JSON + flera referensbilder
gpt-image-2 stöder att referera till flera bilder för att generera det slutliga resultatet, till exempel att kombinera flera produktbilder till en presentkorg:
Exempel på scenarier: Byt stil + behåll struktur
Här är ett annat exempel, att byta ut en träbokhylla mot en modern flytande hylla, men strikt behålla antalet och arrangemanget av böckerna. Originalbild (genererad medgpt-image-2 träbokhylla):

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

Anropmetod tre: multipart/form-data (kompatibel med OpenAI SDK)
Om du redan använder den officiella OpenAI Python SDK, fungerar den tidigaremultipart/form-data uppladdningsmetoden också, du behöver bara ändra model till gpt-image-2:
OPENAI_BASE_URL sättas till https://api.acedata.cloud/openai, OPENAI_API_KEY sättas till den token du har ansökt om:
Nano Banana serie modeller
nano-banana serien har också integrerat /openai/images/edits i redigeringsscenarier, ändra bara model till något av alternativen i tabellen nedan.
Viktigt: Parameterstöd Nano Banana ansluter till OpenAI-protokollet via ett anpassningslager och stöder endast följande parametrar:model,prompt,image.
imagekan antingen laddas upp som en fil viamultipart/form-data(arbetaren konverterar internt tilldata:<mime>;base64,...för att skicka till upstream), eller så kan bildens URL-sträng skickas direkt som ett formulärfält.- Stöder inte parametrar som
mask,n,size,response_formatetc.; om de anges kommer de att ignoreras.- Returstrukturen följer OpenAI-formatet (
data[].url), mencreatedär alltid0, ochb64_jsonkommer inte att returneras,revised_promptär alltid lika med den ursprungligaprompt.
Anropa via formulär + bild-URL

Anropa via formulär + lokal fil
Asynkron callback
callback_url asynkron callback-mekanism fungerar också för nano-banana, anropsflödet är helt identiskt med andra modeller, se avsnittet Asynkron callback nedan.
Grundläggande användning
Nu kan vi använda kod för att göra anrop, nedan är ett exempel på anrop med CURL:authorization, som kan väljas direkt från rullgardinsmenyn. En annan parameter är model, model är den vi väljer att använda från OpenAI:s officiella modellkategorier, här har vi huvudsakligen 1 typ av modell, detaljer kan ses i de modeller vi tillhandahåller. En annan parameter är prompt, prompt är den text vi anger för att generera bilden. Den sista parametern är image, denna parameter behöver sökvägen till den bild som ska redigeras, bilden som ska redigeras visas nedan:

OPENAI_BASE_URL, som kan sättas till https://api.acedata.cloud/openai, och en variabel för autentisering OPENAI_API_KEY, vars värde hämtas från authorization. På Mac OS kan miljövariablerna sättas med följande kommando:
gift-basket.png genereras i den aktuella katalogen, det specifika resultatet ser ut som följer:

dall-e-2, gpt-image-1 och gpt-image-2, där gpt-image-2 är den rekommenderade modellen, se avsnittet GPT-Image-2-modell ovan.
Asynkron callback
Eftersom OpenAI Images Edits API kan ta längre tid att redigera bilder, om API:t inte svarar under en längre tid, kommer HTTP-förfrågan att hålla anslutningen öppen, vilket leder till extra systemresursförbrukning, så detta API erbjuder också stöd för asynkron callback. Det övergripande flödet är: när klienten initierar en begäran, specificerar den ett extracallback_url-fält, efter att klienten har initierat API-begäran kommer API:t omedelbart att returnera ett resultat som innehåller ett task_id-fält, vilket representerar det aktuella uppdragets ID. När uppdraget är slutfört kommer resultatet av bildredigeringen att skickas till klientens angivna callback_url i POST JSON-format, vilket också inkluderar task_id-fältet, så att uppdragets resultat kan kopplas ihop med ID.
Nedan kommer vi att förstå hur man gör detta genom ett exempel.
Först är Webhook-callback en tjänst som kan ta emot HTTP-förfrågningar, utvecklare bör ersätta med URL:en till sin egen byggda HTTP-server. Här för att underlätta demonstration använder vi en offentlig Webhook-exempelsida https://webhook.site/, öppna denna webbplats för att få en Webhook-URL, som visas i bilden:
Kopiera denna URL så kan den användas som Webhook, exemplet här är https://webhook.site/3d32690d-6780-4187-a65c-870061e8c8ab.
Nästa steg är att ställa in fältet callback_url till ovanstående Webhook URL, samtidigt som vi fyller i motsvarande parametrar, som i följande kod:
task_id fält, data fältet innehåller samma bildredigeringsresultat som vid synkront anrop, och genom task_id fältet kan vi koppla uppgiften.
Felhantering
Vid anrop av API:et, om ett fel uppstår, kommer API:et att returnera motsvarande felkod och information. Till exempel:400 token_mismatched: Bad request, möjligtvis på grund av saknade eller ogiltiga parametrar.400 api_not_implemented: Bad request, möjligtvis på grund av saknade eller ogiltiga parametrar.401 invalid_token: Obehörig, ogiltig eller saknad auktoriseringstoken.429 too_many_requests: För många förfrågningar, du har överskridit hastighetsgränsen.500 api_error: Internt serverfel, något gick fel på servern.

