Source: https://ailoot.ai/models/nl/gpt-image-2/
Canonical: https://ailoot.ai/models/nl/gpt-image-2/
Language: nl

# OpenAI: GPT Image 2

[Markdown](https://ailoot.ai/models/nl/gpt-image-2/index.md) · [JSON](https://ailoot.ai/models/nl/gpt-image-2/facts.json)

## [OpenAI: GPT Image 2](https://ailoot.ai/models/nl/gpt-image-2/)

GPT Image 2 genereert en bewerkt afbeeldingen op basis van tekst en visuele referenties. Het ondersteunt flexibele beeldafmetingen en verwerkt beeldinvoer automatisch met hoge getrouwheid, met afzonderlijke instellingen voor kwaliteit, formaat en achtergrond van het voltooide beeld.

- [**Ailoot · Afbeeldingen** `POST /v1/images/generations` `gpt-image-2`](https://ailoot.ai/models/nl/gpt-image-2/#method-0)
- [**Ailoot Ultra · Afbeeldingen** `POST /v1/images/generations` `gpt-image-2`](https://ailoot.ai/models/nl/gpt-image-2/#method-1)
- [**Ailoot Ultra · Afbeeldingen** `POST /v1/images/generations` `openai/gpt-image-2`](https://ailoot.ai/models/nl/gpt-image-2/#method-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 nieuwe afbeelding op basis van een geschreven briefing en kan bronafbeeldingen gebruiken voor bewerkingen of werk met referenties als uitgangspunt. Praktische taken omvatten illustraties, productconcepten, visuele composities en wijzigingen van een bestaand beeld. Het is een afzonderlijke editie ten opzichte van de modellen GPT Image 2.5 Sunburst en Flare, met een eigen kwaliteitsbereik en eigen gedrag voor invoergetrouwheid.

Beschrijf voor generatie het onderwerp, de scène, compositie, belichting en beoogde stijl. Benoem bij een bewerking wat moet veranderen en wat hetzelfde moet blijven uitzien. Een productbriefing kan vragen om een keramische lamp op een licht oppervlak 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 accepteren prompts tot 32,000 tekens en kunnen één tot tien afbeeldingen teruggeven.

Bewerking met referenties accepteert maximaal zestien invoerafbeeldingen. Geef het doel van elke referentie aan, zodat onderwerp, achtergrond en visuele uitwerking niet door elkaar worden gehaald. GPT Image 2 verwerkt elke beeldinvoer 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 uitsluitend lage invoergetrouwheid van GPT Image 1 Mini. Verwerking van invoer met hoge getrouwheid ondersteunt brondetails zonder te garanderen dat elk detail ongewijzigd wordt gereproduceerd.

Een masker kan het te bewerken gebied aangeven. Volgens de voorbereidingseisen in de handleiding moeten bronafbeelding en masker hetzelfde formaat en dezelfde afmetingen hebben en kleiner zijn dan 50 MB; het masker heeft ook een alfakanaal nodig. Als meerdere invoerafbeeldingen worden aangeleverd, geldt het masker voor de eerste. Het model behandelt het masker als aanwijzing bij de prompt in plaats van als strikte geometrische grens. Beschrijf de lokale wijziging en eisen voor behoud en controleer vervolgens 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 vallen buiten 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 1024 × 1024, 1536 × 1024, 1024 × 1536, 2048 × 2048, 2048 × 1152, 3840 × 2160 en 2160 × 3840 pixels. Kies de oriëntatie en het detailniveau voor de daadwerkelijke opmaak, in plaats van kwaliteit en afmetingen als dezelfde instelling te beschouwen.

Aangepaste afmetingen moeten veelvouden van zestien pixels zijn, met een maximale zijde van 3840 pixels, een verhouding tussen lange en korte zijde van maximaal 3:1 en een oppervlak van 655,360 tot 8,294,400 pixels. Deze voorwaarden gelden gelijktijdig. Resoluties boven 2560 × 1440 zijn als experimenteel gemarkeerd. Een formaat dat aan één regel voldoet, kan nog steeds een andere schenden. Kies daarom een ondersteund paar afmetingen en beschrijf de elementen die bij uitsnijden behouden moeten blijven in de briefing.

De uitvoer is standaard PNG; JPEG en WebP zijn ook beschikbaar. Voor JPEG en WebP wordt compressie van 0 tot 100 ondersteund. De achtergrond kan ondoorzichtig of automatisch zijn; de specifieke huidige referentie beschrijft transparantie voor GPT Image 2 als previewmogelijkheid. Gebruik bij het aanvragen van transparantie PNG of WebP, zodat een alfakanaal behouden kan blijven. De gedocumenteerde streamingworkflow staat maximaal drie gedeeltelijke afbeeldingen toe vóór de voltooide afbeelding; bewaar het definitieve bestand in plaats van een voortgangspreview. De interface van de fabrikant ondersteunt ook batchverwerking.

Beoordeel de helderheid van tekst, de positie van objecten en het behoud van brondetails in het daadwerkelijke resultaat. GPT Image kan moeite hebben met nauwkeurige belettering, composities waarbij opmaak cruciaal is en terugkerende visuele identiteit tussen afzonderlijke generaties. Gebruik voor een reeks bewerkingen het gekozen resultaat als volgende bron en geef een concrete wijziging die is gekoppeld aan een zichtbaar probleem. De bruikbare uitvoer van GPT Image 2 is een afbeelding die is verbonden 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-2`](https://ailoot.ai/models/nl/#m=openai%2Fgpt-image-2&route=Core&caller=gpt-image-2&fmt=images)

OpenAI /`gpt-image-2`

### Aan de slag

GPT Image 2 genereert en bewerkt afbeeldingen op basis van tekst en visuele referenties. Het ondersteunt flexibele beeldafmetingen en verwerkt beeldinvoer automatisch met hoge getrouwheid, met afzonderlijke instellingen voor kwaliteit, formaat en achtergrond van het voltooide beeld.

Toegestane invoer

Tekst

Resultaten

Afbeeldingen

### Beschikbaar in Ailoot · invoer en methoden

**Ailoot · Afbeeldingen** `POST /v1/images/generations`

Invoertypen

`text`

Uitvoertypen

`image`

Uitvoerformaat

Afbeeldingsbestand

| Veld | Type | Vereiste | Waarden en limieten | Standaard |
| --- | --- | --- | --- | --- |
| Veld`model` | Type`string` | VereisteVereist | Waarden en limieten gpt-image-2 | Standaard— |
| Veld`prompt` | Type`string` | VereisteVereist | Waarden en limieten Minimumlengte: 1 | Standaard— |
| Veld`n` | Type`integer` | VereisteOptioneel | Waarden en limieten Minimum: 1 | Standaard1 |
| Veld`response_format` | Type`string` | VereisteOptioneel | Waarden en limieten url, b64\_json | Standaard— |
| Veld`stream` | Type`boolean` | VereisteOptioneel | Waarden en limieten | Standaardfalse |
| Veld`size` | Type`string` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`quality` | Type`string` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`background` | Type`string` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`output_format` | Type`string` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`output_compression` | Type`integer` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`moderation` | Type`string` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`input_fidelity` | Type`string` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`style` | Type`string` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |
| Veld`partial_images` | Type`integer` | VereisteOptioneel | Waarden en limieten Afhankelijk van het model | Standaard— |

Combinaties van invoermaterialen

**Tekst naar afbeelding** · Vereist: prompt

Methodeparameters en levenscyclus

| Parameter | Contract |
| --- | --- |
| Parameter`material_types` | Contracttext |
| Parameter`required` | Contractmodel, prompt |
| Parameter`optional_controls` | Contractnull |
| Parameter`content_type` | Contractapplication/json |

Levenscyclus: `synchronous_result_then_owned_library`

`GET /v1/media/tasks/{task_id}` · de daadwerkelijk geretourneerde task\_id of het 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

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 →](https://ailoot.ai/docs/nl/billing/reserve/)

### Voorbeeldverzoeken

#### Ailoot · Afbeeldingen

curlPython SDKNode.js SDK

```bash
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
```

```python
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])
```

```js
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}/content`
- `GET /v1/media/assets`
- `GET /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 data-item op. Decodeer elke b64\_json of haal elk bestand op via elke geretourneerde ondertekende URL. 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 moet worden gecontroleerd, bewaar dan de oorspronkelijke operation\_id/X-Client-Request-ID en de geretourneerde resultaatinformatie. Haal bestaande eigen resultaten terug via de mediabibliotheek met de daadwerkelijke task\_id- of asset\_id-waarden. Dien de generatie-/bewerkingsaanvraag niet opnieuw in en bouw geen polling-URL op basis van operation\_id.

Antwoordvelden

| Veld | Type |
| --- | --- |
| Veld`created` | Typeinteger |
| Veld`data[].url` | Typestring |
| Veld`data[].b64_json` | Typebase64 string |
| Veld`usage` | 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. |
| Antwoord`server_error` | VoorwaardeHet geretourneerde antwoord geeft aan dat de bewerking of het resultaat moet worden gecontroleerd | Volgende stapBewaar de oorspronkelijk geretourneerde bewerkings-/taak-ID, de aanvraagheaders en het antwoord; blijf de ondersteunde leesacties voor die oorspronkelijke bewerking uitvoeren. Dien de aanmaakaanvraag niet opnieuw in. |

### Aliasnamen

#### Modelaliasnamen

<strong>Ailoot</strong> [`gpt-image-2`](https://ailoot.ai/models/nl/#m=openai%2Fgpt-image-2&route=Core&caller=gpt-image-2&fmt=images)
**Ailoot Ultra** [`gpt-image-2`](https://ailoot.ai/models/nl/#m=openai%2Fgpt-image-2&route=Ultra&caller=gpt-image-2&fmt=images), [`openai/gpt-image-2`](https://ailoot.ai/models/nl/#m=openai%2Fgpt-image-2&route=Ultra&caller=openai%2Fgpt-image-2&fmt=images)

#### Aliasnamen voor methodepaden

`/v1/images`

#### Gerelateerde aanroeper-ID’s

[`openai/gpt-image-2`](https://ailoot.ai/models/nl/#m=openai%2Fgpt-image-2&route=Ultra&caller=openai%2Fgpt-image-2&fmt=images), [`gpt-image-2`](https://ailoot.ai/models/nl/#m=openai%2Fgpt-image-2&route=Core&caller=gpt-image-2&fmt=images), [`gpt-image-2`](https://ailoot.ai/models/nl/#m=openai%2Fgpt-image-2&route=Ultra&caller=gpt-image-2&fmt=images)

**Ailoot Ultra · Afbeeldingen** `POST /v1/images/generations` `gpt-image-2`

[`gpt-image-2`](https://ailoot.ai/models/nl/#m=openai%2Fgpt-image-2&route=Ultra&caller=gpt-image-2&fmt=images)

OpenAI /`gpt-image-2`

Model-ID

- `gpt-image-2`
- `openai/gpt-image-2`

### Aan de slag

GPT Image 2 genereert en bewerkt afbeeldingen op basis van tekst en visuele referenties. Het ondersteunt flexibele beeldafmetingen en verwerkt beeldinvoer automatisch met hoge getrouwheid, met afzonderlijke instellingen voor kwaliteit, formaat en achtergrond van het voltooide beeld.

Toegestane invoer

Tekst

Resultaten

Afbeeldingen

### Beschikbaar in Ailoot · invoer en methoden

**Ailoot Ultra · Afbeeldingen** `POST /v1/images/generations`

Invoertypen

`text`

Uitvoertypen

`image`

| Veld | Type | Vereiste | Waarden en limieten | Standaard |
| --- | --- | --- | --- | --- |
| Veld`model` | Type`string` | VereisteVereist | Waarden en limieten gpt-image-2 | Standaard— |
| Veld`prompt` | Type`string` | VereisteVereist | Waarden en limieten Maximumlengte: 32.000 | Standaard— |
| Veld`size` | Type`string` | VereisteOptioneel | Waarden en limieten Voorwaarden: Gebruik auto of WIDTHxHEIGHT waarbij beide afmetingen deelbaar zijn door 16. De langste zijde is maximaal 3,840 pixels en de totale grootte maximaal 8,300,000 pixels. | Standaardauto |
| Veld`background` | Type`string` | VereisteOptioneel | Waarden en limieten transparent, opaque, auto | Standaardauto |
| Veld`moderation` | Type`string` | VereisteOptioneel | Waarden en limieten low, auto Voorwaarden: Gebruik auto voor standaardinhoudsmoderatie. | Standaard— |
| Veld`n` | Type`integer` | VereisteOptioneel | Waarden en limieten Minimum: 1 Maximum: 10 | Standaard1 |
| Veld`quality` | Type`string` | VereisteOptioneel | Waarden en limieten auto, high, medium, low | Standaardauto |
| Veld`output_compression` | Type`integer` | VereisteOptioneel | Waarden en limieten Minimum: 0 Maximum: 100 Voorwaarden: Geldt voor JPEG- en WebP-uitvoer; verstuur de gedocumenteerde gehele waarde. | Standaard100 |
| Veld`output_format` | Type`string` | VereisteOptioneel | Waarden en limieten webp, png, jpeg | Standaardpng |
| Veld`stream` | Type`boolean` | VereisteOptioneel | Waarden en limieten false Voorwaarden: Deze route retourneert één voltooid JSON-antwoord. | Standaardfalse |

Methodeparameters en levenscyclus

| Parameter | Contract |
| --- | --- |
| Parameter`content_type` | Contractapplication/json |
| Parameter`required` | Contractprompt, model |
| Parameter`material_types` | Contracttext |
| Parameter`optional` | Contractsize, background, moderation, n, quality, output\_compression, output\_format, stream |
| Parameter`conditions` | ContractEen transparante achtergrond vereist PNG of WebP., Uitvoercompressie geldt voor JPEG of WebP., De geselecteerde methode genereert vanuit tekst. Bewerkings- en streaminginstellingen die voor de fabrikant worden beschreven, zijn afzonderlijke mogelijkheden. |

Levenscyclus: `synchronous_result_then_owned_library`

`GET /v1/media/tasks/{task_id}` · de daadwerkelijk geretourneerde task\_id of het 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 weergegeven tarieven geven een schatting van de kosten vóór de generatie. Het definitieve bedrag wordt berekend op basis van de kosten die voor de oorspronkelijke generatie zijn geregistreerd. De gemeten duur van de uitvoer en de geschatte hoeveelheden zijn 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 is geselecteerd

Flexmodus

Niet opgegeven Wanneer de modus flex is geselecteerd

Maximale redeneerinspanning

Niet opgegeven Wanneer bij 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 schatting is geen extra bedrag 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 →](https://ailoot.ai/docs/nl/billing/reserve/)

### Voorbeeldverzoeken

#### Ailoot Ultra · Afbeeldingen

curl

```bash
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}/content`
- `GET /v1/media/assets`
- `GET /v1/media/assets/{asset_id}`

Lezen van andere inhoud

Bestaande eigen bestanden ophalen

```bash
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 het volledige antwoord en de headers, alle daadwerkelijke uitvoer, de oorspronkelijk geretourneerde identificatoren en alle gebruiksvelden. Herstel de oorspronkelijke bewerking zonder de aanmaakaanvraag opnieuw in te dienen.

##### Als het oorspronkelijke antwoord moet worden gecontroleerd

Bewaar de geretourneerde X-Client-Request-ID voor reconciliatie. Lees alleen daadwerkelijk geretourneerde 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 |
| --- | --- |
| Veld`created` | Type |
| Veld`data[].url` | Type |
| Veld`data[].b64_json` | Type |
| Veld`usage` | Type |

### Aliasnamen

#### Modelaliasnamen

<strong>Ailoot</strong> [`gpt-image-2`](https://ailoot.ai/models/nl/#m=openai%2Fgpt-image-2&route=Core&caller=gpt-image-2&fmt=images)
**Ailoot Ultra** [`gpt-image-2`](https://ailoot.ai/models/nl/#m=openai%2Fgpt-image-2&route=Ultra&caller=gpt-image-2&fmt=images), [`openai/gpt-image-2`](https://ailoot.ai/models/nl/#m=openai%2Fgpt-image-2&route=Ultra&caller=openai%2Fgpt-image-2&fmt=images)

#### Aliasnamen voor methodepaden

`/v1/images`

#### Gerelateerde aanroeper-ID’s

[`openai/gpt-image-2`](https://ailoot.ai/models/nl/#m=openai%2Fgpt-image-2&route=Ultra&caller=openai%2Fgpt-image-2&fmt=images), [`gpt-image-2`](https://ailoot.ai/models/nl/#m=openai%2Fgpt-image-2&route=Core&caller=gpt-image-2&fmt=images), [`gpt-image-2`](https://ailoot.ai/models/nl/#m=openai%2Fgpt-image-2&route=Ultra&caller=gpt-image-2&fmt=images)

**Ailoot Ultra · Afbeeldingen** `POST /v1/images/generations` `openai/gpt-image-2`

[`openai/gpt-image-2`](https://ailoot.ai/models/nl/#m=openai%2Fgpt-image-2&route=Ultra&caller=openai%2Fgpt-image-2&fmt=images)

OpenAI /`openai/gpt-image-2`

Model-ID

- `gpt-image-2`
- `openai/gpt-image-2`

### Aan de slag

GPT Image 2 genereert en bewerkt afbeeldingen op basis van tekst en visuele referenties. Het ondersteunt flexibele beeldafmetingen en verwerkt beeldinvoer automatisch met hoge getrouwheid, met afzonderlijke instellingen voor kwaliteit, formaat en achtergrond van het voltooide beeld.

Toegestane invoer

Tekst · Afbeeldingen

Resultaten

Afbeeldingen

### Beschikbaar in Ailoot · invoer en methoden

**Ailoot Ultra · Afbeeldingen** `POST /v1/images/generations`

Invoertypen

`text`, `image`

Uitvoertypen

`image`

| Veld | Type | Vereiste | Waarden en limieten | Standaard |
| --- | --- | --- | --- | --- |
| Veld`model` | Type`string` | VereisteVereist | Waarden en limieten openai/gpt-image-2 | Standaard— |
| Veld`prompt` | Type`string` | VereisteVereist | Waarden en limieten Minimumlengte: 1 | Standaard— |
| Veld`aspect_ratio` | Type`string` | VereisteOptioneel | Waarden en limieten 1:1, 3:2, 2:3, 4:3, 3:4, 16:9, 9:16, 21:9, auto | Standaard— |
| Veld`quality` | Type`string` | VereisteOptioneel | Waarden en limieten auto, low, medium, high | Standaard— |
| Veld`background` | Type`string` | VereisteOptioneel | Waarden en limieten auto, opaque | Standaard— |
| Veld`n` | Type`integer` | VereisteOptioneel | Waarden en limieten Minimum: 1 Maximum: 10 | Standaard— |
| Veld`input_references` | Type`array` | VereisteOptioneel | Waarden en limieten Minimumaantal items: 0 Maximumaantal items: 16 | Standaard— |
| Veld`output_compression` | Type`integer` | VereisteOptioneel | Waarden en limieten Minimum: 0 Maximum: 100 | Standaard— |
| Veld`provider` | Type`object` | VereisteOptioneel | Waarden en limieten | Standaard— |

Methodeparameters en levenscyclus

| Parameter | Contract |
| --- | --- |
| Parameter`content_type` | Contractapplication/json |
| Parameter`required` | Contractmodel, prompt |
| Parameter`material_types` | Contracttext, image |

Levenscyclus: `synchronous_result_then_owned_library`

`GET /v1/media/tasks/{task_id}` · de daadwerkelijk geretourneerde task\_id of het 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 weergegeven tarieven geven een schatting van de kosten vóór de generatie. Het definitieve bedrag wordt berekend op basis van de kosten die voor de oorspronkelijke generatie zijn geregistreerd. De gemeten duur van de uitvoer en de geschatte hoeveelheden zijn 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 is geselecteerd

Flexmodus

Niet opgegeven Wanneer de modus flex is geselecteerd

Maximale redeneerinspanning

Niet opgegeven Wanneer bij 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 schatting is geen extra bedrag 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 →](https://ailoot.ai/docs/nl/billing/reserve/)

### Voorbeeldverzoeken

#### Ailoot Ultra · Afbeeldingen

curl

```bash
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}/content`
- `GET /v1/media/assets`
- `GET /v1/media/assets/{asset_id}`

Lezen van andere inhoud

Bestaande eigen bestanden ophalen

```bash
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 het volledige antwoord en de headers, alle daadwerkelijke uitvoer, de oorspronkelijk geretourneerde identificatoren en alle gebruiksvelden. Herstel de oorspronkelijke bewerking zonder de aanmaakaanvraag opnieuw in te dienen.

##### Als het oorspronkelijke antwoord moet worden gecontroleerd

Bewaar de geretourneerde X-Client-Request-ID voor reconciliatie. Lees alleen daadwerkelijk geretourneerde 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 |
| --- | --- |
| Veld`created` | Type |
| Veld`data[].url` | Type |
| Veld`data[].b64_json` | Type |
| Veld`usage` | Type |

### Aliasnamen

#### Modelaliasnamen

<strong>Ailoot</strong> [`gpt-image-2`](https://ailoot.ai/models/nl/#m=openai%2Fgpt-image-2&route=Core&caller=gpt-image-2&fmt=images)
**Ailoot Ultra** [`gpt-image-2`](https://ailoot.ai/models/nl/#m=openai%2Fgpt-image-2&route=Ultra&caller=gpt-image-2&fmt=images), [`openai/gpt-image-2`](https://ailoot.ai/models/nl/#m=openai%2Fgpt-image-2&route=Ultra&caller=openai%2Fgpt-image-2&fmt=images)

#### Aliasnamen voor methodepaden

`/v1/images`

#### Gerelateerde aanroeper-ID’s

[`openai/gpt-image-2`](https://ailoot.ai/models/nl/#m=openai%2Fgpt-image-2&route=Ultra&caller=openai%2Fgpt-image-2&fmt=images), [`gpt-image-2`](https://ailoot.ai/models/nl/#m=openai%2Fgpt-image-2&route=Core&caller=gpt-image-2&fmt=images), [`gpt-image-2`](https://ailoot.ai/models/nl/#m=openai%2Fgpt-image-2&route=Ultra&caller=gpt-image-2&fmt=images)

FAQ · OpenAI: GPT Image 2

Welke invoer en resultaten zijn beschikbaar?

`POST /v1/images/generations` · `gpt-image-2`: `text` → `image` `POST /v1/images/generations` · `gpt-image-2`: `text` → `image` `POST /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`, `stream` `POST /v1/images/generations` · `gpt-image-2`: `model`, `prompt`, `size`, `background`, `moderation`, `n`, `quality`, `output_compression`, `output_format`, `stream` `POST /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`: `1` `POST /v1/images/generations` · `gpt-image-2`: `prompt.maximum_length`: `32000`; `n.minimum`: `1`; `n.maximum`: `10`; `output_compression.minimum`: `0`; `output_compression.maximum`: `100` `POST /v1/images/generations` · `openai/gpt-image-2`: `n.minimum`: `1`; `n.maximum`: `10`; `output_compression.minimum`: `0`; `output_compression.maximum`: `100`

Verbind Ailoot met Claude Code, OpenCode, Hermes of je eigen applicatie.

## Het bedrijf en zijn projectenportefeuille

Het bedrijf en zijn projectenportefeuille: miljoenen klanten; maandelijkse verkopen in de miljarden.

## Koop tokens met korting.

Abonnementsvoordeel voor regelmatig gebruik. Promotiecodes geven tot 50% korting op tokens.

Abonnement

Kies een abonnement met korting voor je terugkerende verzoeken.

Promotiecode tot 50%

Vul de code bij aankoop in. De prijs wordt volgens de lopende actie herberekend.

Kosten in de geschiedenis

Model, tokens en bedrag worden per verzoek bewaard.

[Kies een abonnement](https://ailoot.ai/docs/nl/billing/subscriptions/) · [Bekijk modelprijzen](https://ailoot.ai/models/nl/)

## Verbind de API met het product dat je verkoopt.

SaaS, apps en bots volgens de openbare aanbodvoorwaarden en licentieovereenkomst van Ailoot. Vraag voor doorverkoop een resellerlicentie aan.

Commerciële applicatie

Voeg tekst-, beeld-, video- en geluidsgeneratie aan betaalde functies van je service toe.

Resellerlicentie

Stuur een projectbeschrijving en toegangsschema. Vraag schriftelijke voorwaarden voor gebruik en doorverkoop.

Documenten op de site

Aanbodvoorwaarden, licentieovereenkomst en gegevensbeleid zijn vóór het verbinden beschikbaar.

[Vraag een resellerlicentie aan](mailto:support@ailoot.ai) · [Aanbodvoorwaarden en licentieovereenkomst](https://ailoot.ai/legal/offer?lang=nl)

## Ailoot · Het bedrijf en zijn projectenportefeuille





Ailoot bouwt op opgebouwde operationele ervaring, een groot klantenbestand, een stabiele dienst en doorlopende KPI-controle.





Het bedrijf en zijn projectenportefeuille: miljoenen klanten; maandelijkse verkopen in de miljarden.





Ailoot gebruikt die operationele ervaring voor API-toegang tot AI-functies in klantproducten, agents, applicaties en automatiseringen.
