model

OpenAI: GPT Image 2

Markdown · JSON

OpenAI: GPT Image 2

GPT Image 2 menjana dan menyunting imej daripada teks dan rujukan visual. Model ini menyokong dimensi bingkai fleksibel dan secara automatik memproses input imej pada fideliti tinggi, dengan kawalan kualiti, format dan latar belakang berasingan untuk aset siap.

Tentang model

Huraian ini merangkumi keupayaan model. Input, output dan pilihan yang tersedia di Ailoot disenaraikan di bawah untuk kaedah yang dipilih.

GPT Image 2 ialah model OpenAI untuk penjanaan dan penyuntingan imej daripada teks serta input visual. Model ini mencipta imej baharu daripada taklimat bertulis dan boleh menggunakan imej sumber untuk suntingan atau kerja berpandukan rujukan. Tugasan praktikal termasuk ilustrasi, konsep produk, komposisi visual dan perubahan aset sedia ada. Ini edisi berasingan daripada model GPT Image 2.5 Sunburst dan Flare, dengan julat kualiti serta tingkah laku fideliti inputnya sendiri.

Untuk penjanaan, terangkan subjek, adegan, komposisi, cahaya dan gaya yang dimaksudkan. Untuk suntingan, namakan perkara yang perlu berubah dan perkara yang perlu mengekalkan rupanya. Taklimat produk boleh meminta lampu seramik di atas permukaan pucat dengan siluet di tengah dan ruang untuk kapsyen; suntingan susulan boleh mengubah latar belakang sambil mengekalkan bentuk lampu serta sudut pandangan. Aliran kerja penjanaan dan penyuntingan langsung yang didokumenkan menerima prompt sehingga 32,000 aksara dan boleh memulangkan satu hingga sepuluh imej.

Penyuntingan rujukan menerima sehingga enam belas imej input. Nyatakan tujuan setiap rujukan supaya subjek, latar belakang dan olahan visual tidak bercampur. GPT Image 2 memproses setiap input imej pada fideliti tinggi secara automatik; input_fidelity perlu ditinggalkan kerana ia tidak boleh dilaraskan untuk edisi ini. Ini berbeza daripada pilihan high atau low pada GPT Image 1 dan mod fideliti input low sahaja pada GPT Image 1 Mini. Pemprosesan input fideliti tinggi menyokong butiran sumber tanpa menjamin setiap butiran dihasilkan semula tanpa perubahan.

Topeng boleh mengenal pasti kawasan untuk disunting. Imej sumber dan topeng mesti mempunyai format serta dimensi sama dan bersaiz di bawah 50 MB menurut keperluan penyediaan panduan; topeng juga memerlukan saluran alfa. Jika beberapa imej input diberikan, topeng terpakai pada imej pertama. Model menganggap topeng sebagai panduan berasaskan prompt, bukannya sempadan geometri tegas. Terangkan perubahan setempat dan keperluan pengekalan, kemudian periksa kawasan sekeliling untuk perbezaan yang tidak dimaksudkan.

GPT Image 2 menyokong kualiti low, medium, high dan auto, dengan auto sebagai lalai. Tetapan xhigh dan max keluarga 2.5 bukan sebahagian daripada julat kualiti edisi ini. Saiz boleh berupa segi empat sama, landskap, potret, automatik atau lebar dan tinggi tersuai yang sah. Contoh pengeluar termasuk 1024 × 1024, 1536 × 1024, 1024 × 1536, 2048 × 2048, 2048 × 1152, 3840 × 2160 dan 2160 × 3840 piksel. Pilih orientasi serta tahap butiran untuk susun atur sebenar, bukannya menganggap kualiti dan dimensi sebagai kawalan sama.

Dimensi tersuai mesti gandaan enam belas piksel, dengan sisi maksimum 3840 piksel, nisbah sisi panjang kepada pendek tidak melebihi 3:1 dan keluasan daripada 655,360 hingga 8,294,400 piksel. Syarat ini terpakai serentak. Resolusi melebihi 2560 × 1440 ditandakan sebagai eksperimen. Bingkai yang memenuhi satu peraturan masih boleh melanggar peraturan lain, maka pilih pasangan dimensi yang disokong dan terangkan unsur sensitif pangkasan dalam taklimat.

Output ialah PNG secara lalai, dengan JPEG atau WebP turut tersedia. Pemampatan daripada 0 hingga 100 disokong untuk JPEG dan WebP. Latar belakang boleh legap atau automatik; rujukan semasa yang tepat menerangkan ketelusan GPT Image 2 sebagai keupayaan pratonton. Apabila meminta ketelusan, gunakan PNG atau WebP supaya saluran alfa boleh dikekalkan. Aliran kerja penstriman yang didokumenkan membenarkan sehingga tiga imej separa sebelum imej siap; simpan aset akhir, bukannya pratonton kemajuan. Antara muka pengeluar juga menyokong pemprosesan kelompok.

Nilai kejelasan teks, kedudukan objek dan pengekalan butiran sumber pada hasil sebenar. GPT Image boleh menghadapi kesukaran dengan tulisan tepat, komposisi sensitif susun atur dan identiti visual berulang merentas penjanaan berasingan. Untuk urutan suntingan, gunakan hasil terpilih sebagai sumber seterusnya dan berikan perubahan konkrit yang dikaitkan dengan isu yang kelihatan. Output GPT Image 2 yang berguna ialah imej yang terhubung dengan taklimat penjanaan atau penyuntingan jelas, dengan input fideliti tinggi, dimensi serta kualiti dipilih untuk tugasan khusus tersebut.

Ailoot · Imej POST /v1/images/generations gpt-image-2

gpt-image-2

OpenAI /gpt-image-2

Pengenalan

GPT Image 2 menjana dan menyunting imej daripada teks dan rujukan visual. Model ini menyokong dimensi bingkai fleksibel dan secara automatik memproses input imej pada fideliti tinggi, dengan kawalan kualiti, format dan latar belakang berasingan untuk aset siap.

Input yang diterima
Teks
Hasil
Imej

Tersedia di Ailoot · input & kaedah

Ailoot · Imej POST /v1/images/generations
Input
text
Output
image
Format output
Fail imej
MedanJenisKeperluanNilai & hadLalai
MedanmodelJenisstringKeperluanDiperlukanNilai & had
gpt-image-2
Lalai—
MedanpromptJenisstringKeperluanDiperlukanNilai & had
Panjang minimum: 1
Lalai—
MedannJenisintegerKeperluanPilihanNilai & had
Minimum: 1
Lalai1
Medanresponse_formatJenisstringKeperluanPilihanNilai & had
url, b64_json
Lalai—
MedanstreamJenisbooleanKeperluanPilihanNilai & hadLalaifalse
MedansizeJenisstringKeperluanPilihanNilai & had
Bergantung pada model
Lalai—
MedanqualityJenisstringKeperluanPilihanNilai & had
Bergantung pada model
Lalai—
MedanbackgroundJenisstringKeperluanPilihanNilai & had
Bergantung pada model
Lalai—
Medanoutput_formatJenisstringKeperluanPilihanNilai & had
Bergantung pada model
Lalai—
Medanoutput_compressionJenisintegerKeperluanPilihanNilai & had
Bergantung pada model
Lalai—
MedanmoderationJenisstringKeperluanPilihanNilai & had
Bergantung pada model
Lalai—
Medaninput_fidelityJenisstringKeperluanPilihanNilai & had
Bergantung pada model
Lalai—
MedanstyleJenisstringKeperluanPilihanNilai & had
Bergantung pada model
Lalai—
Medanpartial_imagesJenisintegerKeperluanPilihanNilai & had
Bergantung pada model
Lalai—
Gabungan bahan input

Teks kepada imej · Diperlukan: prompt

Parameter kaedah dan kitar hayat
ParameterKontrak
Parametermaterial_typesKontraktext
ParameterrequiredKontrakmodel, prompt
Parameteroptional_controlsKontraknull
Parametercontent_typeKontrakapplication/json

Kitar hayat: synchronous_result_then_owned_library

GET /v1/media/tasks/{task_id} · task_id sebenar yang dikembalikan atau rekod pustaka media

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

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

Struktur kaedah dan ID adalah tepat; keupayaan pembekal berasingan daripada penerimaan permintaan.

Pelan harga

Kadar kaedah Ailoot

Ailoot ImejPOST /v1/images/generations
Input teks
USD 0.0025 / 1K
Input, imej
USD 0.004 / 1K tokens
Output, imej
USD 0.015 / 1K tokens

Ailoot merizabkan anggaran amaun sebelum permintaan. Selepas hasil diterima, caj akhir diselesaikan berdasarkan penggunaan terukur. Penyelesaian caj penstriman menggunakan rekod penggunaan akhir. Cara rizab dan penyelesaian caj berfungsi →

Contoh permintaan

Ailoot · Imej

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

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

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

f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Set your actual UTF-8 image brief file")
request={'model': 'gpt-image-2', 'prompt': ''}
request["prompt"]=f.read_text(encoding="utf-8")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.images.generate(**request)
Path("sdk-result.txt").write_text(str(result),encoding="utf-8")
save_images([{"b64_json":getattr(item,"b64_json",None),"url":getattr(item,"url",None)} for item in result.data])
import OpenAI from "openai";
import { readFileSync, writeFileSync } from "node:fs";
const key=process.env.AILOOT_API_KEY;
if(!key) throw new Error("Set your actual Ailoot API key");
const client=new OpenAI({baseURL:"https://api.ailoot.ai/v1",apiKey:key,maxRetries:0});
const request={"model": "gpt-image-2", "prompt": ""};
if(!process.env.AILOOT_PROMPT_FILE)throw new Error("Set your actual UTF-8 image brief file");
request.prompt=readFileSync(process.env.AILOOT_PROMPT_FILE,"utf8");
const result=await client.images.generate(request);
writeFileSync("sdk-result.json",JSON.stringify(result,null,2));
if(!result.data?.length) throw new Error("No completed images");
for(let index=0;index<result.data.length;index++) {
  const item=result.data[index];let encoded=item.b64_json,uri=item.url||"",raw;
  if(!encoded && uri.startsWith("data:image/")) {
    const comma=uri.indexOf(",");if(comma<0 || !uri.slice(0,comma).includes(";base64")) throw new Error("Unsupported image data URI");
    encoded=uri.slice(comma+1);
  }
  if(encoded) {
    if(encoded.length%4!==0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(encoded)) throw new Error("Invalid Base64");
    raw=Buffer.from(encoded,"base64");
  } else if(uri) {
    const u=new URL(uri,"https://api.ailoot.ai");
    if(u.protocol!=="https:" || u.username || u.password) throw new Error("Invalid returned URL");
    const owned=u.origin==="https://api.ailoot.ai" && u.pathname.startsWith("/v1/media/assets/") && u.pathname.endsWith("/content");
    const response=await fetch(u,{headers:owned?{Authorization:"Bearer "+key}:{},redirect:"manual"});
    if(!response.ok) throw new Error("Image content download failed: "+response.status);
    raw=Buffer.from(await response.arrayBuffer());
  } else throw new Error("Image has neither bytes nor URL");
  if(!raw.length) throw new Error("Empty image result");
  const ext=raw.subarray(0,4).equals(Buffer.from([137,80,78,71]))?"png":raw[0]===255&&raw[1]===216?"jpg":raw.toString("ascii",0,4)==="RIFF"&&raw.toString("ascii",8,12)==="WEBP"?"webp":raw.toString("utf8").trimStart().startsWith("<svg")||raw.toString("utf8").trimStart().startsWith("<?xml")?"svg":"bin";
  writeFileSync(`image-${index}.${ext}`,raw);
}
console.log("Every returned image saved; sdk-result.json retains complete metadata");

Terima dan simpan hasil

Ailoot · Imej

Muat turun setiap imej yang dikembalikan atau simpan kandungan Base64-nya

  • GET /v1/media/tasks/{task_id}
  • GET /v1/media/assets/{asset_id}/content
  • GET /v1/media/assets
  • GET /v1/media/assets/{asset_id}
Simpan semua hasil yang selesai

Simpan setiap imej yang selesai; dapatkan setiap URL yang dikembalikan atau nyahkod kandungan Base64-nya.

Simpan setiap item data. Nyahkod setiap b64_json atau dapatkan setiap URL bertandatangan yang dikembalikan. Pilih sambungan nama fail berdasarkan MIME/bait sebenar.

Jika respons asal perlu disemak

Jika hasil penjanaan atau penyuntingan imej memerlukan semakan, simpan operation_id/X-Client-Request-ID asal serta maklumat hasil yang dikembalikan. Pulihkan hasil sedia ada milik anda melalui pustaka media menggunakan nilai task_id atau asset_id sebenar. Jangan hantar semula permintaan penjanaan/penyuntingan atau bina URL tinjauan status daripada operation_id.

Medan respons
MedanJenis
MedancreatedJenisinteger
Medandata[].urlJenisstring
Medandata[].b64_jsonJenisbase64 string
MedanusageJenisobject
Ralat dan langkah seterusnya
ResponsSyaratLangkah seterusnya
Respons400 · invalid_request_errorSyaratMedan wajib, perwakilan bahan atau nilai parameter tidak sahLangkah seterusnyaBetulkan medan yang ditunjukkan sebelum permintaan penciptaan baharu.
Responsserver_errorSyaratRespons yang dikembalikan menyatakan bahawa operasi atau hasil memerlukan semakanLangkah seterusnyaSimpan ID operasi/tugas asal yang dikembalikan, pengepala permintaan dan respons; teruskan pembacaan yang disokong bagi operasi asal tersebut. Jangan hantar semula permintaan penciptaan.

Alias

Alias model

Ailoot gpt-image-2
Ailoot Ultra gpt-image-2, openai/gpt-image-2

Alias laluan kaedah

/v1/images

ID pemanggil berkaitan

openai/gpt-image-2, gpt-image-2, gpt-image-2

Ailoot Ultra · Imej POST /v1/images/generations gpt-image-2

gpt-image-2

OpenAI /gpt-image-2
ID model
  • gpt-image-2
  • openai/gpt-image-2

Pengenalan

GPT Image 2 menjana dan menyunting imej daripada teks dan rujukan visual. Model ini menyokong dimensi bingkai fleksibel dan secara automatik memproses input imej pada fideliti tinggi, dengan kawalan kualiti, format dan latar belakang berasingan untuk aset siap.

Input yang diterima
Teks
Hasil
Imej

Tersedia di Ailoot · input & kaedah

Ailoot Ultra · Imej POST /v1/images/generations
Input
text
Output
image
MedanJenisKeperluanNilai & hadLalai
MedanmodelJenisstringKeperluanDiperlukanNilai & had
gpt-image-2
Lalai—
MedanpromptJenisstringKeperluanDiperlukanNilai & had
Panjang maksimum: 32,000
Lalai—
MedansizeJenisstringKeperluanPilihanNilai & had
Syarat: Gunakan auto atau WIDTHxHEIGHT dengan kedua-dua dimensi boleh dibahagi dengan 16. Sisi terpanjang ialah paling banyak 3,840 piksel dan jumlah saiz paling banyak 8,300,000 piksel.
Lalaiauto
MedanbackgroundJenisstringKeperluanPilihanNilai & had
transparent, opaque, auto
Lalaiauto
MedanmoderationJenisstringKeperluanPilihanNilai & had
low, auto
Syarat: Gunakan auto untuk moderasi kandungan standard.
Lalai—
MedannJenisintegerKeperluanPilihanNilai & had
Minimum: 1
Maksimum: 10
Lalai1
MedanqualityJenisstringKeperluanPilihanNilai & had
auto, high, medium, low
Lalaiauto
Medanoutput_compressionJenisintegerKeperluanPilihanNilai & had
Minimum: 0
Maksimum: 100
Syarat: Digunakan pada output JPEG dan WebP; hantar nilai integer yang didokumenkan.
Lalai100
Medanoutput_formatJenisstringKeperluanPilihanNilai & had
webp, png, jpeg
Lalaipng
MedanstreamJenisbooleanKeperluanPilihanNilai & had
false
Syarat: Laluan ini mengembalikan satu respons JSON yang lengkap.
Lalaifalse
Parameter kaedah dan kitar hayat
ParameterKontrak
Parametercontent_typeKontrakapplication/json
ParameterrequiredKontrakprompt, model
Parametermaterial_typesKontraktext
ParameteroptionalKontraksize, background, moderation, n, quality, output_compression, output_format, stream
ParameterconditionsKontrakLatar belakang lut sinar memerlukan PNG atau WebP., Pemampatan output digunakan pada JPEG atau WebP., Kaedah yang dipilih menjana daripada teks. Kawalan penyuntingan dan penstriman yang dihuraikan bagi pengeluar merupakan keupayaan berasingan.

Kitar hayat: synchronous_result_then_owned_library

GET /v1/media/tasks/{task_id} · task_id sebenar yang dikembalikan atau rekod pustaka media

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

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

Pelan harga

Cara caj akhir dikira

Kadar yang dipaparkan menganggarkan kos sebelum penjanaan. Caj akhir dikira berdasarkan kos yang direkodkan untuk penjanaan asal. Tempoh output yang diukur dan kuantiti ramalan bukan kuantiti akhir yang boleh dibilkan.

Rujukan tarif tidak menambah pilihan permintaan. Parameter yang disokong disenaraikan untuk kaedah yang dipilih.

Mod pantas
Tidak dinyatakan Apabila mod pantas dipilih
Mod flex
Tidak dinyatakan Apabila mod flex dipilih
Usaha penaakulan maksimum
Tidak dinyatakan Apabila usaha penaakulan maksimum menggunakan pelarasan default

Anggaran kadar untuk perbandingan

Harga mengikut konfigurasi

Padankan setiap caj dengan syarat yang dipaparkan. Gunakan satu kadar bagi setiap set konfigurasi alternatif.

KonfigurasiJadual kadarKuantiti ramalanCaj
KonfigurasiKadar asas tokenJadual kadarKadar asasKuantiti ramalan—Caj
Input · Token input · Anggaran untuk perbandingan sahaja — / 1K token
Output · Token output · Anggaran untuk perbandingan sahaja — / 1K token
Input · Bacaan cache · Anggaran untuk perbandingan sahaja — / 1K token
Input · Penulisan cache · Anggaran untuk perbandingan sahaja — / 1K token
Input · Penulisan cache, 1 jam · Anggaran untuk perbandingan sahaja — / 1K token
KonfigurasiAnggaran kos penjanaanJadual kadar—Kuantiti ramalananggaran untuk satu penjanaanCaj
Output · Anggaran kos penjanaan · Anggaran untuk perbandingan sahaja $0.24576 anggaran sebelum penjanaan

Anggaran ini bukan caj tambahan atau kadar tetap bagi penjanaan yang telah selesai.

Ailoot merizabkan anggaran amaun sebelum permintaan. Selepas hasil diterima, caj akhir diselesaikan berdasarkan penggunaan terukur. Penyelesaian caj penstriman menggunakan rekod penggunaan akhir. Cara rizab dan penyelesaian caj berfungsi →

Contoh permintaan

Ailoot Ultra · Imej

curl
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p={'prompt': 'A cute baby sea otter', 'model': 'gpt-image-2', 'size': '1024x1024', 'n': 1, 'background': 'auto', 'moderation': 'auto', 'output_format': 'png'}

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

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

Terima dan simpan hasil

Ailoot Ultra · Imej

Muat turun setiap imej yang dikembalikan atau simpan kandungan Base64-nya

  • GET /v1/media/tasks/{task_id}
  • GET /v1/media/assets/{asset_id}/content
  • GET /v1/media/assets
  • GET /v1/media/assets/{asset_id}
Pembacaan kandungan lain
Baca aset sedia ada yang menjadi milik anda
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.
Simpan semua hasil yang selesai

Simpan setiap imej yang selesai; dapatkan setiap URL yang dikembalikan atau nyahkod kandungan Base64-nya.

Simpan respons dan pengepala yang lengkap, setiap output sebenar, pengecam asal yang dikembalikan serta semua medan penggunaan. Pulihkan operasi asal tanpa menghantar permintaan penciptaan sekali lagi.

Jika respons asal perlu disemak

Simpan X-Client-Request-ID yang dikembalikan untuk penyelarasan rekod. Baca hanya nilai task_id/asset_id sebenar yang dikembalikan atau pustaka media milik anda; jangan sekali-kali bina URL tugas daripada ID operasi atau hantar semula permintaan penciptaan.

Medan respons
MedanJenis
MedancreatedJenis
Medandata[].urlJenis
Medandata[].b64_jsonJenis
MedanusageJenis

Alias

Alias model

Ailoot gpt-image-2
Ailoot Ultra gpt-image-2, openai/gpt-image-2

Alias laluan kaedah

/v1/images

ID pemanggil berkaitan

openai/gpt-image-2, gpt-image-2, gpt-image-2

Ailoot Ultra · Imej POST /v1/images/generations openai/gpt-image-2

openai/gpt-image-2

OpenAI /openai/gpt-image-2
ID model
  • gpt-image-2
  • openai/gpt-image-2

Pengenalan

GPT Image 2 menjana dan menyunting imej daripada teks dan rujukan visual. Model ini menyokong dimensi bingkai fleksibel dan secara automatik memproses input imej pada fideliti tinggi, dengan kawalan kualiti, format dan latar belakang berasingan untuk aset siap.

Input yang diterima
Teks · Imej
Hasil
Imej

Tersedia di Ailoot · input & kaedah

Ailoot Ultra · Imej POST /v1/images/generations
Input
text, image
Output
image
MedanJenisKeperluanNilai & hadLalai
MedanmodelJenisstringKeperluanDiperlukanNilai & had
openai/gpt-image-2
Lalai—
MedanpromptJenisstringKeperluanDiperlukanNilai & had
Panjang minimum: 1
Lalai—
Medanaspect_ratioJenisstringKeperluanPilihanNilai & had
1:1, 3:2, 2:3, 4:3, 3:4, 16:9, 9:16, 21:9, auto
Lalai—
MedanqualityJenisstringKeperluanPilihanNilai & had
auto, low, medium, high
Lalai—
MedanbackgroundJenisstringKeperluanPilihanNilai & had
auto, opaque
Lalai—
MedannJenisintegerKeperluanPilihanNilai & had
Minimum: 1
Maksimum: 10
Lalai—
Medaninput_referencesJenisarrayKeperluanPilihanNilai & had
Item minimum: 0
Item maksimum: 16
Lalai—
Medanoutput_compressionJenisintegerKeperluanPilihanNilai & had
Minimum: 0
Maksimum: 100
Lalai—
MedanproviderJenisobjectKeperluanPilihanNilai & hadLalai—
Parameter kaedah dan kitar hayat
ParameterKontrak
Parametercontent_typeKontrakapplication/json
ParameterrequiredKontrakmodel, prompt
Parametermaterial_typesKontraktext, image

Kitar hayat: synchronous_result_then_owned_library

GET /v1/media/tasks/{task_id} · task_id sebenar yang dikembalikan atau rekod pustaka media

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

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

Pelan harga

Cara caj akhir dikira

Kadar yang dipaparkan menganggarkan kos sebelum penjanaan. Caj akhir dikira berdasarkan kos yang direkodkan untuk penjanaan asal. Tempoh output yang diukur dan kuantiti ramalan bukan kuantiti akhir yang boleh dibilkan.

Rujukan tarif tidak menambah pilihan permintaan. Parameter yang disokong disenaraikan untuk kaedah yang dipilih.

Mod pantas
Tidak dinyatakan Apabila mod pantas dipilih
Mod flex
Tidak dinyatakan Apabila mod flex dipilih
Usaha penaakulan maksimum
Tidak dinyatakan Apabila usaha penaakulan maksimum menggunakan pelarasan default

Anggaran kadar untuk perbandingan

Harga mengikut konfigurasi

Padankan setiap caj dengan syarat yang dipaparkan. Gunakan satu kadar bagi setiap set konfigurasi alternatif.

KonfigurasiJadual kadarKuantiti ramalanCaj
KonfigurasiKadar asas tokenJadual kadarKadar asasKuantiti ramalan—Caj
Input · Token input · Anggaran untuk perbandingan sahaja — / 1K token
Output · Token output · Anggaran untuk perbandingan sahaja — / 1K token
Input · Bacaan cache · Anggaran untuk perbandingan sahaja — / 1K token
Input · Penulisan cache · Anggaran untuk perbandingan sahaja — / 1K token
Input · Penulisan cache, 1 jam · Anggaran untuk perbandingan sahaja — / 1K token
KonfigurasiAnggaran kos penjanaanJadual kadar—Kuantiti ramalananggaran untuk satu penjanaanCaj
Output · Anggaran kos penjanaan · Anggaran untuk perbandingan sahaja $0.24576 anggaran sebelum penjanaan

Anggaran ini bukan caj tambahan atau kadar tetap bagi penjanaan yang telah selesai.

Ailoot merizabkan anggaran amaun sebelum permintaan. Selepas hasil diterima, caj akhir diselesaikan berdasarkan penggunaan terukur. Penyelesaian caj penstriman menggunakan rekod penggunaan akhir. Cara rizab dan penyelesaian caj berfungsi →

Contoh permintaan

Ailoot Ultra · Imej

curl
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p={'model': 'openai/gpt-image-2', 'prompt': 'a red panda astronaut floating in space, studio lighting'}

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

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

Terima dan simpan hasil

Ailoot Ultra · Imej

Muat turun setiap imej yang dikembalikan atau simpan kandungan Base64-nya

  • GET /v1/media/tasks/{task_id}
  • GET /v1/media/assets/{asset_id}/content
  • GET /v1/media/assets
  • GET /v1/media/assets/{asset_id}
Pembacaan kandungan lain
Baca aset sedia ada yang menjadi milik anda
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.
Simpan semua hasil yang selesai

Simpan setiap imej yang selesai; dapatkan setiap URL yang dikembalikan atau nyahkod kandungan Base64-nya.

Simpan respons dan pengepala yang lengkap, setiap output sebenar, pengecam asal yang dikembalikan serta semua medan penggunaan. Pulihkan operasi asal tanpa menghantar permintaan penciptaan sekali lagi.

Jika respons asal perlu disemak

Simpan X-Client-Request-ID yang dikembalikan untuk penyelarasan rekod. Baca hanya nilai task_id/asset_id sebenar yang dikembalikan atau pustaka media milik anda; jangan sekali-kali bina URL tugas daripada ID operasi atau hantar semula permintaan penciptaan.

Medan respons
MedanJenis
MedancreatedJenis
Medandata[].urlJenis
Medandata[].b64_jsonJenis
MedanusageJenis

Alias

Alias model

Ailoot gpt-image-2
Ailoot Ultra gpt-image-2, openai/gpt-image-2

Alias laluan kaedah

/v1/images

ID pemanggil berkaitan

openai/gpt-image-2, gpt-image-2, gpt-image-2

FAQ · OpenAI: GPT Image 2
Apakah input dan hasil yang tersedia?

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

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

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

Apakah medan yang digunakan oleh permintaan?

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

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

POST /v1/images/generations · openai/gpt-image-2: model, prompt, aspect_ratio, quality, background, n, input_references, output_compression, provider

Apakah had yang terpakai?

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

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

POST /v1/images/generations · openai/gpt-image-2: n.minimum: 1; n.maximum: 10; output_compression.minimum: 0; output_compression.maximum: 100

Butiran lanjut

Sambungkan Ailoot kepada Claude Code, OpenCode, Hermes atau aplikasi anda.

Syarikat dan portfolio projeknya

Syarikat dan portfolio projeknya: jutaan pelanggan; jualan bernilai berbilion setiap bulan.

Beli token dengan diskaun.

Diskaun langganan untuk penggunaan berkala. Kod promosi — sehingga 50% bagi pembelian token.

Langganan
Pilih pelan berdiskaun untuk permintaan berkala anda.
Kod promosi sehingga 50%
Masukkan kod semasa pembelian. Harga dikira semula mengikut promosi semasa.
Perbelanjaan dalam sejarah
Model, token dan jumlah disimpan bagi setiap permintaan.

Pilih langganan · Lihat harga model

Sambungkan API kepada produk yang anda jual.

SaaS, aplikasi dan bot — di bawah tawaran rasmi serta perjanjian lesen Ailoot. Untuk jualan semula, mohon lesen penjual semula.

Aplikasi komersial
Tambahkan penjanaan teks, imej, video dan audio pada ciri berbayar perkhidmatan anda.
Lesen penjual semula
Hantar keterangan projek dan susunan akses. Minta terma penggunaan serta jualan semula secara bertulis.
Dokumen pada laman
Tawaran, perjanjian lesen dan dasar pemprosesan data tersedia sebelum sambungan.

Mohon lesen penjual semula · Tawaran dan perjanjian lesen