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

# OpenAI: GPT Image 2

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

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

GPT Image 2 genererer og redigerer billeder ud fra tekst og visuelle referencer. Den understøtter fleksible billeddimensioner og behandler automatisk billedinput med høj kildetroskab, med separate indstillinger for kvalitet, format og baggrund til det færdige aktiv.

- [**Ailoot · Billeder** `POST /v1/images/generations` `gpt-image-2`](https://ailoot.ai/models/da/gpt-image-2/#method-0)
- [**Ailoot Ultra · Billeder** `POST /v1/images/generations` `gpt-image-2`](https://ailoot.ai/models/da/gpt-image-2/#method-1)
- [**Ailoot Ultra · Billeder** `POST /v1/images/generations` `openai/gpt-image-2`](https://ailoot.ai/models/da/gpt-image-2/#method-2)

Om modellen

Denne beskrivelse dækker modellens funktioner. Tilgængelige input, output og indstillinger i Ailoot står nedenfor for den valgte metode.

GPT Image 2 er OpenAI’s model til billedgenerering og redigering ud fra tekst og visuelle input. Den skaber et nyt billede ud fra et skriftligt oplæg og kan bruge kildebilleder til redigering eller referencestyret arbejde. Praktiske opgaver omfatter illustrationer, produktkoncepter, visuelle kompositioner og ændringer af et eksisterende aktiv. Den er en separat udgave fra GPT Image 2.5 Sunburst og Flare med sit eget kvalitetsinterval og sin egen adfærd for inputtroskab.

Til generering skal du beskrive motivet, scenen, kompositionen, lyset og den ønskede stil. Til en redigering skal du angive, hvad der skal ændres, og hvad der skal bevare sit udseende. Et produktoplæg kan bede om en keramiklampe på en lys overflade med en centreret silhuet og plads til en billedtekst; en opfølgende redigering kan ændre baggrunden og samtidig bevare lampens form og betragtningsvinkel. De dokumenterede direkte genererings- og redigeringsforløb accepterer prompts på op til 32.000 tegn og kan returnere ét til ti billeder.

Referenceredigering accepterer op til seksten inputbilleder. Angiv formålet med hver reference, så motiv, baggrund og visuel behandling ikke forveksles. GPT Image 2 behandler automatisk alle billedinput med høj kildetroskab; input\_fidelity skal udelades, fordi indstillingen ikke kan justeres i denne udgave. Det adskiller sig fra valget high eller low i GPT Image 1 og tilstanden med kun low inputtroskab i GPT Image 1 Mini. Behandling med høj kildetroskab understøtter kildedetaljer uden at garantere, at hver detalje gengives uændret.

En maske kan angive området, der skal redigeres. Kildebilledet og masken skal have samme format og dimensioner og være under 50 MB ifølge vejledningens forberedelseskrav; masken skal også have en alfakanal. Hvis flere inputbilleder vedlægges, gælder maskeringen for det første. Modellen behandler masken som promptbaseret vejledning frem for en streng geometrisk grænse. Beskriv den lokale ændring og kravene til bevarelse, og undersøg derefter det omgivende område for utilsigtede forskelle.

GPT Image 2 understøtter kvaliteten low, medium, high og auto, med auto som standard. Indstillingerne xhigh og max fra 2.5-familien er ikke en del af denne udgaves kvalitetsinterval. Størrelsen kan være kvadratisk, liggende, stående, automatisk eller en gyldig brugerdefineret bredde og højde. Producentens eksempler omfatter 1024 × 1024, 1536 × 1024, 1024 × 1536, 2048 × 2048, 2048 × 1152, 3840 × 2160 og 2160 × 3840 pixels. Vælg orientering og detaljeniveau til det faktiske layout frem for at behandle kvalitet og dimensioner som samme indstilling.

Brugerdefinerede dimensioner skal være multipla af seksten pixels med en maksimal kant på 3840 pixels, et forhold mellem lang og kort kant på højst 3:1 og et areal fra 655.360 til 8.294.400 pixels. Disse betingelser gælder samtidig. Opløsninger over 2560 × 1440 er markeret som eksperimentelle. En ramme, der opfylder én regel, kan stadig bryde en anden, så vælg et understøttet dimensionspar, og beskriv de elementer, der er følsomme over for beskæring, i oplægget.

Outputtet er som standard PNG; JPEG og WebP er også tilgængelige. Komprimering fra 0 til 100 understøttes for JPEG og WebP. Baggrunden kan være uigennemsigtig eller automatisk; den præcise aktuelle reference beskriver gennemsigtighed for GPT Image 2 som en preview-funktion. Ved anmodning om gennemsigtighed skal du bruge PNG eller WebP, så en alfakanal kan bevares. Det dokumenterede streamingforløb tillader op til tre delvise billeder før det færdige billede; gem det endelige aktiv frem for en forhåndsvisning af fremskridt. Producentens grænseflade understøtter også batchbehandling.

Vurdér tekstens tydelighed, objekternes placering og bevarelsen af kildedetaljer i selve resultatet. GPT Image kan have svært ved præcis tekst, layoutfølsomme kompositioner og tilbagevendende visuel identitet på tværs af separate genereringer. Til en sekvens af redigeringer skal du bruge det valgte resultat som næste kilde og give en konkret ændring knyttet til et synligt problem. GPT Image 2’s nyttige output er et billede knyttet til et klart genererings- eller redigeringsoplæg, hvor input med høj kildetroskab, dimensioner og kvalitet er valgt til netop den opgave.

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

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

OpenAI /`gpt-image-2`

### Start

GPT Image 2 genererer og redigerer billeder ud fra tekst og visuelle referencer. Den understøtter fleksible billeddimensioner og behandler automatisk billedinput med høj kildetroskab, med separate indstillinger for kvalitet, format og baggrund til det færdige aktiv.

Accepterede input

Tekst

Resultater

Billeder

### Tilgængelig i Ailoot · input og metoder

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

Inputtyper

`text`

Outputtyper

`image`

Outputformat

Billedfil

| Felt | Type | Krav | Værdier og grænser | Standard |
| --- | --- | --- | --- | --- |
| Felt`model` | Type`string` | KravPåkrævet | Værdier og grænser gpt-image-2 | Standard— |
| Felt`prompt` | Type`string` | KravPåkrævet | Værdier og grænser Minimumslængde: 1 | Standard— |
| Felt`n` | Type`integer` | KravValgfrit | Værdier og grænser Minimum: 1 | Standard1 |
| Felt`response_format` | Type`string` | KravValgfrit | Værdier og grænser url, b64\_json | Standard— |
| Felt`stream` | Type`boolean` | KravValgfrit | Værdier og grænser | Standardfalse |
| Felt`size` | Type`string` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`quality` | Type`string` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`background` | Type`string` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`output_format` | Type`string` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`output_compression` | Type`integer` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`moderation` | Type`string` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`input_fidelity` | Type`string` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`style` | Type`string` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |
| Felt`partial_images` | Type`integer` | KravValgfrit | Værdier og grænser Afhænger af modellen | Standard— |

Kombinationer af inputmaterialer

**Tekst til billede** · Påkrævet: prompt

Metodeparametre og livscyklus

| Parameter | Kontrakt |
| --- | --- |
| Parameter`material_types` | Kontrakttext |
| Parameter`required` | Kontraktmodel, prompt |
| Parameter`optional_controls` | Kontraktnull |
| Parameter`content_type` | Kontraktapplication/json |

Livscyklus: `synchronous_result_then_owned_library`

`GET /v1/media/tasks/{task_id}` · det faktisk returnerede task\_id eller posten i mediebiblioteket

`GET /v1/media/assets/{asset_id}/content`

`GET /v1/media/assets`

`GET /v1/media/assets/{asset_id}`

Metodernes strukturer og ID’er er præcise; leverandørens muligheder er adskilt fra adgangstilladelse.

### Priser

#### Ailoot-metodetakster

Tekstinput

0,0025 US$ */ 1K*

Input, billede

0,004 US$ */ 1K tokens*

Output, billede

0,015 US$ */ 1K tokens*

Ailoot reserverer et estimeret beløb før en anmodning. Efter resultatet afregnes det endelige beløb ud fra det målte forbrug. Ved streaming bruges den endelige forbrugsregistrering til afregningen. [Sådan fungerer reservation og afregning →](https://ailoot.ai/docs/da/billing/reserve/)

### Eksempelanmodninger

#### Ailoot · Billeder

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");
```

### Hent og gem resultater

#### Ailoot · Billeder

Hent hvert returneret billede, eller gem dets Base64-indhold

- `GET /v1/media/tasks/{task_id}`
- `GET /v1/media/assets/{asset_id}/content`
- `GET /v1/media/assets`
- `GET /v1/media/assets/{asset_id}`

##### Behold alle færdige resultater

Gem hvert færdigt billede; hent hver returneret URL eller afkod dets Base64-indhold.

Gem hvert dataelement. Afkod hver b64\_json, eller hent hver returneret signeret URL. Vælg filtypenavnet ud fra den faktiske MIME-type eller de faktiske bytes.

##### Hvis det oprindelige svar skal kontrolleres

Hvis resultatet af en billedgenerering eller -redigering skal kontrolleres, skal du gemme det oprindelige operation\_id/X-Client-Request-ID og de returnerede resultatoplysninger. Hent eksisterende resultater, som du ejer, via mediebiblioteket med de faktiske task\_id- eller asset\_id-værdier. Send ikke anmodningen om generering/redigering igen, og opbyg ikke en polling-URL ud fra operation\_id.

Svarfelter

| Felt | Type |
| --- | --- |
| Felt`created` | Typeinteger |
| Felt`data[].url` | Typestring |
| Felt`data[].b64_json` | Typebase64 string |
| Felt`usage` | Typeobject |

Fejl og næste trin

| Svar | Betingelse | Næste trin |
| --- | --- | --- |
| Svar400 · `invalid_request_error` | BetingelseUgyldige obligatoriske felter, materialerepræsentation eller parameterværdi | Næste trinRet de angivne felter før en ny oprettelsesanmodning. |
| Svar`server_error` | BetingelseDet returnerede svar angiver, at operationen eller resultatet skal kontrolleres | Næste trinGem det oprindeligt returnerede operations-/opgave-ID, anmodningens headere og svaret; fortsæt med de understøttede læseanmodninger for den oprindelige operation. Send ikke oprettelsesanmodningen igen. |

### Aliaser

#### Modelaliaser

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

#### Aliaser for metodestier

`/v1/images`

#### Relaterede kalder-ID’er

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

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

[`gpt-image-2`](https://ailoot.ai/models/da/#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`

### Start

GPT Image 2 genererer og redigerer billeder ud fra tekst og visuelle referencer. Den understøtter fleksible billeddimensioner og behandler automatisk billedinput med høj kildetroskab, med separate indstillinger for kvalitet, format og baggrund til det færdige aktiv.

Accepterede input

Tekst

Resultater

Billeder

### Tilgængelig i Ailoot · input og metoder

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

Inputtyper

`text`

Outputtyper

`image`

| Felt | Type | Krav | Værdier og grænser | Standard |
| --- | --- | --- | --- | --- |
| Felt`model` | Type`string` | KravPåkrævet | Værdier og grænser gpt-image-2 | Standard— |
| Felt`prompt` | Type`string` | KravPåkrævet | Værdier og grænser Maksimal længde: 32.000 | Standard— |
| Felt`size` | Type`string` | KravValgfrit | Værdier og grænser Betingelser: Brug auto eller WIDTHxHEIGHT, hvor begge dimensioner er delelige med 16. Den længste side må højst være 3,840 pixels, og den samlede størrelse må højst være 8,300,000 pixels. | Standardauto |
| Felt`background` | Type`string` | KravValgfrit | Værdier og grænser transparent, opaque, auto | Standardauto |
| Felt`moderation` | Type`string` | KravValgfrit | Værdier og grænser low, auto Betingelser: Brug auto til standardmoderation af indhold. | Standard— |
| Felt`n` | Type`integer` | KravValgfrit | Værdier og grænser Minimum: 1 Maksimum: 10 | Standard1 |
| Felt`quality` | Type`string` | KravValgfrit | Værdier og grænser auto, high, medium, low | Standardauto |
| Felt`output_compression` | Type`integer` | KravValgfrit | Værdier og grænser Minimum: 0 Maksimum: 100 Betingelser: Gælder for JPEG- og WebP-output; send den dokumenterede heltalsværdi. | Standard100 |
| Felt`output_format` | Type`string` | KravValgfrit | Værdier og grænser webp, png, jpeg | Standardpng |
| Felt`stream` | Type`boolean` | KravValgfrit | Værdier og grænser false Betingelser: Denne rute returnerer ét færdigt JSON-svar. | Standardfalse |

Metodeparametre og livscyklus

| Parameter | Kontrakt |
| --- | --- |
| Parameter`content_type` | Kontraktapplication/json |
| Parameter`required` | Kontraktprompt, model |
| Parameter`material_types` | Kontrakttext |
| Parameter`optional` | Kontraktsize, background, moderation, n, quality, output\_compression, output\_format, stream |
| Parameter`conditions` | KontraktEn gennemsigtig baggrund kræver PNG eller WebP., Outputkomprimering gælder for JPEG eller WebP., Den valgte metode genererer ud fra tekst. De redigerings- og streamingparametre, der er beskrevet for producenten, er separate funktioner. |

Livscyklus: `synchronous_result_then_owned_library`

`GET /v1/media/tasks/{task_id}` · det faktisk returnerede task\_id eller posten i mediebiblioteket

`GET /v1/media/assets/{asset_id}/content`

`GET /v1/media/assets`

`GET /v1/media/assets/{asset_id}`

### Priser

##### Sådan beregnes det endelige beløb

De viste satser bruges til at anslå omkostningen før genereringen. Det endelige beløb beregnes ud fra den registrerede omkostning for den oprindelige generering. Den målte varighed af outputtet og de anslåede mængder er ikke den endelige fakturerbare mængde.

Tarifoplysninger tilføjer ikke anmodningsmuligheder. Understøttede parametre står ved den valgte metode.

Hurtig tilstand

Ikke angivet Når hurtig tilstand er valgt

flex-tilstand

Ikke angivet Når flex-tilstanden er valgt

Maksimal ræsonneringsindsats

Ikke angivet Når default-justeringen anvendes ved maksimal ræsonneringsindsats

#### Estimerede takster til sammenligning

#### Priser efter konfiguration

Knyt hver omkostning til de viste betingelser. Brug én takst for hver gruppe af alternative konfigurationer.

| Konfiguration | Takstplan | Forventet mængde | Beløb |
| --- | --- | --- | --- |
| KonfigurationGrundpriser for tokens | TakstplanGrundtakst | Forventet mængde— | Beløb Input · Inputtokens · Estimat kun til sammenligning **—** / 1K tokens Output · Outputtokens · Estimat kun til sammenligning **—** / 1K tokens Input · Cachelæsning · Estimat kun til sammenligning **—** / 1K tokens Input · Cacheskrivning · Estimat kun til sammenligning **—** / 1K tokens Input · Cacheskrivning, 1 time · Estimat kun til sammenligning **—** / 1K tokens |
| KonfigurationAnslået genereringsomkostning | Takstplan— | Forventet mængdeestimat for én generering | Beløb Output · Anslået genereringsomkostning · Estimat kun til sammenligning **$0.24576** estimat før generering Dette estimat er hverken et ekstra gebyr eller en fast pris for den færdige generering. |

Ailoot reserverer et estimeret beløb før en anmodning. Efter resultatet afregnes det endelige beløb ud fra det målte forbrug. Ved streaming bruges den endelige forbrugsregistrering til afregningen. [Sådan fungerer reservation og afregning →](https://ailoot.ai/docs/da/billing/reserve/)

### Eksempelanmodninger

#### Ailoot Ultra · Billeder

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

### Hent og gem resultater

#### Ailoot Ultra · Billeder

Hent hvert returneret billede, eller gem dets Base64-indhold

- `GET /v1/media/tasks/{task_id}`
- `GET /v1/media/assets/{asset_id}/content`
- `GET /v1/media/assets`
- `GET /v1/media/assets/{asset_id}`

Læsning af andet indhold

Hent eksisterende filer, du ejer

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

##### Behold alle færdige resultater

Gem hvert færdigt billede; hent hver returneret URL eller afkod dets Base64-indhold.

Gem hele svaret og alle headere, alle faktisk returnerede output, de oprindeligt returnerede identifikatorer og alle felter med forbrugsdata. Gendan den oprindelige operation uden at sende oprettelsesanmodningen igen.

##### Hvis det oprindelige svar skal kontrolleres

Gem det returnerede X-Client-Request-ID til afstemning. Brug kun faktisk returnerede task\_id/asset\_id-værdier eller dit eget mediebibliotek til læseanmodninger; opbyg aldrig en opgave-URL ud fra operations-ID’et, og send aldrig oprettelsesanmodningen igen.

Svarfelter

| Felt | Type |
| --- | --- |
| Felt`created` | Type |
| Felt`data[].url` | Type |
| Felt`data[].b64_json` | Type |
| Felt`usage` | Type |

### Aliaser

#### Modelaliaser

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

#### Aliaser for metodestier

`/v1/images`

#### Relaterede kalder-ID’er

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

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

[`openai/gpt-image-2`](https://ailoot.ai/models/da/#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`

### Start

GPT Image 2 genererer og redigerer billeder ud fra tekst og visuelle referencer. Den understøtter fleksible billeddimensioner og behandler automatisk billedinput med høj kildetroskab, med separate indstillinger for kvalitet, format og baggrund til det færdige aktiv.

Accepterede input

Tekst · Billeder

Resultater

Billeder

### Tilgængelig i Ailoot · input og metoder

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

Inputtyper

`text`, `image`

Outputtyper

`image`

| Felt | Type | Krav | Værdier og grænser | Standard |
| --- | --- | --- | --- | --- |
| Felt`model` | Type`string` | KravPåkrævet | Værdier og grænser openai/gpt-image-2 | Standard— |
| Felt`prompt` | Type`string` | KravPåkrævet | Værdier og grænser Minimumslængde: 1 | Standard— |
| Felt`aspect_ratio` | Type`string` | KravValgfrit | Værdier og grænser 1:1, 3:2, 2:3, 4:3, 3:4, 16:9, 9:16, 21:9, auto | Standard— |
| Felt`quality` | Type`string` | KravValgfrit | Værdier og grænser auto, low, medium, high | Standard— |
| Felt`background` | Type`string` | KravValgfrit | Værdier og grænser auto, opaque | Standard— |
| Felt`n` | Type`integer` | KravValgfrit | Værdier og grænser Minimum: 1 Maksimum: 10 | Standard— |
| Felt`input_references` | Type`array` | KravValgfrit | Værdier og grænser Minimumsantal elementer: 0 Maksimalt antal elementer: 16 | Standard— |
| Felt`output_compression` | Type`integer` | KravValgfrit | Værdier og grænser Minimum: 0 Maksimum: 100 | Standard— |
| Felt`provider` | Type`object` | KravValgfrit | Værdier og grænser | Standard— |

Metodeparametre og livscyklus

| Parameter | Kontrakt |
| --- | --- |
| Parameter`content_type` | Kontraktapplication/json |
| Parameter`required` | Kontraktmodel, prompt |
| Parameter`material_types` | Kontrakttext, image |

Livscyklus: `synchronous_result_then_owned_library`

`GET /v1/media/tasks/{task_id}` · det faktisk returnerede task\_id eller posten i mediebiblioteket

`GET /v1/media/assets/{asset_id}/content`

`GET /v1/media/assets`

`GET /v1/media/assets/{asset_id}`

### Priser

##### Sådan beregnes det endelige beløb

De viste satser bruges til at anslå omkostningen før genereringen. Det endelige beløb beregnes ud fra den registrerede omkostning for den oprindelige generering. Den målte varighed af outputtet og de anslåede mængder er ikke den endelige fakturerbare mængde.

Tarifoplysninger tilføjer ikke anmodningsmuligheder. Understøttede parametre står ved den valgte metode.

Hurtig tilstand

Ikke angivet Når hurtig tilstand er valgt

flex-tilstand

Ikke angivet Når flex-tilstanden er valgt

Maksimal ræsonneringsindsats

Ikke angivet Når default-justeringen anvendes ved maksimal ræsonneringsindsats

#### Estimerede takster til sammenligning

#### Priser efter konfiguration

Knyt hver omkostning til de viste betingelser. Brug én takst for hver gruppe af alternative konfigurationer.

| Konfiguration | Takstplan | Forventet mængde | Beløb |
| --- | --- | --- | --- |
| KonfigurationGrundpriser for tokens | TakstplanGrundtakst | Forventet mængde— | Beløb Input · Inputtokens · Estimat kun til sammenligning **—** / 1K tokens Output · Outputtokens · Estimat kun til sammenligning **—** / 1K tokens Input · Cachelæsning · Estimat kun til sammenligning **—** / 1K tokens Input · Cacheskrivning · Estimat kun til sammenligning **—** / 1K tokens Input · Cacheskrivning, 1 time · Estimat kun til sammenligning **—** / 1K tokens |
| KonfigurationAnslået genereringsomkostning | Takstplan— | Forventet mængdeestimat for én generering | Beløb Output · Anslået genereringsomkostning · Estimat kun til sammenligning **$0.24576** estimat før generering Dette estimat er hverken et ekstra gebyr eller en fast pris for den færdige generering. |

Ailoot reserverer et estimeret beløb før en anmodning. Efter resultatet afregnes det endelige beløb ud fra det målte forbrug. Ved streaming bruges den endelige forbrugsregistrering til afregningen. [Sådan fungerer reservation og afregning →](https://ailoot.ai/docs/da/billing/reserve/)

### Eksempelanmodninger

#### Ailoot Ultra · Billeder

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

### Hent og gem resultater

#### Ailoot Ultra · Billeder

Hent hvert returneret billede, eller gem dets Base64-indhold

- `GET /v1/media/tasks/{task_id}`
- `GET /v1/media/assets/{asset_id}/content`
- `GET /v1/media/assets`
- `GET /v1/media/assets/{asset_id}`

Læsning af andet indhold

Hent eksisterende filer, du ejer

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

##### Behold alle færdige resultater

Gem hvert færdigt billede; hent hver returneret URL eller afkod dets Base64-indhold.

Gem hele svaret og alle headere, alle faktisk returnerede output, de oprindeligt returnerede identifikatorer og alle felter med forbrugsdata. Gendan den oprindelige operation uden at sende oprettelsesanmodningen igen.

##### Hvis det oprindelige svar skal kontrolleres

Gem det returnerede X-Client-Request-ID til afstemning. Brug kun faktisk returnerede task\_id/asset\_id-værdier eller dit eget mediebibliotek til læseanmodninger; opbyg aldrig en opgave-URL ud fra operations-ID’et, og send aldrig oprettelsesanmodningen igen.

Svarfelter

| Felt | Type |
| --- | --- |
| Felt`created` | Type |
| Felt`data[].url` | Type |
| Felt`data[].b64_json` | Type |
| Felt`usage` | Type |

### Aliaser

#### Modelaliaser

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

#### Aliaser for metodestier

`/v1/images`

#### Relaterede kalder-ID’er

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

FAQ · OpenAI: GPT Image 2

Hvilke input og resultater er tilgængelige?

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

Hvilke felter bruger anmodningen?

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

Hvilke grænser gælder?

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

Tilslut Ailoot til Claude Code, OpenCode, Hermes eller din egen applikation.

## Virksomheden og dens projektportefølje

Virksomheden og dens projektportefølje: millioner af kunder; månedligt salg for milliarder.

## Køb tokens med rabat.

Abonnementsrabat til regelmæssigt arbejde. Rabatkoder giver op til 50% på tokenkøb.

Abonnement

Vælg et abonnement med rabat til dine regelmæssige anmodninger.

Rabatkode på op til 50%

Indtast koden ved købet. Prisen genberegnes efter den aktuelle kampagne.

Udgifter i historikken

Model, tokens og beløb gemmes for hver anmodning.

[Vælg abonnement](https://ailoot.ai/docs/da/billing/subscriptions/) · [Se modelpriser](https://ailoot.ai/models/da/)

## Tilslut API’et til produktet, du sælger.

SaaS, apps og bots efter Ailoots tilbudsvilkår og licensaftale. Anmod om en forhandlerlicens til videresalg.

Kommerciel applikation

Byg generering af tekst, billeder, video og lyd ind i tjenestens betalte funktioner.

Licens til forhandlere

Send projektbeskrivelse og adgangsmodel. Bed om skriftlige vilkår for anvendelse og videresalg.

Dokumenter på websitet

Tilbudsvilkår, licensaftale og politik for behandling af data kan læses før tilslutning.

[Anmod om forhandlerlicens](mailto:support@ailoot.ai) · [Tilbudsvilkår og licensaftale](https://ailoot.ai/legal/offer?lang=da)

## Ailoot · Virksomheden og dens projektportefølje





Ailoot bygger på solid driftserfaring, en stor kundebase, stabil service og løbende kontrol af KPI.





Virksomheden og dens projektportefølje: millioner af kunder; månedligt salg for milliarder.





Ailoot bruger denne driftserfaring til API-adgang til AI-funktioner i kundernes produkter, agenter, applikationer og automatiseringer.
