GPT-6 Sol ve Claude Opus 5.5 yayındaGPT-6 Sol fiyatı 5.6 Sol'un yarısı

GPT Image 2.5 API: Python ile görsel oluşturma ve düzenleme

Bir POST görevi oluşturur, bir GET sonucu okur. Aşağıda istek kodu, 29 Ekim 2026'da çalıştırdığımız boyutlar ve öncesi-sonrasıyla bir düzenleme var.

Kiki, OmniaKey COO7 dk okuma
Bu sayfada

https://api.omniakey.com/v1/media/tasks adresine model alanı gpt-image-2.5-flare olacak şekilde bir POST gönderin, dönen görev kimliğini yoklayın ve durum succeeded olduğunda assets[0].url adresini indirin. 29 Ekim 2026'da 1K, 2K ve 1536x1024 boyutlarında görsel ürettik ve bir kafe fotoğrafını düzenledik; sonra her dosyayı açıp gerçek piksel boyutunu okuduk: 1024×1024, 2048×2048, 1536×1024 ve 1024×682. 1K üretim 29,5 sn, 2K üretim 45,2 sn sürdü.

Hangi 2.5 model kimliğini kullanmalısınız

gpt-image-2.5-flare kullanın. Aşağıdaki tüm çalıştırmalarda çağırdığımız kimlik buydu. GPT-Image 2.5 Flare model sayfası (29 Ekim 2026'da kontrol edildi) sağlayıcı olarak OpenAI'ı gösteriyor, metinden görsele ve görsel düzenlemeyi listeliyor ve "Guide updated 2026-10-27" notunu taşıyor. Aynı sayfada ikinci bir 2.5 kimliği var: gpt-image-2.5-sunburst.

Flare her iki işi de yapar. Üretim bir istem gönderir; düzenleme bir istem ve bir kaynak görsel gönderir. Kalite low, medium veya high alır ve aynı sayfa seviyenin fiyatı değiştirmediğini söyler. Buradaki her çalıştırma medium kullandı. sunburst, low ve high kalite, 4K ve 3840x2160, maskeler veya birden çok referans görsel çalıştırmadık; bu yüzden gerisini kendiniz deneyene kadar Flare ve medium ile tek kaynak görsel üzerinden planlayın. İki kimlik de aynı model ailesindendir; seçim, sizin düzenleme ihtiyacınıza ve kendi testinize bağlıdır.

İstek kodu

Aşağıdaki betik, değiştirmeden çalıştırdığımız betik: iki yardımcı, ardından bir üretim çağrısı ve bir düzenleme çağrısı. Yalnızca Python standart kütüphanesini kullanır, anahtarınızı OMNIAKEY_API_KEY ortam değişkeninden okur ve her PNG'yi betiği çalıştırdığınız klasöre yazar. Betiği çalıştırdığınızda iki görev kimliği yazdırılır; bunları kaydedip aynı görevleri daha sonra yeniden yoklayabilirsiniz. Kod, imzalı bağlantıyı aldıktan hemen sonra dosyayı diske yazar, çünkü bağlantı yaklaşık bir saat sonra geçersiz olur.

python
import base64
import json
import os
import time
import urllib.request
import uuid

API = "https://api.omniakey.com/v1/media/tasks"
KEY = os.environ["OMNIAKEY_API_KEY"]
MODEL = "gpt-image-2.5-flare"

def request(method, url, body=None, extra_headers=None):
    headers = {"Authorization": f"Bearer {KEY}", "User-Agent": "omniakey-example/1"}
    data = None
    if body is not None:
        headers["Content-Type"] = "application/json"
        data = json.dumps(body).encode()
    headers.update(extra_headers or {})
    req = urllib.request.Request(url, data=data, headers=headers, method=method)
    with urllib.request.urlopen(req, timeout=120) as resp:
        return json.load(resp)

def run_task(body, out_path):
    task = request("POST", API, body, {"Idempotency-Key": str(uuid.uuid4())})["id"]
    for _ in range(150):
        time.sleep(4)
        state = request("GET", f"{API}/{task}")
        if state["status"] not in ("queued", "processing"):
            break
    if state["status"] != "succeeded":
        raise RuntimeError(state.get("error") or state["status"])
    asset_url = state["assets"][0]["url"]  # signed link: valid for about an hour, so download now
    req = urllib.request.Request(asset_url, headers={"User-Agent": "omniakey-example/1"})
    with urllib.request.urlopen(req, timeout=120) as resp, open(out_path, "wb") as f:
        f.write(resp.read())
    return task

def generate_image(prompt, out_path, size="1K", quality="medium"):
    body = {
        "model": MODEL,
        "type": "image",
        "operation": "generate",
        "input": {"prompt": prompt},
        "parameters": {"size": size, "quality": quality},
    }
    return run_task(body, out_path)

def edit_image(source_path, prompt, out_path, size="1K", quality="medium"):
    with open(source_path, "rb") as f:
        image = base64.b64encode(f.read()).decode()
    body = {
        "model": MODEL,
        "type": "image",
        "operation": "edit",
        "input": {"prompt": prompt, "image": {"data": image, "mime_type": "image/jpeg"}},
        "parameters": {"size": size, "quality": quality},
    }
    return run_task(body, out_path)

if __name__ == "__main__":
    task = generate_image(
        "A small glass greenhouse on a hillside at sunrise, morning fog in the valley, "
        "soft watercolor style, a wooden bench outside the door, no people, no text.",
        "greenhouse.png",
    )
    print("generate task", task)
    task = edit_image(
        "cafe-base.jpg",
        "Change the red bicycle to matte black. Keep everything else exactly the same: "
        "the table, the cup, the window frame and the daylight. Photorealistic, no text, no logos.",
        "cafe-edited.png",
    )
    print("edit task", task)

Authorization: Bearer <key> her çağrıda gönderilir; oluşturma çağrısı ayrıca betiğin yeni bir UUID ile doldurduğu bir Idempotency-Key ister. Gövde type alanını "image", operation alanını "generate" veya "edit" yapar, sözcükler input.prompt altında, boyut ve kalite parameters altında durur. API n parametresini de kabul eder ve yalnızca 1 geçerlidir, bu yüzden betik onu göndermez. Oluşturma HTTP 202 ve bir görev kimliği döndürür, durum queued olarak başlar ve döngü iki çalışma durumundan çıkana kadar kontroller arasında 4 sn bekler.

Düzenleme, JPEG'i mime türüyle birlikte satır içi bir Base64 nesnesi olarak input.image altına ekler. Base64 dahil istek gövdeleri 1 MiB ile sınırlıdır, bu yüzden betik yaklaşık 230 KB'lık 1024 piksellik bir JPEG gönderir.

Çalıştırdığımız boyutlar ve dönen sonuçlar

Dört çalıştırma, hepsi medium kalitede, 29 Ekim 2026'da. Üçü istediğimiz boyutta döndü. 1K düzenleme, iki çalıştırmasından birinde dönmedi.

  • 1K, üretim — Dosyadan okuduğumuz piksel boyutu: 1024×1024; Tarih: 29 Ekim 2026
  • 2K, üretim — Dosyadan okuduğumuz piksel boyutu: 2048×2048; Tarih: 29 Ekim 2026
  • 1536x1024, üretim — Dosyadan okuduğumuz piksel boyutu: 1536×1024; Tarih: 29 Ekim 2026
  • 1K, düzenleme — Dosyadan okuduğumuz piksel boyutu: 1024×682; Tarih: 29 Ekim 2026

Aşağıdaki sera, yukarıdaki koddaki aynı istek gövdesiyle üretilmiş 1K'lık bir görsel.

Gün doğumunda bir yamaçta sulu boya tarzında cam sera, vadide sabah sisi ve kapının önünde ahşap bir bank.
29 Ekim 2026'da OmniaKey API üzerinden GPT-Image 2.5 Flare ile üretildi, boyut 1K, kalite medium.

Tablodan iki sonuç çıkar. Birincisi, boyutu indirdiğiniz dosyadan okuyun. 1K düzenleme kare istedi ama 1024×682 döndü; gönderdiğimiz 1024×683 JPEG'in şekliydi ve aynı düzenlemenin 1K'daki başka bir çalıştırması 1024×1024 döndü. İkincisi, görsel API belgelerindeki (29 Ekim 2026'da kontrol edildi) boyut listesi bu model için auto, 1K, 2K, 4K ve 3840x2160 sunuyor ve listede olmayan boyutları ücret almadan reddettiğini söylüyor; 29 Ekim 2026'daki 1536x1024 çağrımız reddedilmedi ve 1536×1024 döndü. Bir düzeneği tek boyuta göre kurmadan önce gerçek dosyayı kontrol edin. Boyut listesi, aynı istek gövdesinin her zaman aynı piksel sonucunu vermediğini gösteriyor; bu yüzden çıktıyı otomatik bir yerleşime yerleştirmeden önce genişlik ve yükseklik değerlerini okuyun. İndirdiğiniz her dosyayı açıp genişlik ve yükseklik değerlerini not etmek, sonraki denemeleri karşılaştırmayı kolaylaştırır.

Düzenleme sahneyi korur ve tek bir şeyi değiştirir

Düzenleme iki soruya yanıt verir: ne değişiyor ve ne kalıyor. Tek bir değişiklik istedik ve hayatta kalması gerekenleri adlandırdık. İstemde yalnızca değişmesini istediğiniz nesneyi değil, korunması gereken öğeleri de açıkça yazın; çıktıyı değerlendirirken bu listeyi tek tek kontrol edin.

Prompt: "Change the red bicycle to matte black. Keep everything else exactly the same: the table, the cup, the window frame and the daylight. Photorealistic, no text, no logos."

Sol: dışarıda kırmızı bir bisikletin olduğu bir kafe penceresi. Sağ: düzenlemeden sonra aynı pencere, bisiklet artık koyu.
Sol: gönderdiğimiz kaynak fotoğraf. Sağ: 29 Ekim 2026'daki bir düzenlemenin çıktısı, boyut 1K, kalite medium. Yalnızca bisikletin değişmesi istendi; masa, fincan ve bitki yerinde duruyor.

Bisiklet koyu döndü; masa, fincan, bitki ve pencere çerçevesi kadrajda kaldı. Kaynak 1024×683 JPEG'ti, çıktı 1024×682 ölçüldü ve çalıştırma 38,0 sn sürdü. Kalacaklar listesini her seferinde yazın: istem yapısına genel olarak bakmak için GPT Image 2 istem rehberimize göz atın.

Hatalar ve sınırlar

Pikseller oluşmadan önce iki başlık işi yapar: bearer belirteci ve benzersiz bir Idempotency-Key. Bunlar doğruysa çağrının geri kalanını yeniden denemek kolaydır.

Ne gönderirsinizNe döner
Anahtarsız oluşturma çağrısı400 missing_idempotency_key
Aynı anahtar, aynı gövde, iki kez200 ve mevcut görev, yeni ücret alınmaz
Aynı anahtar, değişmiş gövde409 idempotency_key_reused

Anahtar, 29 Ekim 2026'da kontrol edilen belgelere göre 255 karaktere kadar olabilir. Aynı gövdeyle tekrar denemek güvenli yoldur: mevcut görevi alırsınız ve yeni ücret alınmaz. Anahtarı istekler arasında saklayın; aynı gövdeyle yeniden denemek için aynı değeri kullanmanız gerekir. Base64 dahil gövdeyi 1 MiB altında tutun, bu yüzden göndermeden önce kaynağı yeniden boyutlandırın veya sıkıştırın.

Bir görev başarılı olduğunda assets[0].url yaklaşık bir saat geçerli imzalı bir bağlantıdır; belgelere göre hemen indirin ya da yeni bağlantı için aynı görevi yeniden yoklayın. Görev kayıtları 24 saat kalır; aynı kimliği kısa bir süre sonra yeniden sorgulayabilirsiniz.

29 Ekim 2026'da bir başlık bizi şaşırttı: Python urllib'in varsayılan User-Agent'ıyla gönderilen POST, Cloudflare'den HTTP 403 ve "error code: 1010" gövdesiyle döndü. Aynı POST kendi User-Agent: omniakey-example/1 başlığımızla API'ye ulaştı ve API, gönderdiğimiz boş gövde için 400 invalid_request yanıtı verdi, hiçbir ücret alınmadı. Belgeler yalnızca Authorization ve Idempotency-Key adlarını veriyor, bu yüzden istemcinizde bir User-Agent ayarlayın. Bu başlığı eklemek, isteğinizin Cloudflare üzerinden API'ye ulaşmasını sağlar; değerini değiştirmeniz gerekmez.

API işleri için GPT Image 2.5 mi GPT Image 2 mi?

Flare, test ettiğimiz 2.5 kimliği. GPT Image 2, GPT Image 2 model sayfasında gpt-image-2 kimliğini kullanıyor. Bir betik o kimlikle ihtiyacınız olanı zaten üretiyorsa değiştirmek için bir neden yok.

Bir nesne değişirken sahnesini koruması gereken bir fotoğraf için 29 Ekim 2026 çalıştırmalarımızın kapsadığı yol Flare ve medium: üretilen üç boyut ve 1024×682'lik düzenleme. GPT Image 2.5 ile GPT Image 2 karşılaştırmasında iki model için boyutlar ve aynı istemle alınan sonuçlar var; rakamları önünüze alıp seçin. Güncel tarifeler fiyatlandırma sayfasında.

Sık sorulan sorular

Hangi model kimliğini kullanmalıyım: gpt-image-2.5-flare mı gpt-image-2.5-sunburst mı?

Yukarıdaki tüm çalıştırmalarda Flare kullandık ve düzenlemesi korumasını istediğimiz sahneyi korudu. Model sayfası Sunburst'ü ikinci 2.5 kimliği olarak listeliyor: Flare ile başlayın ve geçmeden önce Sunburst'ü en zor düzenlemenizde deneyin.

1536x1024 gibi yatay bir boyut isteyebilir miyim?

29 Ekim 2026'da 1536x1024'lük bir üretim 1536×1024 döndü. Görsel API belgelerindeki boyut listesi bu model için bu değeri içermiyor, bu yüzden üretimde ona güvenmeden önce dosyayı okuyun ve belgelere bakın.

Düzenlemem neden istediğimden farklı bir boyutta döndü?

Aynı 1K düzenleme bir çalıştırmada 1024×682, diğerinde 1024×1024 döndü; bu yüzden istediğiniz boyutu bir istek olarak görün, vaat olarak değil. Yerleştirmeden önce PNG'yi açın ve genişliği ile yüksekliği okuyun.

User-Agent başlığı gerekli mi?

29 Ekim 2026'da Python'un varsayılan User-Agent'ıyla giden bir istek Cloudflare'in 1010 hatasıyla HTTP 403 aldı. Aynı istek kendi User-Agent başlığımızla API'ye ulaştı, bu yüzden bir tane gönderin.

Görsel bağlantıları ne kadar geçerli?

Belgeler imzalı bağlantının yaklaşık bir saat geçerli olduğunu söylüyor. Yeni bağlantı için görevi yeniden yoklayın ve görev başarılı olur olmaz dosyayı indirin.

Bu makaledeki modeller

GPT Image 2.5image APIPythonimage editingAPI

İlgili makaleler

Son makaleler