models

GPT Image 2.5 Sunburst

Markdown · JSON

GPT Image 2.5 Sunburst

GPT Image 2.5 Sunburst kuria vaizdus pagal tekstinę užduotį. Palaiko pasirinktinius dydžius, išplėstus kokybės lygius ir skaidrų foną; gamintojas taip pat išskiria redagavimo tikslumą.

Apie modelį

Šis aprašas apima modelio galimybes. Pasirinktam metodui Ailoot prieinamos įvestys, išvestys ir parinktys nurodytos toliau.

Generavimas ir darbas su vaizdu

GPT Image 2.5 Sunburst — OpenAI modelis vaizdams kurti. Gamintojas ypatingą dėmesį skiria pradinės medžiagos redagavimo tikslumui. Modelis palaiko tekstines užduotis ir tam numatytose operacijose — pradinius vaizdus.

Dabartinėje Ailoot kortelėje pateiktas vaizdo kūrimo iš teksto režimas. Galima nustatyti sceną, kompoziciją, stilistiką ir būsimo rezultato detales. OpenAI aprašyti darbo su pavyzdiniais vaizdais, redagavimo ir srities keitimo pagal kaukę būdai reikalauja atskiro įvesties vaizdų palaikymo; tekstinio generavimo buvimas jo nepatvirtina.

Kokybė ir kadro formatas

Prieinami low, medium, high, xhigh, max ir auto. Kokybės pasirinkimas valdo vaizdo formavimo režimą. Jis skiriasi nuo kompozicijos dydžio ir gauto failo suspaudimo laipsnio.

Dydis gali būti kvadratinis, horizontalus, vertikalus, pasirinktas automatiškai arba nustatytas rankiniu būdu. Nustatant pasirinktinį dydį, kiekviena kraštinė yra 16 pikselių kartotinis ir neviršija 3840 pikselių. Plotas turi būti nuo 655 360 iki 8 294 400 pikselių, o ilgosios ir trumposios kraštinių santykis — neviršyti 3:1. Visos sąlygos taikomos vienu metu.

Gamintojas didesnes nei 2560x1440 raiškas žymi kaip eksperimentines. Didelis kadras leidžia pasirinkti tinkamą kompozicijos erdvę, tačiau nepanaikina užrašų ir objektų išdėstymo patikros.

Rezultato formatai ir fonas

PNG naudojamas pagal numatymą; taip pat numatyti JPEG ir WebP. JPEG ir WebP galima reguliuoti suspaudimą. Skaidriam fonui reikia PNG arba WebP, nes JPEG neišsaugo alfa kanalo. Be skaidrumo, numatyti neskaidrus fonas ir automatinis pasirinkimas.

Dydis, kokybė, formatas ir fonas atsakingi už skirtingus rezultato aspektus. Vaizdo stilius nustatomas tekstiniu aprašymu kartu su scenos turiniu. Konkrečių nustatymų palaikymą reikėtų vertinti atskirai nuo bendrų gamintojo galimybių.

Redagavimo tikslumas ir vaizdo patikra

OpenAI duomenimis, sudėtingos užduoties apdorojimas gali trukti iki dviejų minučių. Tai generavimo gamintojo sistemoje aprašymas, o ne viso rezultato gavimo laiko konkrečioje programoje garantija.

Atskirai palaikomoje redagavimo operacijoje kaukė nukreipia pasirinktos srities keitimą. Ji negarantuoja griežto rezultato sutapimo su riba, todėl tikslaus vietinio pakeitimo pažadas būtų per stiprus. Tokiam režimui taikyti reikia atitinkamo pradinio vaizdo perdavimo būdo.

Generuodamas modelis taip pat gali suklysti išdėstydamas tekstą ir detales arba pakeisti veikėjo išvaizdą tarp atskirų vaizdų. Užrašų, kompozicijos ir pasikartojimo kontrolė yra paruošto failo patikros dalis. Net išsami užduotis nepaverčia šių savybių garantuotomis.

Ailoot · Vaizdai POST /v1/images/generations gpt-image-2.5-sunburst

gpt-image-2.5-sunburst

OpenAI /gpt-image-2.5-sunburst
Modelio ID
  • gpt-image-2.5-sunburst
  • gpt-image
  • gpt-image-2.5
  • gpt-image-2.5-latest
  • gpt-image-latest

Pradžia

GPT Image 2.5 Sunburst kuria vaizdus pagal tekstinę užduotį. Palaiko pasirinktinius dydžius, išplėstus kokybės lygius ir skaidrų foną; gamintojas taip pat išskiria redagavimo tikslumą.

Leidžiamos įvestys
Tekstas
Rezultatai
Vaizdai

Prieinama Ailoot · įvestys ir metodai

Ailoot · Vaizdai POST /v1/images/generations
Įvestis
text
Išvestis
image
Išvesties formatas
Vaizdo failas
LaukasTipasReikalavimasReikšmės ir ribosNumatyta
LaukasmodelTipasstringReikalavimasPrivalomaReikšmės ir ribos
gpt-image-2.5-sunburst
Numatyta—
LaukaspromptTipasstringReikalavimasPrivalomaReikšmės ir ribos
Mažiausias ilgis: 1
Numatyta—
LaukasnTipasintegerReikalavimasNeprivalomaReikšmės ir ribos
Mažiausia reikšmė: 1
Numatyta1
Laukasresponse_formatTipasstringReikalavimasNeprivalomaReikšmės ir ribos
url, b64_json
Numatyta—
LaukasstreamTipasbooleanReikalavimasNeprivalomaReikšmės ir ribosNumatytafalse
LaukassizeTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
LaukasqualityTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
LaukasbackgroundTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
Laukasoutput_formatTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
Laukasoutput_compressionTipasintegerReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
LaukasmoderationTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
Laukasinput_fidelityTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
LaukasstyleTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
Laukaspartial_imagesTipasintegerReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
Įvesties medžiagos deriniai

Iš teksto į vaizdą · Privaloma: prompt

Metodo parametrai ir gyvavimo ciklas
ParametrasSpecifikacija
Parametrasmaterial_typesSpecifikacijatext
ParametrasrequiredSpecifikacijamodel, prompt
Parametrasoptional_controlsSpecifikacijanull
Parametrascontent_typeSpecifikacijaapplication/json

Gyvavimo ciklas: synchronous_result_then_owned_library

GET /v1/media/tasks/{task_id} · faktiškai grąžinta task_id reikšmė arba medijos bibliotekos įrašas

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

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

Metodų struktūros ir ID yra tikslūs; tiekėjo galimybės yra atskirtos nuo užklausos priėmimo.

Planai

Ailoot metodų įkainiai

Ailoot VaizdaiPOST /v1/images/generations
Tekstinė įvestis
0,005 USD / 1K
Įvestis, vaizdas
0,008 USD / 1K tokens
Išvestis, vaizdas
0,03 USD / 1K tokens

Ailoot prieš užklausą rezervuoja numatomą sumą. Gavus rezultatą, galutinis mokestis nuskaitomas pagal išmatuotą naudojimą. Srautinio atsakymo atsiskaitymui naudojamas galutinis naudojimo įrašas. Kaip veikia rezervavimas ir atsiskaitymas →

Užklausų pavyzdžiai

Ailoot · Vaizdai

curlPython SDKNode.js SDK
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.5-sunburst", "prompt": ""}')
f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 brief")
p['prompt']=f.read_text(encoding="utf-8")
if not p['prompt'].strip():raise SystemExit("Brief must contain text")
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT
from openai import OpenAI
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")

f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Set your actual UTF-8 image brief file")
request={'model': 'gpt-image-2.5-sunburst', 'prompt': ''}
request["prompt"]=f.read_text(encoding="utf-8")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.images.generate(**request)
Path("sdk-result.txt").write_text(str(result),encoding="utf-8")
save_images([{"b64_json":getattr(item,"b64_json",None),"url":getattr(item,"url",None)} for item in result.data])
import OpenAI from "openai";
import { readFileSync, writeFileSync } from "node:fs";
const key=process.env.AILOOT_API_KEY;
if(!key) throw new Error("Set your actual Ailoot API key");
const client=new OpenAI({baseURL:"https://api.ailoot.ai/v1",apiKey:key,maxRetries:0});
const request={"model": "gpt-image-2.5-sunburst", "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");

Gauti ir išsaugoti rezultatus

Ailoot · Vaizdai

Atsisiųskite kiekvieną grąžintą vaizdą arba išsaugokite jo Base64 turinį

  • GET /v1/media/tasks/{task_id}
  • GET /v1/media/assets/{asset_id}/content
  • GET /v1/media/assets
  • GET /v1/media/assets/{asset_id}
Išsaugoti visus baigtus rezultatus

Išsaugokite kiekvieną baigtą vaizdą; gaukite turinį iš kiekvieno grąžinto URL arba dekoduokite jo Base64 turinį.

Išsaugokite kiekvieną duomenų elementą. Iškoduokite kiekvieną b64_json arba atsisiųskite turinį pagal kiekvieną grąžintą pasirašytą URL. Failo plėtinį pasirinkite pagal faktinį MIME tipą ir baitus.

Jei reikia patikrinti pradinį atsakymą

Jei vaizdo generavimo ar redagavimo rezultatą reikia patikrinti, išsaugokite pradinį operation_id/X-Client-Request-ID ir grąžintą informaciją apie rezultatą. Atkurkite prieigą prie esamų jums priklausančių rezultatų per medijos biblioteką, naudodami faktines task_id arba asset_id reikšmes. Pakartotinai neteikite generavimo ar redagavimo užklausos ir nekurkite būsenos tikrinimo URL iš operation_id.

Atsakymo laukai
LaukasTipas
LaukascreatedTipasinteger
Laukasdata[].urlTipasstring
Laukasdata[].b64_jsonTipasbase64 string
LaukasusageTipasobject
Klaidos ir tolesni veiksmai
AtsakymasSąlygaKitas žingsnis
Atsakymas400 · invalid_request_errorSąlygaNetinkami privalomi laukai, medžiagos pateikimo forma arba parametro reikšmėKitas žingsnisPrieš naują kūrimo užklausą pataisykite nurodytus laukus.
Atsakymasserver_errorSąlygaGrąžintame atsakyme nurodoma, kad operaciją arba rezultatą reikia patikrintiKitas žingsnisIšsaugokite pradinį grąžintą operacijos ar užduoties ID, užklausos antraštes ir atsakymą; toliau tikrinkite tos pačios pradinės operacijos duomenis palaikomais būdais. Kūrimo užklausos pakartotinai neteikite.

Pseudonimai

Modelių pseudonimai

Ailoot gpt-image-2.5-sunburst, gpt-image, gpt-image-2.5, gpt-image-2.5-latest, gpt-image-latest

Metodų kelių pseudonimai

Naudokite aukščiau nurodytus metodų kelius.

Susiję ID iškvietimui

gpt-image-2.5-sunburst, gpt-image, gpt-image-2.5, gpt-image-2.5-latest, gpt-image-latest

Ailoot · Vaizdai POST /v1/images/generations gpt-image

gpt-image

OpenAI /gpt-image
Modelio ID
  • gpt-image-2.5-sunburst
  • gpt-image
  • gpt-image-2.5
  • gpt-image-2.5-latest
  • gpt-image-latest

Pradžia

GPT Image 2.5 Sunburst kuria vaizdus pagal tekstinę užduotį. Palaiko pasirinktinius dydžius, išplėstus kokybės lygius ir skaidrų foną; gamintojas taip pat išskiria redagavimo tikslumą.

Leidžiamos įvestys
Tekstas
Rezultatai
Vaizdai

Prieinama Ailoot · įvestys ir metodai

Ailoot · Vaizdai POST /v1/images/generations
Įvestis
text
Išvestis
image
Išvesties formatas
Vaizdo failas
LaukasTipasReikalavimasReikšmės ir ribosNumatyta
LaukasmodelTipasstringReikalavimasPrivalomaReikšmės ir ribos
gpt-image
Numatyta—
LaukaspromptTipasstringReikalavimasPrivalomaReikšmės ir ribos
Mažiausias ilgis: 1
Numatyta—
LaukasnTipasintegerReikalavimasNeprivalomaReikšmės ir ribos
Mažiausia reikšmė: 1
Numatyta1
Laukasresponse_formatTipasstringReikalavimasNeprivalomaReikšmės ir ribos
url, b64_json
Numatyta—
LaukasstreamTipasbooleanReikalavimasNeprivalomaReikšmės ir ribosNumatytafalse
LaukassizeTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
LaukasqualityTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
LaukasbackgroundTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
Laukasoutput_formatTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
Laukasoutput_compressionTipasintegerReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
LaukasmoderationTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
Laukasinput_fidelityTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
LaukasstyleTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
Laukaspartial_imagesTipasintegerReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
Įvesties medžiagos deriniai

Iš teksto į vaizdą · Privaloma: prompt

Metodo parametrai ir gyvavimo ciklas
ParametrasSpecifikacija
Parametrasmaterial_typesSpecifikacijatext
ParametrasrequiredSpecifikacijamodel, prompt
Parametrasoptional_controlsSpecifikacijanull
Parametrascontent_typeSpecifikacijaapplication/json

Gyvavimo ciklas: synchronous_result_then_owned_library

GET /v1/media/tasks/{task_id} · faktiškai grąžinta task_id reikšmė arba medijos bibliotekos įrašas

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

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

Metodų struktūros ir ID yra tikslūs; tiekėjo galimybės yra atskirtos nuo užklausos priėmimo.

Planai

Ailoot metodų įkainiai

Ailoot VaizdaiPOST /v1/images/generations
Tekstinė įvestis
0,005 USD / 1K
Įvestis, vaizdas
0,008 USD / 1K tokens
Išvestis, vaizdas
0,03 USD / 1K tokens

Ailoot prieš užklausą rezervuoja numatomą sumą. Gavus rezultatą, galutinis mokestis nuskaitomas pagal išmatuotą naudojimą. Srautinio atsakymo atsiskaitymui naudojamas galutinis naudojimo įrašas. Kaip veikia rezervavimas ir atsiskaitymas →

Užklausų pavyzdžiai

Ailoot · Vaizdai

curlPython SDKNode.js SDK
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", "prompt": ""}')
f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 brief")
p['prompt']=f.read_text(encoding="utf-8")
if not p['prompt'].strip():raise SystemExit("Brief must contain text")
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT
from openai import OpenAI
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")

f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Set your actual UTF-8 image brief file")
request={'model': 'gpt-image', 'prompt': ''}
request["prompt"]=f.read_text(encoding="utf-8")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.images.generate(**request)
Path("sdk-result.txt").write_text(str(result),encoding="utf-8")
save_images([{"b64_json":getattr(item,"b64_json",None),"url":getattr(item,"url",None)} for item in result.data])
import OpenAI from "openai";
import { readFileSync, writeFileSync } from "node:fs";
const key=process.env.AILOOT_API_KEY;
if(!key) throw new Error("Set your actual Ailoot API key");
const client=new OpenAI({baseURL:"https://api.ailoot.ai/v1",apiKey:key,maxRetries:0});
const request={"model": "gpt-image", "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");

Gauti ir išsaugoti rezultatus

Ailoot · Vaizdai

Atsisiųskite kiekvieną grąžintą vaizdą arba išsaugokite jo Base64 turinį

  • GET /v1/media/tasks/{task_id}
  • GET /v1/media/assets/{asset_id}/content
  • GET /v1/media/assets
  • GET /v1/media/assets/{asset_id}
Išsaugoti visus baigtus rezultatus

Išsaugokite kiekvieną baigtą vaizdą; gaukite turinį iš kiekvieno grąžinto URL arba dekoduokite jo Base64 turinį.

Išsaugokite kiekvieną duomenų elementą. Iškoduokite kiekvieną b64_json arba atsisiųskite turinį pagal kiekvieną grąžintą pasirašytą URL. Failo plėtinį pasirinkite pagal faktinį MIME tipą ir baitus.

Jei reikia patikrinti pradinį atsakymą

Jei vaizdo generavimo ar redagavimo rezultatą reikia patikrinti, išsaugokite pradinį operation_id/X-Client-Request-ID ir grąžintą informaciją apie rezultatą. Atkurkite prieigą prie esamų jums priklausančių rezultatų per medijos biblioteką, naudodami faktines task_id arba asset_id reikšmes. Pakartotinai neteikite generavimo ar redagavimo užklausos ir nekurkite būsenos tikrinimo URL iš operation_id.

Atsakymo laukai
LaukasTipas
LaukascreatedTipasinteger
Laukasdata[].urlTipasstring
Laukasdata[].b64_jsonTipasbase64 string
LaukasusageTipasobject
Klaidos ir tolesni veiksmai
AtsakymasSąlygaKitas žingsnis
Atsakymas400 · invalid_request_errorSąlygaNetinkami privalomi laukai, medžiagos pateikimo forma arba parametro reikšmėKitas žingsnisPrieš naują kūrimo užklausą pataisykite nurodytus laukus.
Atsakymasserver_errorSąlygaGrąžintame atsakyme nurodoma, kad operaciją arba rezultatą reikia patikrintiKitas žingsnisIšsaugokite pradinį grąžintą operacijos ar užduoties ID, užklausos antraštes ir atsakymą; toliau tikrinkite tos pačios pradinės operacijos duomenis palaikomais būdais. Kūrimo užklausos pakartotinai neteikite.

Pseudonimai

Modelių pseudonimai

Ailoot gpt-image-2.5-sunburst, gpt-image, gpt-image-2.5, gpt-image-2.5-latest, gpt-image-latest

Metodų kelių pseudonimai

Naudokite aukščiau nurodytus metodų kelius.

Susiję ID iškvietimui

gpt-image-2.5-sunburst, gpt-image, gpt-image-2.5, gpt-image-2.5-latest, gpt-image-latest

Ailoot · Vaizdai POST /v1/images/generations gpt-image-2.5

gpt-image-2.5

OpenAI /gpt-image-2.5
Modelio ID
  • gpt-image-2.5-sunburst
  • gpt-image
  • gpt-image-2.5
  • gpt-image-2.5-latest
  • gpt-image-latest

Pradžia

GPT Image 2.5 Sunburst kuria vaizdus pagal tekstinę užduotį. Palaiko pasirinktinius dydžius, išplėstus kokybės lygius ir skaidrų foną; gamintojas taip pat išskiria redagavimo tikslumą.

Leidžiamos įvestys
Tekstas
Rezultatai
Vaizdai

Prieinama Ailoot · įvestys ir metodai

Ailoot · Vaizdai POST /v1/images/generations
Įvestis
text
Išvestis
image
Išvesties formatas
Vaizdo failas
LaukasTipasReikalavimasReikšmės ir ribosNumatyta
LaukasmodelTipasstringReikalavimasPrivalomaReikšmės ir ribos
gpt-image-2.5
Numatyta—
LaukaspromptTipasstringReikalavimasPrivalomaReikšmės ir ribos
Mažiausias ilgis: 1
Numatyta—
LaukasnTipasintegerReikalavimasNeprivalomaReikšmės ir ribos
Mažiausia reikšmė: 1
Numatyta1
Laukasresponse_formatTipasstringReikalavimasNeprivalomaReikšmės ir ribos
url, b64_json
Numatyta—
LaukasstreamTipasbooleanReikalavimasNeprivalomaReikšmės ir ribosNumatytafalse
LaukassizeTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
LaukasqualityTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
LaukasbackgroundTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
Laukasoutput_formatTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
Laukasoutput_compressionTipasintegerReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
LaukasmoderationTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
Laukasinput_fidelityTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
LaukasstyleTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
Laukaspartial_imagesTipasintegerReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
Įvesties medžiagos deriniai

Iš teksto į vaizdą · Privaloma: prompt

Metodo parametrai ir gyvavimo ciklas
ParametrasSpecifikacija
Parametrasmaterial_typesSpecifikacijatext
ParametrasrequiredSpecifikacijamodel, prompt
Parametrasoptional_controlsSpecifikacijanull
Parametrascontent_typeSpecifikacijaapplication/json

Gyvavimo ciklas: synchronous_result_then_owned_library

GET /v1/media/tasks/{task_id} · faktiškai grąžinta task_id reikšmė arba medijos bibliotekos įrašas

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

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

Metodų struktūros ir ID yra tikslūs; tiekėjo galimybės yra atskirtos nuo užklausos priėmimo.

Planai

Ailoot metodų įkainiai

Ailoot VaizdaiPOST /v1/images/generations
Tekstinė įvestis
0,005 USD / 1K
Įvestis, vaizdas
0,008 USD / 1K tokens
Išvestis, vaizdas
0,03 USD / 1K tokens

Ailoot prieš užklausą rezervuoja numatomą sumą. Gavus rezultatą, galutinis mokestis nuskaitomas pagal išmatuotą naudojimą. Srautinio atsakymo atsiskaitymui naudojamas galutinis naudojimo įrašas. Kaip veikia rezervavimas ir atsiskaitymas →

Užklausų pavyzdžiai

Ailoot · Vaizdai

curlPython SDKNode.js SDK
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.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
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.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])
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.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");

Gauti ir išsaugoti rezultatus

Ailoot · Vaizdai

Atsisiųskite kiekvieną grąžintą vaizdą arba išsaugokite jo Base64 turinį

  • GET /v1/media/tasks/{task_id}
  • GET /v1/media/assets/{asset_id}/content
  • GET /v1/media/assets
  • GET /v1/media/assets/{asset_id}
Išsaugoti visus baigtus rezultatus

Išsaugokite kiekvieną baigtą vaizdą; gaukite turinį iš kiekvieno grąžinto URL arba dekoduokite jo Base64 turinį.

Išsaugokite kiekvieną duomenų elementą. Iškoduokite kiekvieną b64_json arba atsisiųskite turinį pagal kiekvieną grąžintą pasirašytą URL. Failo plėtinį pasirinkite pagal faktinį MIME tipą ir baitus.

Jei reikia patikrinti pradinį atsakymą

Jei vaizdo generavimo ar redagavimo rezultatą reikia patikrinti, išsaugokite pradinį operation_id/X-Client-Request-ID ir grąžintą informaciją apie rezultatą. Atkurkite prieigą prie esamų jums priklausančių rezultatų per medijos biblioteką, naudodami faktines task_id arba asset_id reikšmes. Pakartotinai neteikite generavimo ar redagavimo užklausos ir nekurkite būsenos tikrinimo URL iš operation_id.

Atsakymo laukai
LaukasTipas
LaukascreatedTipasinteger
Laukasdata[].urlTipasstring
Laukasdata[].b64_jsonTipasbase64 string
LaukasusageTipasobject
Klaidos ir tolesni veiksmai
AtsakymasSąlygaKitas žingsnis
Atsakymas400 · invalid_request_errorSąlygaNetinkami privalomi laukai, medžiagos pateikimo forma arba parametro reikšmėKitas žingsnisPrieš naują kūrimo užklausą pataisykite nurodytus laukus.
Atsakymasserver_errorSąlygaGrąžintame atsakyme nurodoma, kad operaciją arba rezultatą reikia patikrintiKitas žingsnisIšsaugokite pradinį grąžintą operacijos ar užduoties ID, užklausos antraštes ir atsakymą; toliau tikrinkite tos pačios pradinės operacijos duomenis palaikomais būdais. Kūrimo užklausos pakartotinai neteikite.

Pseudonimai

Modelių pseudonimai

Ailoot gpt-image-2.5-sunburst, gpt-image, gpt-image-2.5, gpt-image-2.5-latest, gpt-image-latest

Metodų kelių pseudonimai

Naudokite aukščiau nurodytus metodų kelius.

Susiję ID iškvietimui

gpt-image-2.5-sunburst, gpt-image, gpt-image-2.5, gpt-image-2.5-latest, gpt-image-latest

Ailoot · Vaizdai POST /v1/images/generations gpt-image-2.5-latest

gpt-image-2.5-latest

OpenAI /gpt-image-2.5-latest
Modelio ID
  • gpt-image-2.5-sunburst
  • gpt-image
  • gpt-image-2.5
  • gpt-image-2.5-latest
  • gpt-image-latest

Pradžia

GPT Image 2.5 Sunburst kuria vaizdus pagal tekstinę užduotį. Palaiko pasirinktinius dydžius, išplėstus kokybės lygius ir skaidrų foną; gamintojas taip pat išskiria redagavimo tikslumą.

Leidžiamos įvestys
Tekstas
Rezultatai
Vaizdai

Prieinama Ailoot · įvestys ir metodai

Ailoot · Vaizdai POST /v1/images/generations
Įvestis
text
Išvestis
image
Išvesties formatas
Vaizdo failas
LaukasTipasReikalavimasReikšmės ir ribosNumatyta
LaukasmodelTipasstringReikalavimasPrivalomaReikšmės ir ribos
gpt-image-2.5-latest
Numatyta—
LaukaspromptTipasstringReikalavimasPrivalomaReikšmės ir ribos
Mažiausias ilgis: 1
Numatyta—
LaukasnTipasintegerReikalavimasNeprivalomaReikšmės ir ribos
Mažiausia reikšmė: 1
Numatyta1
Laukasresponse_formatTipasstringReikalavimasNeprivalomaReikšmės ir ribos
url, b64_json
Numatyta—
LaukasstreamTipasbooleanReikalavimasNeprivalomaReikšmės ir ribosNumatytafalse
LaukassizeTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
LaukasqualityTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
LaukasbackgroundTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
Laukasoutput_formatTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
Laukasoutput_compressionTipasintegerReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
LaukasmoderationTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
Laukasinput_fidelityTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
LaukasstyleTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
Laukaspartial_imagesTipasintegerReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
Įvesties medžiagos deriniai

Iš teksto į vaizdą · Privaloma: prompt

Metodo parametrai ir gyvavimo ciklas
ParametrasSpecifikacija
Parametrasmaterial_typesSpecifikacijatext
ParametrasrequiredSpecifikacijamodel, prompt
Parametrasoptional_controlsSpecifikacijanull
Parametrascontent_typeSpecifikacijaapplication/json

Gyvavimo ciklas: synchronous_result_then_owned_library

GET /v1/media/tasks/{task_id} · faktiškai grąžinta task_id reikšmė arba medijos bibliotekos įrašas

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

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

Metodų struktūros ir ID yra tikslūs; tiekėjo galimybės yra atskirtos nuo užklausos priėmimo.

Planai

Ailoot metodų įkainiai

Ailoot VaizdaiPOST /v1/images/generations
Tekstinė įvestis
0,005 USD / 1K
Įvestis, vaizdas
0,008 USD / 1K tokens
Išvestis, vaizdas
0,03 USD / 1K tokens

Ailoot prieš užklausą rezervuoja numatomą sumą. Gavus rezultatą, galutinis mokestis nuskaitomas pagal išmatuotą naudojimą. Srautinio atsakymo atsiskaitymui naudojamas galutinis naudojimo įrašas. Kaip veikia rezervavimas ir atsiskaitymas →

Užklausų pavyzdžiai

Ailoot · Vaizdai

curlPython SDKNode.js SDK
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.5-latest", "prompt": ""}')
f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 brief")
p['prompt']=f.read_text(encoding="utf-8")
if not p['prompt'].strip():raise SystemExit("Brief must contain text")
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT
from openai import OpenAI
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")

f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Set your actual UTF-8 image brief file")
request={'model': 'gpt-image-2.5-latest', 'prompt': ''}
request["prompt"]=f.read_text(encoding="utf-8")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.images.generate(**request)
Path("sdk-result.txt").write_text(str(result),encoding="utf-8")
save_images([{"b64_json":getattr(item,"b64_json",None),"url":getattr(item,"url",None)} for item in result.data])
import OpenAI from "openai";
import { readFileSync, writeFileSync } from "node:fs";
const key=process.env.AILOOT_API_KEY;
if(!key) throw new Error("Set your actual Ailoot API key");
const client=new OpenAI({baseURL:"https://api.ailoot.ai/v1",apiKey:key,maxRetries:0});
const request={"model": "gpt-image-2.5-latest", "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");

Gauti ir išsaugoti rezultatus

Ailoot · Vaizdai

Atsisiųskite kiekvieną grąžintą vaizdą arba išsaugokite jo Base64 turinį

  • GET /v1/media/tasks/{task_id}
  • GET /v1/media/assets/{asset_id}/content
  • GET /v1/media/assets
  • GET /v1/media/assets/{asset_id}
Išsaugoti visus baigtus rezultatus

Išsaugokite kiekvieną baigtą vaizdą; gaukite turinį iš kiekvieno grąžinto URL arba dekoduokite jo Base64 turinį.

Išsaugokite kiekvieną duomenų elementą. Iškoduokite kiekvieną b64_json arba atsisiųskite turinį pagal kiekvieną grąžintą pasirašytą URL. Failo plėtinį pasirinkite pagal faktinį MIME tipą ir baitus.

Jei reikia patikrinti pradinį atsakymą

Jei vaizdo generavimo ar redagavimo rezultatą reikia patikrinti, išsaugokite pradinį operation_id/X-Client-Request-ID ir grąžintą informaciją apie rezultatą. Atkurkite prieigą prie esamų jums priklausančių rezultatų per medijos biblioteką, naudodami faktines task_id arba asset_id reikšmes. Pakartotinai neteikite generavimo ar redagavimo užklausos ir nekurkite būsenos tikrinimo URL iš operation_id.

Atsakymo laukai
LaukasTipas
LaukascreatedTipasinteger
Laukasdata[].urlTipasstring
Laukasdata[].b64_jsonTipasbase64 string
LaukasusageTipasobject
Klaidos ir tolesni veiksmai
AtsakymasSąlygaKitas žingsnis
Atsakymas400 · invalid_request_errorSąlygaNetinkami privalomi laukai, medžiagos pateikimo forma arba parametro reikšmėKitas žingsnisPrieš naują kūrimo užklausą pataisykite nurodytus laukus.
Atsakymasserver_errorSąlygaGrąžintame atsakyme nurodoma, kad operaciją arba rezultatą reikia patikrintiKitas žingsnisIšsaugokite pradinį grąžintą operacijos ar užduoties ID, užklausos antraštes ir atsakymą; toliau tikrinkite tos pačios pradinės operacijos duomenis palaikomais būdais. Kūrimo užklausos pakartotinai neteikite.

Pseudonimai

Modelių pseudonimai

Ailoot gpt-image-2.5-sunburst, gpt-image, gpt-image-2.5, gpt-image-2.5-latest, gpt-image-latest

Metodų kelių pseudonimai

Naudokite aukščiau nurodytus metodų kelius.

Susiję ID iškvietimui

gpt-image-2.5-sunburst, gpt-image, gpt-image-2.5, gpt-image-2.5-latest, gpt-image-latest

Ailoot · Vaizdai POST /v1/images/generations gpt-image-latest

gpt-image-latest

OpenAI /gpt-image-latest
Modelio ID
  • gpt-image-2.5-sunburst
  • gpt-image
  • gpt-image-2.5
  • gpt-image-2.5-latest
  • gpt-image-latest

Pradžia

GPT Image 2.5 Sunburst kuria vaizdus pagal tekstinę užduotį. Palaiko pasirinktinius dydžius, išplėstus kokybės lygius ir skaidrų foną; gamintojas taip pat išskiria redagavimo tikslumą.

Leidžiamos įvestys
Tekstas
Rezultatai
Vaizdai

Prieinama Ailoot · įvestys ir metodai

Ailoot · Vaizdai POST /v1/images/generations
Įvestis
text
Išvestis
image
Išvesties formatas
Vaizdo failas
LaukasTipasReikalavimasReikšmės ir ribosNumatyta
LaukasmodelTipasstringReikalavimasPrivalomaReikšmės ir ribos
gpt-image-latest
Numatyta—
LaukaspromptTipasstringReikalavimasPrivalomaReikšmės ir ribos
Mažiausias ilgis: 1
Numatyta—
LaukasnTipasintegerReikalavimasNeprivalomaReikšmės ir ribos
Mažiausia reikšmė: 1
Numatyta1
Laukasresponse_formatTipasstringReikalavimasNeprivalomaReikšmės ir ribos
url, b64_json
Numatyta—
LaukasstreamTipasbooleanReikalavimasNeprivalomaReikšmės ir ribosNumatytafalse
LaukassizeTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
LaukasqualityTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
LaukasbackgroundTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
Laukasoutput_formatTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
Laukasoutput_compressionTipasintegerReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
LaukasmoderationTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
Laukasinput_fidelityTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
LaukasstyleTipasstringReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
Laukaspartial_imagesTipasintegerReikalavimasNeprivalomaReikšmės ir ribos
Priklauso nuo modelio
Numatyta—
Įvesties medžiagos deriniai

Iš teksto į vaizdą · Privaloma: prompt

Metodo parametrai ir gyvavimo ciklas
ParametrasSpecifikacija
Parametrasmaterial_typesSpecifikacijatext
ParametrasrequiredSpecifikacijamodel, prompt
Parametrasoptional_controlsSpecifikacijanull
Parametrascontent_typeSpecifikacijaapplication/json

Gyvavimo ciklas: synchronous_result_then_owned_library

GET /v1/media/tasks/{task_id} · faktiškai grąžinta task_id reikšmė arba medijos bibliotekos įrašas

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

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

Metodų struktūros ir ID yra tikslūs; tiekėjo galimybės yra atskirtos nuo užklausos priėmimo.

Planai

Ailoot metodų įkainiai

Ailoot VaizdaiPOST /v1/images/generations
Tekstinė įvestis
0,005 USD / 1K
Įvestis, vaizdas
0,008 USD / 1K tokens
Išvestis, vaizdas
0,03 USD / 1K tokens

Ailoot prieš užklausą rezervuoja numatomą sumą. Gavus rezultatą, galutinis mokestis nuskaitomas pagal išmatuotą naudojimą. Srautinio atsakymo atsiskaitymui naudojamas galutinis naudojimo įrašas. Kaip veikia rezervavimas ir atsiskaitymas →

Užklausų pavyzdžiai

Ailoot · Vaizdai

curlPython SDKNode.js SDK
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-latest", "prompt": ""}')
f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 brief")
p['prompt']=f.read_text(encoding="utf-8")
if not p['prompt'].strip():raise SystemExit("Brief must contain text")
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT
from openai import OpenAI
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")

f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Set your actual UTF-8 image brief file")
request={'model': 'gpt-image-latest', 'prompt': ''}
request["prompt"]=f.read_text(encoding="utf-8")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.images.generate(**request)
Path("sdk-result.txt").write_text(str(result),encoding="utf-8")
save_images([{"b64_json":getattr(item,"b64_json",None),"url":getattr(item,"url",None)} for item in result.data])
import OpenAI from "openai";
import { readFileSync, writeFileSync } from "node:fs";
const key=process.env.AILOOT_API_KEY;
if(!key) throw new Error("Set your actual Ailoot API key");
const client=new OpenAI({baseURL:"https://api.ailoot.ai/v1",apiKey:key,maxRetries:0});
const request={"model": "gpt-image-latest", "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");

Gauti ir išsaugoti rezultatus

Ailoot · Vaizdai

Atsisiųskite kiekvieną grąžintą vaizdą arba išsaugokite jo Base64 turinį

  • GET /v1/media/tasks/{task_id}
  • GET /v1/media/assets/{asset_id}/content
  • GET /v1/media/assets
  • GET /v1/media/assets/{asset_id}
Išsaugoti visus baigtus rezultatus

Išsaugokite kiekvieną baigtą vaizdą; gaukite turinį iš kiekvieno grąžinto URL arba dekoduokite jo Base64 turinį.

Išsaugokite kiekvieną duomenų elementą. Iškoduokite kiekvieną b64_json arba atsisiųskite turinį pagal kiekvieną grąžintą pasirašytą URL. Failo plėtinį pasirinkite pagal faktinį MIME tipą ir baitus.

Jei reikia patikrinti pradinį atsakymą

Jei vaizdo generavimo ar redagavimo rezultatą reikia patikrinti, išsaugokite pradinį operation_id/X-Client-Request-ID ir grąžintą informaciją apie rezultatą. Atkurkite prieigą prie esamų jums priklausančių rezultatų per medijos biblioteką, naudodami faktines task_id arba asset_id reikšmes. Pakartotinai neteikite generavimo ar redagavimo užklausos ir nekurkite būsenos tikrinimo URL iš operation_id.

Atsakymo laukai
LaukasTipas
LaukascreatedTipasinteger
Laukasdata[].urlTipasstring
Laukasdata[].b64_jsonTipasbase64 string
LaukasusageTipasobject
Klaidos ir tolesni veiksmai
AtsakymasSąlygaKitas žingsnis
Atsakymas400 · invalid_request_errorSąlygaNetinkami privalomi laukai, medžiagos pateikimo forma arba parametro reikšmėKitas žingsnisPrieš naują kūrimo užklausą pataisykite nurodytus laukus.
Atsakymasserver_errorSąlygaGrąžintame atsakyme nurodoma, kad operaciją arba rezultatą reikia patikrintiKitas žingsnisIšsaugokite pradinį grąžintą operacijos ar užduoties ID, užklausos antraštes ir atsakymą; toliau tikrinkite tos pačios pradinės operacijos duomenis palaikomais būdais. Kūrimo užklausos pakartotinai neteikite.

Pseudonimai

Modelių pseudonimai

Ailoot gpt-image-2.5-sunburst, gpt-image, gpt-image-2.5, gpt-image-2.5-latest, gpt-image-latest

Metodų kelių pseudonimai

Naudokite aukščiau nurodytus metodų kelius.

Susiję ID iškvietimui

gpt-image-2.5-sunburst, gpt-image, gpt-image-2.5, gpt-image-2.5-latest, gpt-image-latest

FAQ · GPT Image 2.5 Sunburst
Kokios įvestys ir rezultatai prieinami?

POST /v1/images/generations · gpt-image-2.5-sunburst: text → image

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

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

POST /v1/images/generations · gpt-image-2.5-latest: text → image

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

Kokius laukus naudoja užklausa?

POST /v1/images/generations · gpt-image-2.5-sunburst: model, prompt, n, response_format, stream

POST /v1/images/generations · gpt-image: model, prompt, n, response_format, stream

POST /v1/images/generations · gpt-image-2.5: model, prompt, n, response_format, stream

POST /v1/images/generations · gpt-image-2.5-latest: model, prompt, n, response_format, stream

POST /v1/images/generations · gpt-image-latest: model, prompt, n, response_format, stream

Kokie apribojimai taikomi?

POST /v1/images/generations · gpt-image-2.5-sunburst: n.minimum: 1

POST /v1/images/generations · gpt-image: n.minimum: 1

POST /v1/images/generations · gpt-image-2.5: n.minimum: 1

POST /v1/images/generations · gpt-image-2.5-latest: n.minimum: 1

POST /v1/images/generations · gpt-image-latest: n.minimum: 1

Išsamiau

Prijunkite Ailoot prie Claude Code, OpenCode, Hermes arba savo programos.

Įmonė ir jos projektų portfelis

Įmonė ir jos projektų portfelis: milijonai klientų; mėnesio pardavimai siekia milijardus.

Pirkite žetonus su nuolaida.

Prenumeratos nuolaida reguliariam darbui. Kodai — iki 50% žetonų pirkimui.

Prenumerata
Pasirinkite planą su nuolaida reguliarioms užklausoms.
Nuolaidos kodas iki 50%
Įveskite kodą perkant. Kaina perskaičiuojama pagal galiojančios akcijos sąlygas.
Išlaidos istorijoje
Kiekvienai užklausai išsaugomi modelis, žetonai ir suma.

Pasirinkti prenumeratą · Peržiūrėti modelių kainas

Prijunkite API prie produkto, kurį parduodate.

SaaS, programos ir botai pagal Ailoot ofertą bei licencijos sutartį. Perpardavimui paprašykite perpardavėjo licencijos.

Komercinė programa
Teksto, vaizdų, video ir garso kūrimą integruokite į mokamas paslaugos funkcijas.
Perpardavėjo licencija
Atsiųskite projekto aprašymą ir prieigos schemą. Paprašykite rašytinių naudojimo ir perpardavimo sąlygų.
Dokumentai svetainėje
Oferta, licencijos sutartis ir duomenų tvarkymo politika prieinamos prieš prisijungiant.

Paprašyti perpardavėjo licencijos · Oferta ir licencijos sutartis