Source: https://ailoot.ai/models/nb/gpt-image-1-5/
Canonical: https://ailoot.ai/models/nb/gpt-image-1-5/
Language: nb

# GPT Image 1.5

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

## [GPT Image 1.5](https://ailoot.ai/models/nb/gpt-image-1-5/)

GPT Image 1.5 lager bilder fra tekstbaserte oppgaver, med vekt på å følge detaljerte instruksjoner. Tre bildeformer, flere kvalitetsnivåer og resultatformater er tilgjengelige.

- [**Ailoot · Bilder** `POST /v1/images/generations` `gpt-image-1.5`](https://ailoot.ai/models/nb/gpt-image-1-5/#method-0)
- [**Ailoot Ultra · Bilder** `POST /v1/images/generations` `gpt-image-1.5`](https://ailoot.ai/models/nb/gpt-image-1-5/#method-1)

Om modellen

Denne beskrivelsen dekker modellens funksjoner. Tilgjengelige inndata, utdata og alternativer i Ailoot er oppført nedenfor for den valgte metoden.

#### Bilde fra en detaljert oppgave

GPT Image 1.5 er en OpenAI-modell for bildegenerering fra tekstbeskrivelser. Produsenten fremhever etterlevelse av instruksjoner og behandling av detaljerte oppgaver: sceneinnhold, komposisjon, objekters utseende og ønsket stil kan angis. Resultatet fra bildemetoden er et ferdig bilde.

I Ailoot gjelder dette kortet generering med tekst som inndata. OpenAI beskriver også modellarbeid med kildebilder, redigering og endring av bestemte områder. Dette krever separat støtte for visuelle inndata og inngår ikke i den tekstbaserte genereringsmetoden som beskrives her.

I OpenAIs separate redigeringsoperasjon fungerer masken som en veiledning: det er ikke garantert at resultatet følger konturene nøyaktig. Denne operasjonen krever støtte for innsending av et kildebilde; det gjeldende Ailoot-kortet gjelder fortsatt generering med tekst som inndata.

#### Tre bildeformer og kvalitetsinnstillinger

Den kvadratiske størrelsen `1024x1024`, den liggende `1536x1024` og den stående `1024x1536` er tilgjengelige, samt automatisk valg. Vilkårlige størrelser fra andre modeller bør ikke overføres til denne versjonen.

Kvalitetsnivåene er `low`, `medium`, `high` og `auto`. Kvalitetsvalget påvirker behandlingsomfanget og detaljnivået i resultatet. Kvalitet og størrelse er ulike innstillinger: bildeorienteringen bestemmer komposisjonsrommet, mens kvalitetsnivået bestemmer genereringsmodusen. Nivåene `xhigh` og `max` er ikke oppgitt for GPT Image 1.5.

#### Filformat og bakgrunn

Resultatet lages som PNG som standard; JPEG og WebP er også tilgjengelige. For JPEG og WebP kan komprimeringsgraden angis. Dette er en innstilling for resultatfilen som skiller seg fra genereringskvaliteten.

Produsenten tilbyr gjennomsiktig og ugjennomsiktig bakgrunn samt automatisk valg. Gjennomsiktighet krever PNG eller WebP: JPEG bevarer ikke alfakanalen. Gjennomsiktig bakgrunn er praktisk når bildet skal brukes som et separat objekt i en videre komposisjon. Støtten for de konkrete parameterne bør vurderes opp mot valgt metode.

#### Tekst og komposisjon må kontrolleres

Modellen kan inkludere tekst i bildet og sette sammen scener med flere elementer, men nøyaktig plassering av tekst og objekter er ikke garantert. Gjentakbart utseende for samme figur eller utforming mellom separate genereringer krever også kontroll.

Et komplekst bilde kan ta lengre tid å lage enn et enkelt; ifølge OpenAI kan enkelte krevende oppgaver ta opptil to minutter. Både en fullstendig kildebeskrivelse og kontroll av det ferdige bildet er viktig for resultatet: tekstens lesbarhet, detaljplassering og samsvar med den beskrevne scenen vurderes ut fra selve filen.

**Ailoot · Bilder** `POST /v1/images/generations` `gpt-image-1.5`

[`gpt-image-1.5`](https://ailoot.ai/models/nb/#m=gpt-image-1.5&route=Core&caller=gpt-image-1.5&fmt=images)

OpenAI /`gpt-image-1.5`

### Start

GPT Image 1.5 lager bilder fra tekstbaserte oppgaver, med vekt på å følge detaljerte instruksjoner. Tre bildeformer, flere kvalitetsnivåer og resultatformater er tilgjengelige.

Godkjente inndata

Tekst

Resultater

Bilder

### Tilgjengelig i Ailoot · inndata & metoder

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

Inndatatyper

`text`

Utdatatyper

`image`

Utdataformat

Bildefil

| Felt | Type | Krav | Verdier & grenser | Standard |
| --- | --- | --- | --- | --- |
| Felt`model` | Type`string` | KravPåkrevd | Verdier & grenser gpt-image-1.5 | Standard— |
| Felt`prompt` | Type`string` | KravPåkrevd | Verdier & grenser Minste lengde: 1 | Standard— |
| Felt`n` | Type`integer` | KravValgfritt | Verdier & grenser Minimum: 1 | Standard1 |
| Felt`response_format` | Type`string` | KravValgfritt | Verdier & grenser url, b64\_json | Standard— |
| Felt`stream` | Type`boolean` | KravValgfritt | Verdier & grenser | Standardfalse |
| Felt`size` | Type`string` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`quality` | Type`string` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`background` | Type`string` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`output_format` | Type`string` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`output_compression` | Type`integer` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`moderation` | Type`string` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`input_fidelity` | Type`string` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`style` | Type`string` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |
| Felt`partial_images` | Type`integer` | KravValgfritt | Verdier & grenser Avhenger av modellen | Standard— |

Kombinasjoner av inngående materialer

**Tekst til bilde** · Påkrevd: prompt

Metodeparametere og livssyklus

| Parameter | Avtale |
| --- | --- |
| Parameter`material_types` | Avtaletext |
| Parameter`required` | Avtalemodel, prompt |
| Parameter`optional_controls` | Avtalenull |
| Parameter`content_type` | Avtaleapplication/json |

Livssyklus: `synchronous_result_then_owned_library`

`GET /v1/media/tasks/{task_id}` · faktisk returnert task\_id eller oppføring i mediebiblioteket

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

`GET /v1/media/assets`

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

Metodestrukturer og ID-er er eksakte; leverandørens evne er adskilt fra godkjenning av forespørselen.

### Priser

#### Satser for Ailoot-metoder

Tekstinndata

0,005 USD */ 1K*

Tekstutdata

0,01 USD */ 1K*

Inndata, bilde

0,008 USD */ 1K tokens*

Utdata, bilde

0,032 USD */ 1K tokens*

Ailoot reserverer et estimert beløp før en forespørsel. Etter resultatet gjøres det endelige beløpet opp basert på målt forbruk. Oppgjør for strømming bruker den endelige forbruksposten. [Slik fungerer reservasjon og oppgjør →](https://ailoot.ai/docs/nb/billing/reserve/)

### Eksempelforespørsler

#### Ailoot · Bilder

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

### Motta og lagre resultater

#### Ailoot · Bilder

Last ned hvert returnerte bilde eller lagre Base64-innholdet

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

Lagre hvert ferdige bilde; hent hver returnerte URL eller dekod Base64-innholdet.

Lagre hvert dataelement. Dekod hver b64\_json, eller hent hver returnerte signerte URL. Velg filendelse ut fra faktisk MIME-type/byteinnhold.

##### Hvis det opprinnelige svaret må kontrolleres

Hvis et resultat fra bildegenerering eller bilderedigering må kontrolleres, bevar opprinnelig operation\_id/X-Client-Request-ID og den returnerte resultatinformasjonen. Hent eksisterende resultater du eier via mediebiblioteket, ved hjelp av faktiske task\_id- eller asset\_id-verdier. Ikke send genererings-/redigeringsforespørselen på nytt, og ikke konstruer en URL for statusavlesning fra operation\_id.

Svarfelter

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

Feil og neste trinn

| Svar | Vilkår | Neste trinn |
| --- | --- | --- |
| Svar400 · `invalid_request_error` | VilkårUgyldige påkrevde felter, materialrepresentasjon eller parameterverdi | Neste trinnKorriger de angitte feltene før en ny opprettelsesforespørsel. |
| Svar`server_error` | VilkårDet returnerte svaret angir at operasjonen eller resultatet må kontrolleres | Neste trinnBevar den opprinnelige returnerte operasjons-/oppgave-ID-en, forespørselshodene og svaret; fortsett å lese den opprinnelige operasjonen på de støttede måtene. Ikke send opprettelsesforespørselen på nytt. |

### Aliaser

#### Modellaliaser

<strong>Ailoot</strong> [`gpt-image-1.5`](https://ailoot.ai/models/nb/#m=gpt-image-1.5&route=Core&caller=gpt-image-1.5&fmt=images)
**Ailoot Ultra** [`gpt-image-1.5`](https://ailoot.ai/models/nb/#m=gpt-image-1.5&route=Ultra&caller=gpt-image-1.5&fmt=images)

#### Aliaser for metodestier

Bruk metodestiene som vises ovenfor.

#### Tilknyttede anroper-ID-er

[`gpt-image-1.5`](https://ailoot.ai/models/nb/#m=gpt-image-1.5&route=Core&caller=gpt-image-1.5&fmt=images), [`gpt-image-1.5`](https://ailoot.ai/models/nb/#m=gpt-image-1.5&route=Ultra&caller=gpt-image-1.5&fmt=images)

**Ailoot Ultra · Bilder** `POST /v1/images/generations` `gpt-image-1.5`

[`gpt-image-1.5`](https://ailoot.ai/models/nb/#m=gpt-image-1.5&route=Ultra&caller=gpt-image-1.5&fmt=images)

OpenAI /`gpt-image-1.5`

### Start

GPT Image 1.5 lager bilder fra tekstbaserte oppgaver, med vekt på å følge detaljerte instruksjoner. Tre bildeformer, flere kvalitetsnivåer og resultatformater er tilgjengelige.

Godkjente inndata

Tekst

Resultater

Bilder

### Tilgjengelig i Ailoot · inndata & metoder

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

Inndatatyper

`text`

Utdatatyper

`image`

| Felt | Type | Krav | Verdier & grenser | Standard |
| --- | --- | --- | --- | --- |
| Felt`model` | Type`string` | KravPåkrevd | Verdier & grenser gpt-image-1.5 | Standard— |
| Felt`prompt` | Type`string` | KravPåkrevd | Verdier & grenser Maksimal lengde: 32 000 | Standard— |
| Felt`size` | Type`string` | KravValgfritt | Verdier & grenser 1024x1024, 1536x1024, 1024x1536, auto | Standardauto |
| Felt`background` | Type`string` | KravValgfritt | Verdier & grenser transparent, opaque, auto | Standardauto |
| Felt`moderation` | Type`string` | KravValgfritt | Verdier & grenser low, auto Vilkår: Bruk auto for standard innholdsmoderering. | Standard— |
| Felt`n` | Type`integer` | KravValgfritt | Verdier & grenser Minimum: 1 Maksimum: 10 | Standard1 |
| Felt`quality` | Type`string` | KravValgfritt | Verdier & grenser auto, high, medium, low | Standardauto |
| Felt`output_compression` | Type`integer` | KravValgfritt | Verdier & grenser Minimum: 0 Maksimum: 100 Vilkår: Gjelder utdata i JPEG og WebP; send den dokumenterte heltallsverdien. | Standard100 |
| Felt`output_format` | Type`string` | KravValgfritt | Verdier & grenser webp, png, jpeg | Standardpng |
| Felt`stream` | Type`boolean` | KravValgfritt | Verdier & grenser false Vilkår: Denne ruten returnerer ett ferdigstilt JSON-svar. | Standardfalse |

Metodeparametere og livssyklus

| Parameter | Avtale |
| --- | --- |
| Parameter`content_type` | Avtaleapplication/json |
| Parameter`required` | Avtaleprompt, model |
| Parameter`material_types` | Avtaletext |
| Parameter`optional` | Avtalesize, background, moderation, n, quality, output\_compression, output\_format, stream |
| Parameter`conditions` | AvtaleGjennomsiktig bakgrunn krever PNG eller WebP., Komprimering av utdata gjelder JPEG eller WebP., Den valgte metoden genererer fra tekst. Redigerings- og strømmingsparametere som beskrives for produsenten, er separate funksjoner. |

Livssyklus: `synchronous_result_then_owned_library`

`GET /v1/media/tasks/{task_id}` · faktisk returnert task\_id eller oppføring i mediebiblioteket

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

`GET /v1/media/assets`

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

### Priser

##### Slik beregnes det endelige beløpet

De viste satsene anslår kostnaden før generering. Det endelige beløpet beregnes ut fra kostnaden som er registrert for den opprinnelige genereringen. Målt varighet på utdataene og anslåtte mengder er ikke den endelige fakturerbare mengden.

Tariffopplysninger legger ikke til forespørselsvalg. Støttede parametere står ved den valgte metoden.

Hurtigmodus

Ikke angitt Når hurtigmodus er valgt

Flex-modus

Ikke angitt Når flex-modus er valgt

Maksimal resonneringsinnsats

Ikke angitt Når justeringen «default» brukes for maksimal resonneringsinnsats

#### Estimerte satser for sammenligning

#### Priser etter konfigurasjon

Knytt hver kostnad til de viste vilkårene. Bruk én sats for hvert sett med alternative konfigurasjoner.

| Konfigurasjon | Prisplan | Forventet mengde | Kostnad |
| --- | --- | --- | --- |
| KonfigurasjonGrunnpriser for tokener | PrisplanGrunnsats | Forventet mengde— | Kostnad Inndata · Inngående tokener · Estimat kun for sammenligning **—** / 1K tokener Utdata · Utgående tokener · Estimat kun for sammenligning **—** / 1K tokener Inndata · Lesing fra hurtigbuffer · Estimat kun for sammenligning **—** / 1K tokener Inndata · Skriving til hurtigbuffer · Estimat kun for sammenligning **—** / 1K tokener Inndata · Skriving til hurtigbuffer, 1 time · Estimat kun for sammenligning **—** / 1K tokener |
| KonfigurasjonAnslått genereringskostnad | Prisplan— | Forventet mengdeestimat for én generering | Kostnad Utdata · Anslått genereringskostnad · Estimat kun for sammenligning **$0.32768** estimat før generering Dette anslaget er verken en tilleggsavgift eller en fast sats for den fullførte genereringen. |

Ailoot reserverer et estimert beløp før en forespørsel. Etter resultatet gjøres det endelige beløpet opp basert på målt forbruk. Oppgjør for strømming bruker den endelige forbruksposten. [Slik fungerer reservasjon og oppgjør →](https://ailoot.ai/docs/nb/billing/reserve/)

### Eksempelforespørsler

#### Ailoot Ultra · Bilder

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-1.5', '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
```

### Motta og lagre resultater

#### Ailoot Ultra · Bilder

Last ned hvert returnerte bilde eller lagre Base64-innholdet

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

Andre innholdslesinger

Les eksisterende ressurser som tilhører deg

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

Lagre hvert ferdige bilde; hent hver returnerte URL eller dekod Base64-innholdet.

Bevar hele svaret og svarhodene, alle faktiske utdata, de opprinnelige returnerte identifikatorene og alle bruksfeltene. Hent den opprinnelige operasjonen igjen uten å sende opprettelsesforespørselen på nytt.

##### Hvis det opprinnelige svaret må kontrolleres

Bevar returnert X-Client-Request-ID for avstemming. Les bare faktisk returnerte task\_id/asset\_id-verdier eller egne oppføringer i mediebiblioteket; bygg aldri en oppgave-URL fra operasjons-ID-en, og send aldri opprettelsesforespørselen på nytt.

Svarfelter

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

### Aliaser

#### Modellaliaser

<strong>Ailoot</strong> [`gpt-image-1.5`](https://ailoot.ai/models/nb/#m=gpt-image-1.5&route=Core&caller=gpt-image-1.5&fmt=images)
**Ailoot Ultra** [`gpt-image-1.5`](https://ailoot.ai/models/nb/#m=gpt-image-1.5&route=Ultra&caller=gpt-image-1.5&fmt=images)

#### Aliaser for metodestier

Bruk metodestiene som vises ovenfor.

#### Tilknyttede anroper-ID-er

[`gpt-image-1.5`](https://ailoot.ai/models/nb/#m=gpt-image-1.5&route=Core&caller=gpt-image-1.5&fmt=images), [`gpt-image-1.5`](https://ailoot.ai/models/nb/#m=gpt-image-1.5&route=Ultra&caller=gpt-image-1.5&fmt=images)

FAQ · GPT Image 1.5

Hvilke inndata og resultater er tilgjengelige?

`POST /v1/images/generations` · `gpt-image-1.5`: `text` → `image` `POST /v1/images/generations` · `gpt-image-1.5`: `text` → `image`

Hvilke felt bruker forespørselen?

`POST /v1/images/generations` · `gpt-image-1.5`: `model`, `prompt`, `n`, `response_format`, `stream` `POST /v1/images/generations` · `gpt-image-1.5`: `model`, `prompt`, `size`, `background`, `moderation`, `n`, `quality`, `output_compression`, `output_format`, `stream`

Hvilke grenser gjelder?

`POST /v1/images/generations` · `gpt-image-1.5`: `n.minimum`: `1` `POST /v1/images/generations` · `gpt-image-1.5`: `prompt.maximum_length`: `32000`; `n.minimum`: `1`; `n.maximum`: `10`; `output_compression.minimum`: `0`; `output_compression.maximum`: `100`

Koble Ailoot til Claude Code, OpenCode, Hermes eller egen applikasjon.

## Selskapet og dets prosjektportefølje

Selskapet og dets prosjektportefølje: millioner av kunder; månedlig salg for milliarder.

## Kjøp tokener med rabatt.

Abonnementsrabatt for jevnlig bruk. Kampanjekoder gir opptil 50% på tokenkjøp.

Abonnement

Velg et rabattabonnement for faste forespørsler.

Kampanjekode opptil 50%

Oppgi kode ved kjøp. Prisen beregnes på nytt etter gjeldende kampanje.

Kostnader i historikken

Modell, tokener og beløp lagres for hver forespørsel.

[Velg abonnement](https://ailoot.ai/docs/nb/billing/subscriptions/) · [Se modellpriser](https://ailoot.ai/models/nb/)

## Koble API-et til produktet du selger.

SaaS, apper og boter etter Ailoots offentlige tilbud og lisensavtale. Be om forhandlerlisens for videresalg.

Kommersiell applikasjon

Bygg tekst-, bilde-, video- og lydgenerering inn i betalte funksjoner i tjenesten.

Forhandlerlisens

Send prosjektbeskrivelse og tilgangsopplegg. Be om skriftlige vilkår for bruk og videresalg.

Dokumenter på nettstedet

Offentlig tilbud, lisensavtale og retningslinjer for databehandling er tilgjengelige før tilkobling.

[Be om forhandlerlisens](mailto:support@ailoot.ai) · [Offentlig tilbud og lisensavtale](https://ailoot.ai/legal/offer?lang=nb)

## Ailoot · Selskapet og dets prosjektportefølje





Ailoot bygger på etablert driftserfaring, en stor kundebase, stabil tjeneste og løpende KPI-kontroll.





Selskapet og dets prosjektportefølje: millioner av kunder; månedlig salg for milliarder.





Ailoot bruker denne driftserfaringen til API-tilgang til AI-funksjoner i kundenes produkter, agenter, applikasjoner og automatiseringer.
