GPT Image 2 API: Eksiksiz Rehber (Python, Node.js, Curl)
2026/04/23

GPT Image 2 API: Eksiksiz Rehber (Python, Node.js, Curl)

Eksiksiz GPT Image 2 API entegrasyon rehberi. Kimlik doğrulama, parametreler, Python/Node.js örnekleri, görsel düzenleme, toplu üretim, hata yönetimi ve maliyet ipuçları.

GPT Image 2'yi kendi ürününüze, otomasyon hattınıza veya toplu üretim iş akışınıza entegre etmek istiyorsanız, API tek yoldur. Bu rehber ihtiyacınız olan her şeyi kapsıyor: kimlik doğrulama, parametreler, Python ve Node.js için kod örnekleri, görsel düzenleme, hata yönetimi ve maliyet optimizasyonu.

Sonunda gerçek üretim trafiğini kaldıran çalışır bir GPT Image 2 entegrasyonuna sahip olacaksınız.

Ön koşullar

Başlamadan önce:

  1. Bir OpenAI geliştirici hesabı (platform.openai.com)
  2. Finanse edilmiş bir faturalandırma hesabı (görsel üretimi ücretlidir; yeni hesaplar deneme kredisi alabilir)
  3. Bir API anahtarı — platform.openai.com/api-keys adresinden oluşturun
  4. Kullanmak istediğiniz SDK'ya bağlı olarak Python 3.8+ veya Node.js 18+

Üretim ekipleri için stabil API erişimi

Ekibiniz doğrudan OpenAI erişiminin kararsız olduğu bir bölgedeyse veya yük devretme, faturalandırma birleştirme ve SLA garantilerini yöneten tek bir geçiş noktasına ihtiyaç duyuyorsanız, support@gpt-image2.art adresine e-posta atarak yönetilen bir GPT Image 2 API anahtarı edinebilirsiniz. Geçiş; aynı gpt-image-2 model adını, aşağıda açıklanan aynı parametreleri ve aynı yanıt biçimini destekler — bu nedenle kodunuzun değişmesi gerekmez.

Adım 1: SDK'yı yükleyin

Python

pip install openai pillow

pillow isteğe bağlıdır, yalnızca döndürülen görsel üzerinde son işlem yapmayı planlıyorsanız gereklidir.

Node.js

npm install openai
# veya
pnpm add openai

Adım 2: API anahtarınızı yapılandırın

API anahtarınızı asla kodun içine sabit olarak yazmayın. Bir ortam değişkeni kullanın.

Bir .env dosyası oluşturun:

OPENAI_API_KEY=sk-proj-your-key-here

Ardından kodunuzda yükleyin (Python python-dotenv kullanır, Node.js .env'yi yerel olarak veya dotenv ile yükler).

Adım 3: İlk görselinizi oluşturun

Python — minimal çalışma örneği

import os
from openai import OpenAI
import base64

client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])

result = client.images.generate(
    model="gpt-image-2",
    prompt="A white stainless steel water bottle on a beige linen tablecloth, premium product photography, 1:1 aspect ratio.",
    size="1024x1024",
    quality="medium",
    n=1,
)

# Image is returned as base64
image_b64 = result.data[0].b64_json
with open("output.png", "wb") as f:
    f.write(base64.b64decode(image_b64))

print("Saved to output.png")

Node.js — minimal çalışma örneği

import OpenAI from 'openai';
import fs from 'fs';

const client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });

const result = await client.images.generate({
  model: 'gpt-image-2',
  prompt:
    'A white stainless steel water bottle on a beige linen tablecloth, premium product photography, 1:1 aspect ratio.',
  size: '1024x1024',
  quality: 'medium',
  n: 1,
});

const imageB64 = result.data[0].b64_json;
fs.writeFileSync('output.png', Buffer.from(imageB64, 'base64'));
console.log('Saved to output.png');

Curl — kabuk betikleri ve hızlı testler için

curl https://api.openai.com/v1/images/generations \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "A white stainless steel water bottle on a beige linen tablecloth.",
    "size": "1024x1024",
    "quality": "medium",
    "n": 1
  }'

Tüm parametreler açıklandı

ParametreTürZorunluAçıklama
modelstringevetHer zaman gpt-image-2
promptstringevetGörsel açıklaması; 32.000 karaktere kadar
sizestringhayırEn-boy oranı (1:1, 16:9, 9:16, vb.) veya açık piksel (1024x1024, 1536x1024, 1024x1536)
resolutionstringhayır1K (~1 MP) / 2K (~4 MP) / 4K (~8 MP) — açık çözünürlük kontrolü için bazı geçiş noktaları tarafından kullanılır
qualitystringhayırlow, medium, high — çıktı token sayısını ve maliyeti etkiler
nintegerhayırİstek başına görsel sayısı, 1-10
image_urlsarrayhayırGörsel düzenleme / görsel-to-görsel için 1-16 referans görsel (her biri ≤50MB, JPEG / PNG / WEBP)
output_formatstringhayırpng (varsayılan), jpeg, webp
output_compressionintegerhayır0-100, yalnızca jpeg/webp için
backgroundstringhayırAlfa kanallı PNG için transparent
moderationstringhayırauto (varsayılan) veya daha hızlı ancak daha katı filtreleme için low
callback_urlstringhayırTamamlanma geri çağrılarını almak için HTTPS uç noktası (asenkron geçiş noktaları tarafından kullanılır)
userstringhayırOpenAI'nın kötüye kullanım izlemesi için stabil kullanıcı kimliği

Görsel düzenleme — öldürücü özellik

GPT Image 2'nin yönlendirilmiş düzenlemesi, difüzyon modellere karşı en büyük API avantajıdır. Mevcut bir görsel ve ne değiştirileceğini açıklayan bir prompt yüklüyorsunuz.

Python

result = client.images.edit(
    model="gpt-image-2",
    image=open("original.png", "rb"),
    prompt="Change the bottle's color from white to navy blue. Keep everything else identical.",
    size="1024x1024",
    quality="medium",
)

with open("edited.png", "wb") as f:
    f.write(base64.b64decode(result.data[0].b64_json))

Node.js

import { toFile } from 'openai';

const result = await client.images.edit({
  model: 'gpt-image-2',
  image: await toFile(fs.createReadStream('original.png'), 'original.png'),
  prompt:
    "Change the bottle's color from white to navy blue. Keep everything else identical.",
  size: '1024x1024',
  quality: 'medium',
});

Prompttaki "Keep everything else identical" ifadesi kritiktir — olmadan model ilgisiz bölgeleri yeniden oluşturabilir.

Hız sınırı açısından güvenli eş zamanlılıkla toplu üretim

100 isteği naif biçimde Promise.all() ile göndermeyin — hız sınırına çarparsınız. Sınırlandırılmış eş zamanlılık kullanın.

Python — semaphore ile asyncio kullanarak

import asyncio
from openai import AsyncOpenAI

client = AsyncOpenAI(api_key=os.environ["OPENAI_API_KEY"])

async def generate_one(prompt: str, semaphore: asyncio.Semaphore):
    async with semaphore:
        result = await client.images.generate(
            model="gpt-image-2",
            prompt=prompt,
            size="1024x1024",
            quality="medium",
        )
        return result.data[0].b64_json

async def batch_generate(prompts: list[str], concurrency: int = 5):
    semaphore = asyncio.Semaphore(concurrency)
    tasks = [generate_one(p, semaphore) for p in prompts]
    return await asyncio.gather(*tasks)

results = asyncio.run(batch_generate(["prompt 1", "prompt 2", ...]))

Node.js — p-limit kullanarak

import pLimit from 'p-limit';

const limit = pLimit(5); // 5 eş zamanlı istek

const tasks = prompts.map((prompt) =>
  limit(async () => {
    const result = await client.images.generate({
      model: 'gpt-image-2',
      prompt,
      size: '1024x1024',
      quality: 'medium',
    });
    return result.data[0].b64_json;
  })
);

const results = await Promise.all(tasks);

Üretim için hata yönetimi

API birkaç farklı şekilde başarısız olabilir. Her birini yönetin:

from openai import OpenAI, APIError, RateLimitError, APIConnectionError, BadRequestError

client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])

def safe_generate(prompt: str, max_retries: int = 3):
    for attempt in range(max_retries):
        try:
            result = client.images.generate(
                model="gpt-image-2",
                prompt=prompt,
                size="1024x1024",
                quality="medium",
            )
            return result.data[0].b64_json

        except RateLimitError:
            # 429 — bekle ve tekrar dene
            wait = (2 ** attempt) * 5
            print(f"Rate limited; waiting {wait}s")
            time.sleep(wait)

        except BadRequestError as e:
            # 400 — genellikle içerik politikası ihlali, tekrar deneme
            print(f"Bad request: {e}")
            return None

        except APIConnectionError:
            # ağ sorunu — tekrar dene
            time.sleep(2 ** attempt)

        except APIError as e:
            # 500 düzeyi — geri çekilmeyle tekrar dene
            time.sleep(2 ** attempt)

    return None

Maliyet optimizasyonu — somut taktikler

1. Doğru kalite kademesini seçin

KademeGörsel başına maliyet (1024×1024)Ne zaman kullanılır
low~$0.011Taslaklar, A/B testi, prompt yinelemesi
medium~$0.042Çoğu üretim kullanım durumu
high~$0.167Son hero görseller, baskı çözünürlüklü varlıklar

Çoğu ekip varsayılan olarak high kullanarak fazla ödüyor. Çalışmanın ~%95'i için medium kullanın.

2. images.generate yerine images.edit ile yineleyin

Yönlendirilmiş bir düzenleme bir üretimle aynı maliyete gelir, ancak 5 deneme yerine 1 denemede doğru sonucu verir. Çok turlu iyileştirme için bu 5× maliyet tasarrufudur.

3. Promptlar tekrarlandığında deterministik olarak önbelleğe alın

Aynı promptu tekrar tekrar oluşturuyorsanız (örn. kullanıcıya yönelik ürün önizlemeleri), hash(prompt + size + quality) ile önbelleğe alın ve CDN'nizden sunun.

4. Prompt keşfi için low kullanın, ardından yükseltin

Yaygın iş akışı:

# Adım 1: 5 prompt varyantını düşük kalitede deneyin (toplam $0.05)
candidates = [generate(p, quality="low") for p in variants]

# Adım 2: en iyiyi seçin, yüksek kalitede yeniden oluşturun
best_prompt = pick_winner(candidates)
final = generate(best_prompt, quality="high")  # $0.167

Toplam maliyet: tüm 5 varyantı yüksek kalitede çalıştırsaydınız ~$0.84 yerine ~$0.22.

5. OpenAI kontrol panelinde sabit harcama limitleri belirleyin

Kodunuzun hiç hata yapmayacağına güvenmeyin — platform.openai.com/account/billing/limits adresinde bir kullanım sınırı belirleyin.

Akış üretim durumu (isteğe bağlı)

Uzun süren toplu işlemler için ilerlemeyi görüntülemek isteyebilirsiniz. Görsel üretim uç noktası akışlı değildir, ancak toplu işlemi asenkron ilerleme raporlamasıyla sarabilirsiniz:

let completed = 0;
const tasks = prompts.map((prompt) =>
  limit(async () => {
    const result = await client.images.generate({ /* ... */ });
    completed++;
    onProgress({ completed, total: prompts.length });
    return result.data[0].b64_json;
  })
);

Yaygın entegrasyon hataları

HataNe olurÇözüm
API anahtarını sabit kodlamakAnahtar Git üzerinden sızarHer zaman ortam değişkenleri kullanın
result.data[0].url'e kayıtAlan her zaman mevcut değil (response_format'a bağlı)b64_json kullanın ve yerel olarak çözün
Düzenleme için büyük görseller göndermekYavaş + pahalıYüklemeden önce 1024×1024'e yeniden boyutlandırın
400 hatalarını görmezden gelmekDüzeltilemez başarısızlıklarda yeniden denemeleri yakar4xx (tekrar deneme) ile 5xx'i (tekrar dene) ayırt edin
Hız limiti yönetimi yokAni artışlar 429 çığına yol açarSemaphore sınırlı eş zamanlılık kullanın
Tam promptları düz metin olarak kaydetmekKullanıcı tarafından sağlanmışsa gizlilik ihlaliKaydetmeden önce hash'leyin veya gizleyin

Üretime hazır kontrol listesi

Bir GPT Image 2 entegrasyonu göndermeden önce:

  • API anahtarı ortam değişkeninde, asla kodda veya günlüklerde değil
  • Kullanım durumuna uygun kalite kademesi (medium varsayılan)
  • Toplu işler için sınırlı eş zamanlılık (p-limit / Semaphore)
  • Hata yönetimi 4xx ile 5xx'i ayırt ediyor
  • OpenAI kontrol panelinde sabit harcama sınırı belirlenmiş
  • Kullanıcı girişi içerik politikası ihlalleri için temizlenmiş
  • Çıktı kendi depolama alanınızda saklanıyor (OpenAI URL'lerine güvenilmiyor)
  • Tekrar eden promptlar için önbellek katmanı
  • Görsel başına maliyet ve hata oranında izleme

Görev yoklamayla asenkron üretim (yüksek eş zamanlılık kurulumları için)

Yüksek hacimli üretim iş yükleri için, bazı GPT Image 2 geçiş noktaları asenkron görev modeli sunar: isteği gönderirsiniz, hemen bir görev kimliği alırsınız ve tamamlanmayı yoklar ya da geri çağrı alırsınız. Bu, büyük toplu işlemlerde HTTP zaman aşımlarını önler.

Tipik asenkron akış:

# 1. İstek gönder → task_id al
response = client.images.generate(
    model="gpt-image-2",
    prompt="...",
    size="1024x1024",
    quality="high",
    callback_url="https://your-app.com/api/image-callback",  # isteğe bağlı
)
task_id = response.id

# 2. Birkaç saniyede bir görev durumunu yokla
while True:
    status = client.images.retrieve(task_id)
    if status.status == "completed":
        image_url = status.data[0].url
        break
    elif status.status == "failed":
        raise Exception(status.error)
    time.sleep(3)

Asenkron mod şunlar için idealdir:

  • Gece yüzlerce ürün varyantı oluşturan e-ticaret mağazaları
  • A/B prompt testleri yürüten pazarlama ekipleri
  • Kullanıcıların görsel isteyip daha sonra kontrol ettiği uygulamalar (bildirimler)

GPT Image 2 API SSS

S: GPT Image 2 API model adı nedir? gpt-image-2. Tüm istekler için tam olarak bu dizeyi kullanın.

S: GPT Image 2 API görsel-to-görsel / görsel düzenlemeyi destekliyor mu? Evet. images.edit'i image parametresiyle kullanın veya bunu destekleyen geçiş noktalarına image_urls (1-16 referans görsel dizisi) geçirin. Referans görseller karakter tutarlılığı, IP tasarımı ve ürün fotoğrafçılığı için olmazsa olmazdır.

S: GPT Image 2 API ücretsiz mi? Hayır, token başına ücretlidir. Yeni OpenAI hesapları deneme kredisi alabilir. Bazı üçüncü taraf geçiş noktaları ücretsiz deneme kredisi sunar.

S: GPT Image 2 API görsel başına ne kadar maliyetlidir? Düşük / orta / yüksek kalitede 1024×1024 görsel başına yaklaşık $0.011 / $0.042 / $0.167. Daha büyük boyutlar ve referans görseller daha fazla maliyetlidir.

S: Maksimum prompt uzunluğu nedir? 32.000 karaktere kadar. Pratikte ~1.500 karakterin üzerindeki promptlar azalan getiri gösterir.

S: API ile şeffaf arka planlı PNG nasıl oluşturulur? background: "transparent" ve output_format: "png" ayarlayın.

S: GPT Image 2 hangi çözünürlükleri destekliyor? Yaygın ön ayarlar: 1024x1024, 1536x1024, 1024x1536. Bazı geçiş noktaları açık kontrol için 1K / 2K / 4K çözünürlük düzeyleri sunar.

S: Hız sınırı nedir? OpenAI kademeniize bağlıdır. Ücretsiz kademe en katı sınırlara sahiptir; kullanım kademesi zamanla artış gösterir. Sınırın altında kalmak için sınırlı eş zamanlılık (p-limit / Semaphore) kullanın.

S: GPT Image 2 API hatalarını nasıl yönetirim? 4xx'i (tekrar deneme — genellikle içerik politikası ihlalleri) 5xx'ten (üstel geri çekilmeyle tekrar dene) ayırt edin. Yukarıdaki hata yönetimi bölümüne bakın.

S: Uçuştaki bir GPT Image 2 API isteğini iptal edebilir miyim? Eş zamanlı istekler için yalnızca bağlantıyı kapatarak. Asenkron özellikli geçiş noktaları, görev hâlâ kuyruktayken çalışan bir cancel uç noktası sunar.

S: API akışı destekliyor mu? Görsel üretiminin kendisi akışlı değildir (tamamlanan görseli sonunda alırsınız). İlerleme arayüzü için toplu işlemi özel bir ilerleme raporlayıcıya sarın (yukarıdaki "Akış üretim durumu"na bakın).

Çalışan bir örnek uygulama ister misiniz?

Tam referans uygulaması için — Next.js + GPT Image 2 + Stripe + görsel depolama — gpt-image2.art ve gerçek çıktıları gösteren explore sayfasını inceleyin.

SLA'lı yönetilen API anahtarına mı ihtiyacınız var?

Hesap kurulumu, faturalandırma, bölge sorunları ve hız limiti ayarlamalarını atlamayı tercih ediyorsanız, support@gpt-image2.art adresine e-posta atarak yönetilen bir GPT Image 2 API anahtarı satın alabilirsiniz. Sağladıklarımız:

  • Yerleşik yük devretmeyle tek stabil API uç noktası
  • Yerel para biriminizde birleştirilmiş faturalandırma (USD havale gerekmiyor)
  • Kutudan çıkar çıkmaz asenkron görev modu + geri çağrı desteği
  • Aylık >10K görsel üreten ekipler için hacim fiyatlandırması
  • Aynı gpt-image-2 model adı ve parametre spesi — doğrudan uyumlu

Daha fazla okuma

Free to try

Generate your first image with GPT Image 2 — right now

Reliable non-Latin text rendering, directed editing, and 50+ ready-to-use prompts. No downloads — just open in your browser.