OpenAI: GPT Image 2
GPT Image 2 genererar och redigerar bilder från text och visuella referenser. Den stöder flexibla bildmått och bearbetar automatiskt bildindata med hög återgivningstrogenhet, med separata kontroller för kvalitet, format och bakgrund för det färdiga materialet.
- Ailoot · Bilder
POST /v1/images/generationsgpt-image-2 - Ailoot Ultra · Bilder
POST /v1/images/generationsgpt-image-2 - Ailoot Ultra · Bilder
POST /v1/images/generationsopenai/gpt-image-2
Om modellen
Den här beskrivningen omfattar modellens förmågor. Tillgängliga indata, utdata och alternativ i Ailoot anges nedan för den valda metoden.
GPT Image 2 är OpenAI:s modell för bildgenerering och bildredigering från text och visuell indata. Den skapar en ny bild från en skriftlig brief och kan använda källbilder för redigeringar eller referensstyrt arbete. Praktiska uppgifter omfattar illustrationer, produktkoncept, visuella kompositioner och ändringar av befintligt material. Den är en separat utgåva från modellerna GPT Image 2.5 Sunburst och Flare, med sitt eget kvalitetsintervall och beteende för indatans återgivningstrogenhet.
För generering beskriver du motiv, scen, komposition, ljus och avsedd stil. För en redigering anger du vad som ska ändras och vad som ska behålla sitt utseende. En produktbrief kan begära en keramiklampa på en ljus yta med en centrerad silhuett och plats för en bildtext; en uppföljande redigering kan ändra bakgrunden samtidigt som lampans form och betraktningsvinkel behålls. De dokumenterade direkta genererings- och redigeringsflödena accepterar prompter på upp till 32 000 tecken och kan returnera en till tio bilder.
Referensredigering tar emot upp till sexton indatabilder. Ange syftet med varje referens så att motiv, bakgrund och visuellt uttryck inte blandas ihop. GPT Image 2 bearbetar automatiskt varje bildindata med hög återgivningstrogenhet; input_fidelity bör utelämnas eftersom den inte kan justeras i denna utgåva. Detta skiljer sig från valet mellan high och low i GPT Image 1 och läget med enbart låg återgivningstrogenhet för indata i GPT Image 1 Mini. Bearbetning av indata med hög återgivningstrogenhet stöder källdetaljer utan att garantera att varje detalj återges oförändrad.
En mask kan identifiera området som ska redigeras. Källbilden och masken måste ha samma format och mått och vara under 50 MB enligt guidens förberedelsekrav; masken behöver också en alfakanal. Om flera indatabilder tillhandahålls gäller maskeringen för den första. Modellen behandlar masken som promptbaserad vägledning snarare än en strikt geometrisk gräns. Beskriv den lokala ändringen och bevarandekraven och undersök sedan det omgivande området efter oavsiktliga skillnader.
GPT Image 2 stöder kvaliteten low, medium, high och auto, med auto som standard. 2.5-familjens inställningar xhigh och max ingår inte i denna utgåvas kvalitetsintervall. Storleken kan vara kvadratisk, liggande, stående, automatisk eller en giltig egen bredd och höjd. Producentens exempel omfattar 1024 × 1024, 1536 × 1024, 1024 × 1536, 2048 × 2048, 2048 × 1152, 3840 × 2160 och 2160 × 3840 pixlar. Välj orientering och detaljnivå för den faktiska layouten i stället för att behandla kvalitet och mått som samma kontroll.
Egna mått måste vara multiplar av sexton pixlar, med en maximal kant på 3840 pixlar, ett förhållande mellan lång och kort kant på högst 3:1 och en area från 655 360 till 8 294 400 pixlar. Dessa villkor gäller samtidigt. Upplösningar över 2560 × 1440 är markerade som experimentella. Ett bildformat som uppfyller en regel kan fortfarande bryta mot en annan, så välj ett stött par mått och beskriv de beskärningskänsliga elementen i briefen.
Utdata är PNG som standard, med JPEG eller WebP också tillgängliga. Komprimering från 0 till 100 stöds för JPEG och WebP. Bakgrunden kan vara opak eller automatisk; den exakta aktuella referensen beskriver transparens för GPT Image 2 som en förhandsversionsfunktion. När du begär transparens använder du PNG eller WebP så att en alfakanal kan behållas. Det dokumenterade strömningsflödet tillåter upp till tre partiella bilder före den färdiga bilden; spara slutmaterialet snarare än en förloppsförhandsvisning. Tillverkarens gränssnitt stöder också batchbearbetning.
Bedöm textens tydlighet, objektens position och bevarandet av källdetaljer i det faktiska resultatet. GPT Image kan ha svårt med exakt text, layoutkänsliga kompositioner och återkommande visuell identitet mellan separata genereringar. För en redigeringsföljd använder du det valda resultatet som nästa källa och anger en konkret ändring knuten till ett synligt problem. GPT Image 2:s användbara utdata är en bild kopplad till en tydlig genererings- eller redigeringsbrief, med indata med hög återgivningstrogenhet, mått och kvalitet valda för just den uppgiften.
Ailoot · Bilder POST /v1/images/generations gpt-image-2
gpt-image-2Start
GPT Image 2 genererar och redigerar bilder från text och visuella referenser. Den stöder flexibla bildmått och bearbetar automatiskt bildindata med hög återgivningstrogenhet, med separata kontroller för kvalitet, format och bakgrund för det färdiga materialet.
- Godkända indata
- Text
- Resultat
- Bilder
Tillgängligt i Ailoot · indata & metoder
Ailoot · Bilder POST /v1/images/generations
- Indatatyper
text- Utdatatyper
image- Utdataformat
- Bildfil
| Fält | Typ | Krav | Värden & gränser | Standard |
|---|---|---|---|---|
Fältmodel | Typstring | KravObligatoriskt | Värden & gränser gpt-image-2 | Standard— |
Fältprompt | Typstring | KravObligatoriskt | Värden & gränser Minsta längd: 1 | Standard— |
Fältn | Typinteger | KravValfritt | Värden & gränser Minimum: 1 | Standard1 |
Fältresponse_format | Typstring | KravValfritt | Värden & gränser url, b64_json | Standard— |
Fältstream | Typboolean | KravValfritt | Värden & gränser | Standardfalse |
Fältsize | Typstring | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältquality | Typstring | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältbackground | Typstring | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältoutput_format | Typstring | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältoutput_compression | Typinteger | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältmoderation | Typstring | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältinput_fidelity | Typstring | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältstyle | Typstring | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Fältpartial_images | Typinteger | KravValfritt | Värden & gränser Beror på modellen | Standard— |
Kombinationer av indatamaterial
Text till bild · Krävs: prompt
Metodparametrar och livscykel
| Parameter | Avtal |
|---|---|
Parametermaterial_types | Avtaltext |
Parameterrequired | Avtalmodel, prompt |
Parameteroptional_controls | Avtalnull |
Parametercontent_type | Avtalapplication/json |
Livscykel: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · Det task_id som faktiskt returnerades eller en post i mediebiblioteket
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Metodernas strukturer och ID:n är exakta; leverantörens funktioner är åtskilda från att begäran tillåts.
Priser
Priser för Ailoot-metoder
POST /v1/images/generations- Textindata
- 0,0025 US$ / 1K
- Indata, bild
- 0,004 US$ / 1K tokens
- Utdata, bild
- 0,015 US$ / 1K tokens
Ailoot reserverar ett uppskattat belopp före en begäran. Efter resultatet slutregleras avgiften utifrån uppmätt förbrukning. Slutreglering för strömning använder den slutliga förbrukningsposten. Så fungerar reservation och slutreglering →
Exempelbegäranden
Ailoot · Bilder
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
export AILOOT_API_KEY
: "${AILOOT_PROMPT_FILE:?Set your actual UTF-8 image brief}"
export AILOOT_PROMPT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "gpt-image-2", "prompt": ""}')
f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 brief")
p['prompt']=f.read_text(encoding="utf-8")
if not p['prompt'].strip():raise SystemExit("Brief must contain text")
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin
def save_images(items):
if not items: raise SystemExit("No completed images; retain the full response")
for index, item in enumerate(items):
encoded=item.get("b64_json")
uri=item.get("url", "")
if not encoded and uri.startswith("data:image/"):
header, separator, encoded=uri.partition(",")
if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
if encoded:
raw=base64.b64decode(encoded,validate=True)
elif uri:
uri=urljoin("https://api.ailoot.ai",uri)
parsed=urlsplit(uri)
if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
raise SystemExit("Invalid returned image URL")
owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
args=["curl","--fail-with-body","--silent","--show-error",uri]
if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
temporary=Path(f"image-{index}.bin")
subprocess.run(args+["-o",str(temporary)],check=True)
raw=temporary.read_bytes()
temporary.unlink()
else: raise SystemExit("Image has neither bytes nor URL")
if not raw: raise SystemExit("Empty image result")
ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
Path(f"image-{index}.{ext}").write_bytes(raw)
print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT
from openai import OpenAI
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin
def save_images(items):
if not items: raise SystemExit("No completed images; retain the full response")
for index, item in enumerate(items):
encoded=item.get("b64_json")
uri=item.get("url", "")
if not encoded and uri.startswith("data:image/"):
header, separator, encoded=uri.partition(",")
if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
if encoded:
raw=base64.b64decode(encoded,validate=True)
elif uri:
uri=urljoin("https://api.ailoot.ai",uri)
parsed=urlsplit(uri)
if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
raise SystemExit("Invalid returned image URL")
owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
args=["curl","--fail-with-body","--silent","--show-error",uri]
if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
temporary=Path(f"image-{index}.bin")
subprocess.run(args+["-o",str(temporary)],check=True)
raw=temporary.read_bytes()
temporary.unlink()
else: raise SystemExit("Image has neither bytes nor URL")
if not raw: raise SystemExit("Empty image result")
ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
Path(f"image-{index}.{ext}").write_bytes(raw)
print("Every returned image saved; complete response metadata retained")
f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Set your actual UTF-8 image brief file")
request={'model': 'gpt-image-2', 'prompt': ''}
request["prompt"]=f.read_text(encoding="utf-8")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.images.generate(**request)
Path("sdk-result.txt").write_text(str(result),encoding="utf-8")
save_images([{"b64_json":getattr(item,"b64_json",None),"url":getattr(item,"url",None)} for item in result.data])
import OpenAI from "openai";
import { readFileSync, writeFileSync } from "node:fs";
const key=process.env.AILOOT_API_KEY;
if(!key) throw new Error("Set your actual Ailoot API key");
const client=new OpenAI({baseURL:"https://api.ailoot.ai/v1",apiKey:key,maxRetries:0});
const request={"model": "gpt-image-2", "prompt": ""};
if(!process.env.AILOOT_PROMPT_FILE)throw new Error("Set your actual UTF-8 image brief file");
request.prompt=readFileSync(process.env.AILOOT_PROMPT_FILE,"utf8");
const result=await client.images.generate(request);
writeFileSync("sdk-result.json",JSON.stringify(result,null,2));
if(!result.data?.length) throw new Error("No completed images");
for(let index=0;index<result.data.length;index++) {
const item=result.data[index];let encoded=item.b64_json,uri=item.url||"",raw;
if(!encoded && uri.startsWith("data:image/")) {
const comma=uri.indexOf(",");if(comma<0 || !uri.slice(0,comma).includes(";base64")) throw new Error("Unsupported image data URI");
encoded=uri.slice(comma+1);
}
if(encoded) {
if(encoded.length%4!==0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(encoded)) throw new Error("Invalid Base64");
raw=Buffer.from(encoded,"base64");
} else if(uri) {
const u=new URL(uri,"https://api.ailoot.ai");
if(u.protocol!=="https:" || u.username || u.password) throw new Error("Invalid returned URL");
const owned=u.origin==="https://api.ailoot.ai" && u.pathname.startsWith("/v1/media/assets/") && u.pathname.endsWith("/content");
const response=await fetch(u,{headers:owned?{Authorization:"Bearer "+key}:{},redirect:"manual"});
if(!response.ok) throw new Error("Image content download failed: "+response.status);
raw=Buffer.from(await response.arrayBuffer());
} else throw new Error("Image has neither bytes nor URL");
if(!raw.length) throw new Error("Empty image result");
const ext=raw.subarray(0,4).equals(Buffer.from([137,80,78,71]))?"png":raw[0]===255&&raw[1]===216?"jpg":raw.toString("ascii",0,4)==="RIFF"&&raw.toString("ascii",8,12)==="WEBP"?"webp":raw.toString("utf8").trimStart().startsWith("<svg")||raw.toString("utf8").trimStart().startsWith("<?xml")?"svg":"bin";
writeFileSync(`image-${index}.${ext}`,raw);
}
console.log("Every returned image saved; sdk-result.json retains complete metadata");
Ta emot och spara resultat
Ailoot · Bilder
Ladda ned varje returnerad bild eller spara dess Base64-innehåll
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Behåll alla färdiga resultat
Spara varje färdig bild; hämta varje returnerad URL eller avkoda dess Base64-innehåll.
Spara varje dataobjekt. Avkoda varje b64_json-värde eller hämta innehållet via varje returnerad signerad URL. Välj filändelse utifrån den faktiska MIME-typen och filens byteinnehåll.
Om det ursprungliga svaret behöver kontrolleras
Om resultatet av en bildgenerering eller bildredigering behöver kontrolleras ska du behålla de ursprungliga värdena för operation_id/X-Client-Request-ID och den returnerade resultatinformationen. Hämta befintliga resultat som tillhör dig genom mediebiblioteket med de faktiska task_id- eller asset_id-värdena. Skicka inte genererings- eller redigeringsförfrågan igen och bygg inte en URL för statusavläsning från operation_id.
Svarsfält
| Fält | Typ |
|---|---|
Fältcreated | Typinteger |
Fältdata[].url | Typstring |
Fältdata[].b64_json | Typbase64 string |
Fältusage | Typobject |
Fel och nästa steg
| Svar | Villkor | Nästa steg |
|---|---|---|
Svar400 · invalid_request_error | VillkorOgiltiga obligatoriska fält, ogiltig representation av underlaget eller ogiltigt parametervärde | Nästa stegKorrigera de angivna fälten före en ny begäran om att skapa. |
Svarserver_error | VillkorDet returnerade svaret anger att operationen eller resultatet behöver kontrolleras | Nästa stegSpara det ursprungliga operations- eller uppgifts-ID som returnerades, förfrågans headers och svaret. Fortsätt att läsa den ursprungliga operationen med de läsmetoder som stöds. Skicka inte skapandeförfrågan igen. |
Alias
Modellalias
Ailoot gpt-image-2
Ailoot Ultra gpt-image-2, openai/gpt-image-2
Alias för metodsökvägar
/v1/images
Relaterade anropar-ID:n
Ailoot Ultra · Bilder POST /v1/images/generations gpt-image-2
gpt-image-2gpt-image-2openai/gpt-image-2
Start
GPT Image 2 genererar och redigerar bilder från text och visuella referenser. Den stöder flexibla bildmått och bearbetar automatiskt bildindata med hög återgivningstrogenhet, med separata kontroller för kvalitet, format och bakgrund för det färdiga materialet.
- Godkända indata
- Text
- Resultat
- Bilder
Tillgängligt i Ailoot · indata & metoder
Ailoot Ultra · Bilder POST /v1/images/generations
- Indatatyper
text- Utdatatyper
image
| Fält | Typ | Krav | Värden & gränser | Standard |
|---|---|---|---|---|
Fältmodel | Typstring | KravObligatoriskt | Värden & gränser gpt-image-2 | Standard— |
Fältprompt | Typstring | KravObligatoriskt | Värden & gränser Maximal längd: 32 000 | Standard— |
Fältsize | Typstring | KravValfritt | Värden & gränser Villkor: Använd auto eller WIDTHxHEIGHT med båda dimensionerna delbara med 16. Den längsta sidan är högst 3,840 pixlar och det totala antalet pixlar högst 8,300,000. | Standardauto |
Fältbackground | Typstring | KravValfritt | Värden & gränser transparent, opaque, auto | Standardauto |
Fältmoderation | Typstring | KravValfritt | Värden & gränser low, auto Villkor: Använd auto för standardmoderering av innehåll. | Standard— |
Fältn | Typinteger | KravValfritt | Värden & gränser Minimum: 1 Maximum: 10 | Standard1 |
Fältquality | Typstring | KravValfritt | Värden & gränser auto, high, medium, low | Standardauto |
Fältoutput_compression | Typinteger | KravValfritt | Värden & gränser Minimum: 0 Maximum: 100 Villkor: Gäller JPEG- och WebP-utdata; skicka det dokumenterade heltalsvärdet. | Standard100 |
Fältoutput_format | Typstring | KravValfritt | Värden & gränser webp, png, jpeg | Standardpng |
Fältstream | Typboolean | KravValfritt | Värden & gränser false Villkor: Denna rutt returnerar ett fullständigt JSON-svar. | Standardfalse |
Metodparametrar och livscykel
| Parameter | Avtal |
|---|---|
Parametercontent_type | Avtalapplication/json |
Parameterrequired | Avtalprompt, model |
Parametermaterial_types | Avtaltext |
Parameteroptional | Avtalsize, background, moderation, n, quality, output_compression, output_format, stream |
Parameterconditions | AvtalEn genomskinlig bakgrund kräver PNG eller WebP., Utdatakomprimering gäller JPEG eller WebP., Den valda metoden genererar från text. Tillverkarens beskrivna inställningar för redigering och strömning är separata funktioner. |
Livscykel: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · Det task_id som faktiskt returnerades eller en post i mediebiblioteket
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Priser
Så beräknas slutavgiften
De visade priserna används för att uppskatta kostnaden före genereringen. Den slutliga debiteringen beräknas utifrån den kostnad som registrerats för den ursprungliga genereringen. Uppmätt längd på resultatet och uppskattade mängder utgör inte den slutliga debiterbara mängden.
Tariffuppgifter lägger inte till begäransalternativ. Parametrar som stöds anges för den valda metoden.
- Snabbt läge
- Ej angivet När snabbt läge är valt
- Flex-läge
- Ej angivet När läget flex är valt
- Högsta resonemangsnivå
- Ej angivet När den högsta resonemangsnivån använder standardjusteringen (default)
Uppskattade priser för jämförelse
Priser efter konfiguration
Matcha varje avgift mot de visade villkoren. Använd ett pris för varje uppsättning alternativa konfigurationer.
| Konfiguration | Prislista | Prognostiserad mängd | Avgift |
|---|---|---|---|
| KonfigurationGrundpriser för token | PrislistaGrundpris | Prognostiserad mängd— | Avgift Indata · Indatatoken · Uppskattning endast för jämförelse — / 1K token Utdata · Utdatatoken · Uppskattning endast för jämförelse — / 1K token Indata · Cacheläsning · Uppskattning endast för jämförelse — / 1K token Indata · Skrivning till cache · Uppskattning endast för jämförelse — / 1K token Indata · Skrivning till cache, 1 tim · Uppskattning endast för jämförelse — / 1K token |
| KonfigurationUppskattad genereringskostnad | Prislista— | Prognostiserad mängduppskattning för en generering | Avgift Utdata · Uppskattad genereringskostnad · Uppskattning endast för jämförelse $0.24576 uppskattning före generering Denna uppskattning är varken en extra avgift eller ett fast pris för den slutförda genereringen. |
Ailoot reserverar ett uppskattat belopp före en begäran. Efter resultatet slutregleras avgiften utifrån uppmätt förbrukning. Slutreglering för strömning använder den slutliga förbrukningsposten. Så fungerar reservation och slutreglering →
Exempelbegäranden
Ailoot Ultra · Bilder
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p={'prompt': 'A cute baby sea otter', 'model': 'gpt-image-2', 'size': '1024x1024', 'n': 1, 'background': 'auto', 'moderation': 'auto', 'output_format': 'png'}
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin
def save_images(items):
if not items: raise SystemExit("No completed images; retain the full response")
for index, item in enumerate(items):
encoded=item.get("b64_json")
uri=item.get("url", "")
if not encoded and uri.startswith("data:image/"):
header, separator, encoded=uri.partition(",")
if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
if encoded:
raw=base64.b64decode(encoded,validate=True)
elif uri:
uri=urljoin("https://api.ailoot.ai",uri)
parsed=urlsplit(uri)
if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
raise SystemExit("Invalid returned image URL")
owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
args=["curl","--fail-with-body","--silent","--show-error",uri]
if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
temporary=Path(f"image-{index}.bin")
subprocess.run(args+["-o",str(temporary)],check=True)
raw=temporary.read_bytes()
temporary.unlink()
else: raise SystemExit("Image has neither bytes nor URL")
if not raw: raise SystemExit("Empty image result")
ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
Path(f"image-{index}.{ext}").write_bytes(raw)
print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT
Ta emot och spara resultat
Ailoot Ultra · Bilder
Ladda ned varje returnerad bild eller spara dess Base64-innehåll
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Andra innehållsläsningar
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \
-H "Authorization: Bearer $AILOOT_API_KEY" -o owned-assets.json
# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.
Behåll alla färdiga resultat
Spara varje färdig bild; hämta varje returnerad URL eller avkoda dess Base64-innehåll.
Spara hela svaret med headers, samtliga faktiska resultat, de ursprungliga returnerade identifierarna och alla användningsfält. Hämta den ursprungliga operationen utan att skicka skapandeförfrågan igen.
Om det ursprungliga svaret behöver kontrolleras
Behåll det returnerade värdet för X-Client-Request-ID för avstämning. Läs endast av resultat via de task_id/asset_id-värden som faktiskt returnerades eller via det mediebibliotek som tillhör dig. Bygg aldrig en uppgifts-URL från operations-ID:t och skicka aldrig skapandeförfrågan igen.
Svarsfält
| Fält | Typ |
|---|---|
Fältcreated | Typ |
Fältdata[].url | Typ |
Fältdata[].b64_json | Typ |
Fältusage | Typ |
Alias
Modellalias
Ailoot gpt-image-2
Ailoot Ultra gpt-image-2, openai/gpt-image-2
Alias för metodsökvägar
/v1/images
Relaterade anropar-ID:n
Ailoot Ultra · Bilder POST /v1/images/generations openai/gpt-image-2
openai/gpt-image-2gpt-image-2openai/gpt-image-2
Start
GPT Image 2 genererar och redigerar bilder från text och visuella referenser. Den stöder flexibla bildmått och bearbetar automatiskt bildindata med hög återgivningstrogenhet, med separata kontroller för kvalitet, format och bakgrund för det färdiga materialet.
- Godkända indata
- Text · Bilder
- Resultat
- Bilder
Tillgängligt i Ailoot · indata & metoder
Ailoot Ultra · Bilder POST /v1/images/generations
- Indatatyper
text,image- Utdatatyper
image
| Fält | Typ | Krav | Värden & gränser | Standard |
|---|---|---|---|---|
Fältmodel | Typstring | KravObligatoriskt | Värden & gränser openai/gpt-image-2 | Standard— |
Fältprompt | Typstring | KravObligatoriskt | Värden & gränser Minsta längd: 1 | Standard— |
Fältaspect_ratio | Typstring | KravValfritt | Värden & gränser 1:1, 3:2, 2:3, 4:3, 3:4, 16:9, 9:16, 21:9, auto | Standard— |
Fältquality | Typstring | KravValfritt | Värden & gränser auto, low, medium, high | Standard— |
Fältbackground | Typstring | KravValfritt | Värden & gränser auto, opaque | Standard— |
Fältn | Typinteger | KravValfritt | Värden & gränser Minimum: 1 Maximum: 10 | Standard— |
Fältinput_references | Typarray | KravValfritt | Värden & gränser Minsta antal objekt: 0 Maximalt antal objekt: 16 | Standard— |
Fältoutput_compression | Typinteger | KravValfritt | Värden & gränser Minimum: 0 Maximum: 100 | Standard— |
Fältprovider | Typobject | KravValfritt | Värden & gränser | Standard— |
Metodparametrar och livscykel
| Parameter | Avtal |
|---|---|
Parametercontent_type | Avtalapplication/json |
Parameterrequired | Avtalmodel, prompt |
Parametermaterial_types | Avtaltext, image |
Livscykel: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · Det task_id som faktiskt returnerades eller en post i mediebiblioteket
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Priser
Så beräknas slutavgiften
De visade priserna används för att uppskatta kostnaden före genereringen. Den slutliga debiteringen beräknas utifrån den kostnad som registrerats för den ursprungliga genereringen. Uppmätt längd på resultatet och uppskattade mängder utgör inte den slutliga debiterbara mängden.
Tariffuppgifter lägger inte till begäransalternativ. Parametrar som stöds anges för den valda metoden.
- Snabbt läge
- Ej angivet När snabbt läge är valt
- Flex-läge
- Ej angivet När läget flex är valt
- Högsta resonemangsnivå
- Ej angivet När den högsta resonemangsnivån använder standardjusteringen (default)
Uppskattade priser för jämförelse
Priser efter konfiguration
Matcha varje avgift mot de visade villkoren. Använd ett pris för varje uppsättning alternativa konfigurationer.
| Konfiguration | Prislista | Prognostiserad mängd | Avgift |
|---|---|---|---|
| KonfigurationGrundpriser för token | PrislistaGrundpris | Prognostiserad mängd— | Avgift Indata · Indatatoken · Uppskattning endast för jämförelse — / 1K token Utdata · Utdatatoken · Uppskattning endast för jämförelse — / 1K token Indata · Cacheläsning · Uppskattning endast för jämförelse — / 1K token Indata · Skrivning till cache · Uppskattning endast för jämförelse — / 1K token Indata · Skrivning till cache, 1 tim · Uppskattning endast för jämförelse — / 1K token |
| KonfigurationUppskattad genereringskostnad | Prislista— | Prognostiserad mängduppskattning för en generering | Avgift Utdata · Uppskattad genereringskostnad · Uppskattning endast för jämförelse $0.24576 uppskattning före generering Denna uppskattning är varken en extra avgift eller ett fast pris för den slutförda genereringen. |
Ailoot reserverar ett uppskattat belopp före en begäran. Efter resultatet slutregleras avgiften utifrån uppmätt förbrukning. Slutreglering för strömning använder den slutliga förbrukningsposten. Så fungerar reservation och slutreglering →
Exempelbegäranden
Ailoot Ultra · Bilder
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p={'model': 'openai/gpt-image-2', 'prompt': 'a red panda astronaut floating in space, studio lighting'}
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin
def save_images(items):
if not items: raise SystemExit("No completed images; retain the full response")
for index, item in enumerate(items):
encoded=item.get("b64_json")
uri=item.get("url", "")
if not encoded and uri.startswith("data:image/"):
header, separator, encoded=uri.partition(",")
if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
if encoded:
raw=base64.b64decode(encoded,validate=True)
elif uri:
uri=urljoin("https://api.ailoot.ai",uri)
parsed=urlsplit(uri)
if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
raise SystemExit("Invalid returned image URL")
owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
args=["curl","--fail-with-body","--silent","--show-error",uri]
if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
temporary=Path(f"image-{index}.bin")
subprocess.run(args+["-o",str(temporary)],check=True)
raw=temporary.read_bytes()
temporary.unlink()
else: raise SystemExit("Image has neither bytes nor URL")
if not raw: raise SystemExit("Empty image result")
ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
Path(f"image-{index}.{ext}").write_bytes(raw)
print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT
Ta emot och spara resultat
Ailoot Ultra · Bilder
Ladda ned varje returnerad bild eller spara dess Base64-innehåll
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Andra innehållsläsningar
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \
-H "Authorization: Bearer $AILOOT_API_KEY" -o owned-assets.json
# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.
Behåll alla färdiga resultat
Spara varje färdig bild; hämta varje returnerad URL eller avkoda dess Base64-innehåll.
Spara hela svaret med headers, samtliga faktiska resultat, de ursprungliga returnerade identifierarna och alla användningsfält. Hämta den ursprungliga operationen utan att skicka skapandeförfrågan igen.
Om det ursprungliga svaret behöver kontrolleras
Behåll det returnerade värdet för X-Client-Request-ID för avstämning. Läs endast av resultat via de task_id/asset_id-värden som faktiskt returnerades eller via det mediebibliotek som tillhör dig. Bygg aldrig en uppgifts-URL från operations-ID:t och skicka aldrig skapandeförfrågan igen.
Svarsfält
| Fält | Typ |
|---|---|
Fältcreated | Typ |
Fältdata[].url | Typ |
Fältdata[].b64_json | Typ |
Fältusage | Typ |
Alias
Modellalias
Ailoot gpt-image-2
Ailoot Ultra gpt-image-2, openai/gpt-image-2
Alias för metodsökvägar
/v1/images
Relaterade anropar-ID:n
FAQ · OpenAI: GPT Image 2
- Vilka indata och resultat finns?
POST /v1/images/generations·gpt-image-2:text→imagePOST /v1/images/generations·gpt-image-2:text→imagePOST /v1/images/generations·openai/gpt-image-2:text,image→image- Vilka fält använder begäran?
POST /v1/images/generations·gpt-image-2:model,prompt,n,response_format,streamPOST /v1/images/generations·gpt-image-2:model,prompt,size,background,moderation,n,quality,output_compression,output_format,streamPOST /v1/images/generations·openai/gpt-image-2:model,prompt,aspect_ratio,quality,background,n,input_references,output_compression,provider- Vilka gränser gäller?
POST /v1/images/generations·gpt-image-2:n.minimum:1POST /v1/images/generations·gpt-image-2:prompt.maximum_length:32000;n.minimum:1;n.maximum:10;output_compression.minimum:0;output_compression.maximum:100POST /v1/images/generations·openai/gpt-image-2:n.minimum:1;n.maximum:10;output_compression.minimum:0;output_compression.maximum:100