OpenAI: GPT Image 2
GPT Image 2 genereert en bewerkt beelden op basis van tekst en visuele referenties. Het ondersteunt flexibele beeldafmetingen en verwerkt beeldinvoer automatisch met hoge getrouwheid, met afzonderlijke regelingen voor kwaliteit, formaat en achtergrond van het afgewerkte bestand.
- Ailoot · Afbeeldingen
POST /v1/images/generationsgpt-image-2 - Ailoot Ultra · Afbeeldingen
POST /v1/images/generationsgpt-image-2 - Ailoot Ultra · Afbeeldingen
POST /v1/images/generationsopenai/gpt-image-2
Over het model
Deze beschrijving gaat over de mogelijkheden van het model. De via Ailoot beschikbare invoer, uitvoer en opties staan hieronder voor de geselecteerde methode.
GPT Image 2 is het model van OpenAI voor beeldgeneratie en -bewerking op basis van tekst en visuele invoer. Het maakt een nieuw beeld op basis van een geschreven briefing en kan bronbeelden gebruiken voor bewerkingen of werk op basis van referenties. Praktische taken omvatten illustraties, productconcepten, visuele composities en wijzigingen aan een bestaand beeld. Het is een afzonderlijke editie naast GPT Image 2.5 Sunburst en Flare, met een eigen kwaliteitsbereik en gedrag voor invoergetrouwheid.
Beschrijf voor generatie het onderwerp, de scène, compositie, het licht en de beoogde stijl. Benoem bij een bewerking wat moet veranderen en wat zijn uiterlijk moet behouden. Een productbriefing kan een keramische lamp op een bleek oppervlak vragen, met een gecentreerd silhouet en ruimte voor een bijschrift; een vervolgbewerking kan de achtergrond veranderen met behoud van de vorm en kijkhoek van de lamp. De gedocumenteerde directe generatie- en bewerkingsworkflows aanvaarden prompts tot 32.000 tekens en kunnen één tot tien beelden opleveren.
Bewerking met referenties aanvaardt maximaal zestien invoerbeelden. Geef het doel van elke referentie op, zodat een onderwerp, achtergrond en visuele uitwerking niet door elkaar worden gehaald. GPT Image 2 verwerkt elk invoerbeeld automatisch met hoge getrouwheid; input_fidelity moet worden weggelaten omdat die voor deze editie niet instelbaar is. Dit verschilt van de keuze high of low bij GPT Image 1 en de invoergetrouwheidsmodus met alleen low van GPT Image 1 Mini. Invoerverwerking met hoge getrouwheid ondersteunt brondetails zonder te garanderen dat elk detail ongewijzigd wordt gereproduceerd.
Een masker kan het te bewerken gebied aanduiden. Volgens de voorbereidingsvereisten van de handleiding moeten bronbeeld en masker hetzelfde formaat en dezelfde afmetingen hebben en kleiner zijn dan 50 MB; het masker heeft ook een alfakanaal nodig. Als meerdere invoerbeelden worden aangeleverd, geldt het masker voor het eerste. Het model behandelt het masker als promptgestuurde richtlijn, niet als een strikte geometrische grens. Beschrijf de lokale wijziging en vereisten voor behoud en controleer daarna het omliggende gebied op onbedoelde verschillen.
GPT Image 2 ondersteunt de kwaliteit low, medium, high en auto, met auto als standaard. De instellingen xhigh en max van de 2.5-familie behoren niet tot het kwaliteitsbereik van deze editie. Het formaat kan vierkant, liggend, staand, automatisch of een geldige aangepaste breedte en hoogte zijn. De voorbeelden van de producent omvatten 1.024 × 1.024, 1.536 × 1.024, 1.024 × 1.536, 2.048 × 2.048, 2.048 × 1.152, 3.840 × 2.160 en 2.160 × 3.840 pixels. Kies de oriëntatie en het detailniveau voor de daadwerkelijke lay-out, in plaats van kwaliteit en afmetingen als dezelfde regeling te beschouwen.
Aangepaste afmetingen moeten veelvouden van zestien pixels zijn, met een maximale zijde van 3.840 pixels, een verhouding tussen de lange en korte zijde van maximaal 3:1 en een oppervlakte van 655.360 tot 8.294.400 pixels. Deze voorwaarden gelden tegelijk. Resoluties boven 2.560 × 1.440 zijn als experimenteel gemarkeerd. Een kader dat aan één regel voldoet, kan nog steeds tegen een andere ingaan. Kies dus een ondersteund paar afmetingen en beschrijf de elementen die gevoelig zijn voor uitsnijden in de briefing.
De uitvoer is standaard PNG; JPEG of WebP is ook beschikbaar. Compressie van 0 tot 100 wordt ondersteund voor JPEG en WebP. De achtergrond kan ondoorzichtig of automatisch zijn; de specifieke huidige referentie beschrijft transparantie voor GPT Image 2 als een previewmogelijkheid. Gebruik bij het aanvragen van transparantie PNG of WebP, zodat een alfakanaal kan worden behouden. De gedocumenteerde streamingworkflow laat maximaal drie gedeeltelijke beelden toe vóór het afgewerkte beeld; bewaar het eindbestand en geen voortgangsvoorvertoning. De interface van de fabrikant ondersteunt ook batchverwerking.
Beoordeel teksthelderheid, de positie van objecten en het behoud van brondetails in het werkelijke resultaat. GPT Image kan moeite hebben met nauwkeurige belettering, lay-outgevoelige composities en terugkerende visuele identiteit over afzonderlijke generaties heen. Gebruik voor een reeks bewerkingen het gekozen resultaat als volgende bron en geef een concrete wijziging die bij een zichtbaar probleem hoort. De bruikbare uitvoer van GPT Image 2 is een beeld dat verbonden is met een duidelijke generatie- of bewerkingsbriefing, met invoer met hoge getrouwheid, afmetingen en kwaliteit die voor die specifieke taak zijn gekozen.
Ailoot · Afbeeldingen POST /v1/images/generations gpt-image-2
gpt-image-2Aan de slag
GPT Image 2 genereert en bewerkt beelden op basis van tekst en visuele referenties. Het ondersteunt flexibele beeldafmetingen en verwerkt beeldinvoer automatisch met hoge getrouwheid, met afzonderlijke regelingen voor kwaliteit, formaat en achtergrond van het afgewerkte bestand.
- Toegestane invoer
- Tekst
- Resultaten
- Afbeeldingen
Beschikbaar in Ailoot · invoer en methoden
Ailoot · Afbeeldingen POST /v1/images/generations
- Invoer
text- Uitvoer
image- Uitvoerformaat
- Afbeeldingsbestand
| Veld | Type | Vereiste | Waarden en limieten | Standaard |
|---|---|---|---|---|
Veldmodel | Typestring | VereisteVereist | Waarden en limieten gpt-image-2 | Standaard— |
Veldprompt | Typestring | VereisteVereist | Waarden en limieten Minimumlengte: 1 | Standaard— |
Veldn | Typeinteger | VereisteOptioneel | Waarden en limieten Minimum: 1 | Standaard1 |
Veldresponse_format | Typestring | VereisteOptioneel | Waarden en limieten url, b64_json | Standaard— |
Veldstream | Typeboolean | VereisteOptioneel | Waarden en limieten | Standaardfalse |
Veldsize | Typestring | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
Veldquality | Typestring | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
Veldbackground | Typestring | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
Veldoutput_format | Typestring | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
Veldoutput_compression | Typeinteger | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
Veldmoderation | Typestring | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
Veldinput_fidelity | Typestring | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
Veldstyle | Typestring | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
Veldpartial_images | Typeinteger | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
Combinaties van invoermaterialen
Tekst naar afbeelding · Vereist: prompt
Methodeparameters en levenscyclus
| Parameter | Contract |
|---|---|
Parametermaterial_types | Contracttext |
Parameterrequired | Contractmodel, prompt |
Parameteroptional_controls | Contractnull |
Parametercontent_type | Contractapplication/json |
Levenscyclus: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · daadwerkelijk teruggegeven task_id of record in de mediabibliotheek
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
De methodestructuren en ID’s zijn exact; de mogelijkheden van de leverancier staan los van toelating.
Tarieven
Ailoot-methodetarieven
POST /v1/images/generations- Tekstinvoer
- US$ 0,0025 / 1K
- Invoer, afbeelding
- US$ 0,004 / 1K tokens
- Uitvoer, afbeelding
- US$ 0,015 / 1K tokens
Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. Zo werken reservering en afrekening →
Voorbeeldverzoeken
Ailoot · Afbeeldingen
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");
Resultaten ophalen en opslaan
Ailoot · Afbeeldingen
Download elke teruggegeven afbeelding of sla de Base64-inhoud ervan op
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Alle voltooide resultaten bewaren
Sla elke voltooide afbeelding op; haal elke teruggegeven URL op of decodeer de bijbehorende Base64-inhoud.
Sla elk gegevensitem op. Decodeer elke b64_json of haal elke teruggegeven ondertekende URL op. Kies een bestandsextensie op basis van de daadwerkelijke MIME/bytes.
Als het oorspronkelijke antwoord moet worden gecontroleerd
Als het resultaat van een afbeeldingsgeneratie of -bewerking gecontroleerd moet worden, bewaar dan de oorspronkelijke operation_id/X-Client-Request-ID en de teruggegeven resultaatinformatie. Haal bestaande eigen resultaten terug via de mediabibliotheek met daadwerkelijk teruggegeven task_id- of asset_id-waarden. Dien de generatie- of bewerkingsaanvraag niet opnieuw in en stel geen polling-URL samen op basis van operation_id.
Antwoordvelden
| Veld | Type |
|---|---|
Veldcreated | Typeinteger |
Velddata[].url | Typestring |
Velddata[].b64_json | Typebase64 string |
Veldusage | Typeobject |
Fouten en vervolgstappen
| Antwoord | Voorwaarde | Volgende stap |
|---|---|---|
Antwoord400 · invalid_request_error | VoorwaardeVerplichte velden, de materiaalrepresentatie of een parameterwaarde zijn ongeldig | Volgende stapCorrigeer de aangegeven velden vóór een nieuwe aanmaakaanvraag. |
Antwoordserver_error | VoorwaardeDe teruggegeven respons geeft aan dat de bewerking of het resultaat gecontroleerd moet worden | Volgende stapBewaar de oorspronkelijk teruggegeven bewerkings-/taak-ID, aanvraagheaders en respons; blijf de oorspronkelijke bewerking uitlezen via de ondersteunde leesaanvragen. Dien de aanmaakaanvraag niet opnieuw in. |
Aliasnamen
Modelaliasnamen
Ailoot gpt-image-2
Ailoot Ultra gpt-image-2, openai/gpt-image-2
Aliasnamen voor methodepaden
/v1/images
Gerelateerde aanroeper-ID’s
Ailoot Ultra · Afbeeldingen POST /v1/images/generations gpt-image-2
gpt-image-2gpt-image-2openai/gpt-image-2
Aan de slag
GPT Image 2 genereert en bewerkt beelden op basis van tekst en visuele referenties. Het ondersteunt flexibele beeldafmetingen en verwerkt beeldinvoer automatisch met hoge getrouwheid, met afzonderlijke regelingen voor kwaliteit, formaat en achtergrond van het afgewerkte bestand.
- Toegestane invoer
- Tekst
- Resultaten
- Afbeeldingen
Beschikbaar in Ailoot · invoer en methoden
Ailoot Ultra · Afbeeldingen POST /v1/images/generations
- Invoer
text- Uitvoer
image
| Veld | Type | Vereiste | Waarden en limieten | Standaard |
|---|---|---|---|---|
Veldmodel | Typestring | VereisteVereist | Waarden en limieten gpt-image-2 | Standaard— |
Veldprompt | Typestring | VereisteVereist | Waarden en limieten Maximumlengte: 32.000 | Standaard— |
Veldsize | Typestring | VereisteOptioneel | Waarden en limieten Voorwaarden: Gebruik auto of WIDTHxHEIGHT met beide afmetingen deelbaar door 16. De langste zijde bedraagt hoogstens 3,840 pixels en de totale grootte hoogstens 8,300,000 pixels. | Standaardauto |
Veldbackground | Typestring | VereisteOptioneel | Waarden en limieten transparent, opaque, auto | Standaardauto |
Veldmoderation | Typestring | VereisteOptioneel | Waarden en limieten low, auto Voorwaarden: Gebruik auto voor standaardmoderatie van inhoud. | Standaard— |
Veldn | Typeinteger | VereisteOptioneel | Waarden en limieten Minimum: 1 Maximum: 10 | Standaard1 |
Veldquality | Typestring | VereisteOptioneel | Waarden en limieten auto, high, medium, low | Standaardauto |
Veldoutput_compression | Typeinteger | VereisteOptioneel | Waarden en limieten Minimum: 0 Maximum: 100 Voorwaarden: Geldt voor JPEG- en WebP-uitvoer; verstuur de gedocumenteerde gehele waarde. | Standaard100 |
Veldoutput_format | Typestring | VereisteOptioneel | Waarden en limieten webp, png, jpeg | Standaardpng |
Veldstream | Typeboolean | VereisteOptioneel | Waarden en limieten false Voorwaarden: Deze route geeft één volledig JSON-antwoord terug. | Standaardfalse |
Methodeparameters en levenscyclus
| Parameter | Contract |
|---|---|
Parametercontent_type | Contractapplication/json |
Parameterrequired | Contractprompt, model |
Parametermaterial_types | Contracttext |
Parameteroptional | Contractsize, background, moderation, n, quality, output_compression, output_format, stream |
Parameterconditions | ContractVoor een transparante achtergrond is PNG of WebP vereist., Uitvoercompressie geldt voor JPEG of WebP., De geselecteerde methode genereert op basis van tekst. De bewerkings- en streamingopties die voor de fabrikant worden beschreven, zijn afzonderlijke mogelijkheden. |
Levenscyclus: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · daadwerkelijk teruggegeven task_id of record in de mediabibliotheek
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Tarieven
Zo worden de uiteindelijke kosten berekend
De getoonde tarieven ramen de kosten vóór de generatie. De definitieve kosten worden berekend op basis van de kosten die voor de oorspronkelijke generatie zijn geregistreerd. De gemeten duur van het gegenereerde resultaat en de geraamde hoeveelheden vormen niet de definitieve factureerbare hoeveelheid.
Tariefverwijzingen voegen geen verzoekopties toe. Ondersteunde parameters staan bij de geselecteerde methode.
- Snelle modus
- Niet opgegeven Wanneer de snelle modus geselecteerd is
- Flex-modus
- Niet opgegeven Wanneer de flex-modus geselecteerd is
- Maximale redeneerinspanning
- Niet opgegeven Wanneer voor maximale redeneerinspanning de default-aanpassing wordt gebruikt
Geschatte tarieven ter vergelijking
Prijzen per configuratie
Koppel elke kostenpost aan de getoonde voorwaarden. Gebruik één tarief voor elke groep alternatieve configuraties.
| Configuratie | Tariefstaffel | Verwachte hoeveelheid | Kosten |
|---|---|---|---|
| ConfiguratieBasistarieven voor tokens | TariefstaffelBasistarief | Verwachte hoeveelheid— | Kosten Invoer · Invoertokens · Schatting uitsluitend ter vergelijking — / 1K tokens Uitvoer · Uitvoertokens · Schatting uitsluitend ter vergelijking — / 1K tokens Invoer · Cache lezen · Schatting uitsluitend ter vergelijking — / 1K tokens Invoer · Cache schrijven · Schatting uitsluitend ter vergelijking — / 1K tokens Invoer · Cache schrijven, 1 uur · Schatting uitsluitend ter vergelijking — / 1K tokens |
| ConfiguratieGeschatte generatiekosten | Tariefstaffel— | Verwachte hoeveelheidschatting voor één generatie | Kosten Uitvoer · Geschatte generatiekosten · Schatting uitsluitend ter vergelijking $0.24576 schatting vóór generatie Deze raming is geen extra kost of vast tarief voor de voltooide generatie. |
Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. Zo werken reservering en afrekening →
Voorbeeldverzoeken
Ailoot Ultra · Afbeeldingen
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
Resultaten ophalen en opslaan
Ailoot Ultra · Afbeeldingen
Download elke teruggegeven afbeelding of sla de Base64-inhoud ervan op
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Lezen van andere inhoud
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.
Alle voltooide resultaten bewaren
Sla elke voltooide afbeelding op; haal elke teruggegeven URL op of decodeer de bijbehorende Base64-inhoud.
Bewaar de volledige respons en headers, iedere daadwerkelijke uitvoer, de oorspronkelijk teruggegeven identificatoren en alle verbruiksvelden. Herstel de oorspronkelijke bewerking zonder de aanmaakaanvraag opnieuw in te dienen.
Als het oorspronkelijke antwoord moet worden gecontroleerd
Bewaar de teruggegeven X-Client-Request-ID voor de reconciliatie. Lees uitsluitend daadwerkelijk teruggegeven task_id/asset_id-waarden of de eigen mediabibliotheek uit; bouw nooit een taak-URL op basis van de bewerkings-ID en dien de aanmaakaanvraag nooit opnieuw in.
Antwoordvelden
| Veld | Type |
|---|---|
Veldcreated | Type |
Velddata[].url | Type |
Velddata[].b64_json | Type |
Veldusage | Type |
Aliasnamen
Modelaliasnamen
Ailoot gpt-image-2
Ailoot Ultra gpt-image-2, openai/gpt-image-2
Aliasnamen voor methodepaden
/v1/images
Gerelateerde aanroeper-ID’s
Ailoot Ultra · Afbeeldingen POST /v1/images/generations openai/gpt-image-2
openai/gpt-image-2gpt-image-2openai/gpt-image-2
Aan de slag
GPT Image 2 genereert en bewerkt beelden op basis van tekst en visuele referenties. Het ondersteunt flexibele beeldafmetingen en verwerkt beeldinvoer automatisch met hoge getrouwheid, met afzonderlijke regelingen voor kwaliteit, formaat en achtergrond van het afgewerkte bestand.
- Toegestane invoer
- Tekst · Afbeeldingen
- Resultaten
- Afbeeldingen
Beschikbaar in Ailoot · invoer en methoden
Ailoot Ultra · Afbeeldingen POST /v1/images/generations
- Invoer
text,image- Uitvoer
image
| Veld | Type | Vereiste | Waarden en limieten | Standaard |
|---|---|---|---|---|
Veldmodel | Typestring | VereisteVereist | Waarden en limieten openai/gpt-image-2 | Standaard— |
Veldprompt | Typestring | VereisteVereist | Waarden en limieten Minimumlengte: 1 | Standaard— |
Veldaspect_ratio | Typestring | VereisteOptioneel | Waarden en limieten 1:1, 3:2, 2:3, 4:3, 3:4, 16:9, 9:16, 21:9, auto | Standaard— |
Veldquality | Typestring | VereisteOptioneel | Waarden en limieten auto, low, medium, high | Standaard— |
Veldbackground | Typestring | VereisteOptioneel | Waarden en limieten auto, opaque | Standaard— |
Veldn | Typeinteger | VereisteOptioneel | Waarden en limieten Minimum: 1 Maximum: 10 | Standaard— |
Veldinput_references | Typearray | VereisteOptioneel | Waarden en limieten Minimumaantal items: 0 Maximumaantal items: 16 | Standaard— |
Veldoutput_compression | Typeinteger | VereisteOptioneel | Waarden en limieten Minimum: 0 Maximum: 100 | Standaard— |
Veldprovider | Typeobject | VereisteOptioneel | Waarden en limieten | Standaard— |
Methodeparameters en levenscyclus
| Parameter | Contract |
|---|---|
Parametercontent_type | Contractapplication/json |
Parameterrequired | Contractmodel, prompt |
Parametermaterial_types | Contracttext, image |
Levenscyclus: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · daadwerkelijk teruggegeven task_id of record in de mediabibliotheek
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
Tarieven
Zo worden de uiteindelijke kosten berekend
De getoonde tarieven ramen de kosten vóór de generatie. De definitieve kosten worden berekend op basis van de kosten die voor de oorspronkelijke generatie zijn geregistreerd. De gemeten duur van het gegenereerde resultaat en de geraamde hoeveelheden vormen niet de definitieve factureerbare hoeveelheid.
Tariefverwijzingen voegen geen verzoekopties toe. Ondersteunde parameters staan bij de geselecteerde methode.
- Snelle modus
- Niet opgegeven Wanneer de snelle modus geselecteerd is
- Flex-modus
- Niet opgegeven Wanneer de flex-modus geselecteerd is
- Maximale redeneerinspanning
- Niet opgegeven Wanneer voor maximale redeneerinspanning de default-aanpassing wordt gebruikt
Geschatte tarieven ter vergelijking
Prijzen per configuratie
Koppel elke kostenpost aan de getoonde voorwaarden. Gebruik één tarief voor elke groep alternatieve configuraties.
| Configuratie | Tariefstaffel | Verwachte hoeveelheid | Kosten |
|---|---|---|---|
| ConfiguratieBasistarieven voor tokens | TariefstaffelBasistarief | Verwachte hoeveelheid— | Kosten Invoer · Invoertokens · Schatting uitsluitend ter vergelijking — / 1K tokens Uitvoer · Uitvoertokens · Schatting uitsluitend ter vergelijking — / 1K tokens Invoer · Cache lezen · Schatting uitsluitend ter vergelijking — / 1K tokens Invoer · Cache schrijven · Schatting uitsluitend ter vergelijking — / 1K tokens Invoer · Cache schrijven, 1 uur · Schatting uitsluitend ter vergelijking — / 1K tokens |
| ConfiguratieGeschatte generatiekosten | Tariefstaffel— | Verwachte hoeveelheidschatting voor één generatie | Kosten Uitvoer · Geschatte generatiekosten · Schatting uitsluitend ter vergelijking $0.24576 schatting vóór generatie Deze raming is geen extra kost of vast tarief voor de voltooide generatie. |
Ailoot reserveert vóór een verzoek een geschat bedrag. Na het resultaat worden de uiteindelijke kosten afgerekend op basis van het gemeten verbruik. Bij streaming gebeurt de afrekening op basis van de definitieve verbruiksregistratie. Zo werken reservering en afrekening →
Voorbeeldverzoeken
Ailoot Ultra · Afbeeldingen
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
Resultaten ophalen en opslaan
Ailoot Ultra · Afbeeldingen
Download elke teruggegeven afbeelding of sla de Base64-inhoud ervan op
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
Lezen van andere inhoud
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.
Alle voltooide resultaten bewaren
Sla elke voltooide afbeelding op; haal elke teruggegeven URL op of decodeer de bijbehorende Base64-inhoud.
Bewaar de volledige respons en headers, iedere daadwerkelijke uitvoer, de oorspronkelijk teruggegeven identificatoren en alle verbruiksvelden. Herstel de oorspronkelijke bewerking zonder de aanmaakaanvraag opnieuw in te dienen.
Als het oorspronkelijke antwoord moet worden gecontroleerd
Bewaar de teruggegeven X-Client-Request-ID voor de reconciliatie. Lees uitsluitend daadwerkelijk teruggegeven task_id/asset_id-waarden of de eigen mediabibliotheek uit; bouw nooit een taak-URL op basis van de bewerkings-ID en dien de aanmaakaanvraag nooit opnieuw in.
Antwoordvelden
| Veld | Type |
|---|---|
Veldcreated | Type |
Velddata[].url | Type |
Velddata[].b64_json | Type |
Veldusage | Type |
Aliasnamen
Modelaliasnamen
Ailoot gpt-image-2
Ailoot Ultra gpt-image-2, openai/gpt-image-2
Aliasnamen voor methodepaden
/v1/images
Gerelateerde aanroeper-ID’s
FAQ · OpenAI: GPT Image 2
- Welke invoer en resultaten zijn beschikbaar?
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- Welke velden gebruikt het verzoek?
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- Welke limieten gelden?
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