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

Seedream 5.0 Pro API: Python ile görsel üretme

model alanı Dola-Seedream-5.0-pro olan tek bir POST görsel görevini oluşturuyor. Aşağıda istek kodu, boyut ve etiket davranışı ile 29 Ekim 2026'da ürettiğimiz iki görsel var.

Kiki, OmniaKey COO7 dk okuma
Bu sayfada

https://api.omniakey.com/v1/media/tasks adresine tek bir POST gönderin, model alanına Dola-Seedream-5.0-pro, operation alanına generate yazın; sonra görev id'sini durum succeeded olana kadar yoklayıp assets[0].url adresini indirin. Görsel varsayılan olarak köşesinde "AI generated" etiketiyle geliyor. 29 Ekim 2026'da bu isteği ve 1024x1024 boyutunda bir düzenlemeyi çalıştırdık; iki dosya da 1024×1024 PNG olarak döndü.

Aşağıda id ve iki işlem, hiç değiştirmeden çalıştırdığımız istek kodu, istediğimiz boyutların her dosyadan okuduğumuz piksel değerleriyle yan yana geldiği liste, etiket, onu kapatan ayar (bu ayar çalıştırılmadı) ve oluşturma çağrısını durduran iki hata var. İki görsel de o gün ürettiklerimiz.

Hangi model id'sini ve hangi işlemleri kullanmalı

Dola-Seedream-5.0-pro id'sini kullanın; bu, Seedream 5.0 Pro model sayfasındaki id (29 Ekim 2026'da kontrol edildi). Sayfa iki işlem listeliyor: metinden görsel üretme ve görsel düzenleme. Sayfaya göre üretme ve düzenleme aynı fiyattan işliyor; seçtiğiniz boyut da eklediğiniz referans görseller de bu tutarı artırmıyor. Güncel fiyatlar fiyatlandırma sayfasında. Fiyat tek olduğu için üretme ile düzenleme arasında seçim yaparken maliyeti değil, işin kendisini düşünün.

İsteğin şeklini prompt'tan önce şu alanlar belirliyor:

  • model: Dola-Seedream-5.0-pro
  • operation: generate veya edit
  • parameters.size: 1K, 1.5K, 2K ya da arasında küçük x olan widthxheight
  • output_format: png veya jpeg, varsayılan jpeg

Boyut ve format alanları parameters içinde duruyor. Çıktı 2K'da bitiyor: model sayfasında (29 Ekim 2026'da kontrol edildi) 4K boyut yok. Seedream kenarlar arasına küçük x yazıyor, Qwen ve Wan ise yıldız kullanıyor; iki sağlayıcıya da bağlanan bir istemcide bu iki biçimi ayrı tutun. Bizim çalıştırmalarımızda widthxheight biçimi ve 1024x1024 ile PNG vardı; üç boyut kademesi çalıştırmaların dışında kaldı.

Üretme çağrısında istek gövdesine yalnızca prompt girer. Düzenlemede prompt ile kaynak görsel birlikte gider; kaynak, satır içi Base64 ya da genel bir URL olabilir.

ByteDance aynı modeli BytePlus ModelArk üzerinde farklı bir id ile satıyor: dola-seedream-5-0-pro-260628. O id BytePlus'a ait, dolayısıyla OmniaKey'e giden istek yukarıdaki id'yi ister.

İstek kodu

Aşağıdaki betik 29 Ekim 2026'da çalıştırdığımız betiğin aynısı, hiç değişmedi: iki yardımcı fonksiyon, bir üretme çağrısı, bir düzenleme çağrısı, yalnızca Python standart kütüphanesi. Anahtarınızı OMNIAKEY_API_KEY üzerinden okur ve her PNG'yi betiği çalıştırdığınız klasöre yazar. Görsel API belgeleri aynı üç adımı anlatıyor.

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

API = "https://api.omniakey.com/v1/media/tasks"
KEY = os.environ["OMNIAKEY_API_KEY"]
MODEL = "Dola-Seedream-5.0-pro"

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 poll(url, attempts=5):
    for attempt in range(attempts):
        try:
            return request("GET", url)
        except urllib.error.HTTPError as err:
            if err.code < 500 or attempt == attempts - 1:
                raise
        except urllib.error.URLError:
            if attempt == attempts - 1:
                raise
        time.sleep(5 * (attempt + 1))

def run_task(body, out_path):
    task = request("POST", API, body, {"Idempotency-Key": str(uuid.uuid4())})["id"]
    print("task", task, flush=True)
    for _ in range(150):
        time.sleep(4)
        state = poll(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: short-lived, 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="1024x1024"):
    body = {
        "model": MODEL,
        "type": "image",
        "operation": "generate",
        "input": {"prompt": prompt},
        "parameters": {"size": size, "output_format": "png"},
    }
    return run_task(body, out_path)

def edit_image(source_path, prompt, out_path, size="1024x1024"):
    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, "output_format": "png"},
    }
    return run_task(body, out_path)

if __name__ == "__main__":
    task = generate_image(
        "A glass bottle of cold-pressed orange juice on a pale stone counter, morning light from the left, "
        "a single orange slice beside it, shallow depth of field, no text, no logos.",
        "juice-bottle.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)

Üretme ile düzenleme arasındaki fark iki yerde: işlem türünün değeri ve kaynak görsel alanı. Diğer alanlar aynı kalıyor.

Üç adım run_task içinde: yeni bir idempotency anahtarıyla görevi oluşturun, durum queued ve processing dışına çıkana kadar görev URL'sini yoklayın, sonra ilk asset URL'sini indirin. Oluşturma çağrısı HTTP 202 döner ve task_ ile başlayan bir id verir; durum queued olarak başlar (belgeler, 29 Ekim 2026'da kontrol edildi). failed durumuna düşen görev, yanıttaki hatayı fırlatır, böylece nedeni doğrudan terminalinizde görürsünüz. Betik görev id'sini de yazdırıyor; takıldığınızda durumu aynı URL'den elle sorgulayabilirsiniz.

Çalıştırdığımız boyutlar ve formatlar, dönen dosyalar

İki çalıştırma da aynı boyut dizesini ve aynı formatı istedi; iki dosya da 1024×1024 PNG olarak döndü.

  • Üretme — İstenen boyut: 1024x1024; Dosyadaki piksel: 1024×1024; Format: PNG; Tarih: 2026-10-29
  • Düzenleme — İstenen boyut: 1024x1024; Dosyadaki piksel: 1024×1024; Format: PNG; Tarih: 2026-10-29

Piksel değerini indirdiğiniz dosyadan okuyun. Boyut dizesi istediğiniz şeydir; dosya ise elinize geçendir. Sayfa düzenine ve tasarıma dosyanın kendi piksel değerini yazın. Boyut dizesini dosyadan okumak, istemcinin ne istediğini değil, hizmetin ne döndürdüğünü gösterir. Her PNG'yi açıp genişliğini ve yüksekliğini okuduk, görsele de onu üreten prompt'un yanında baktık.

Düzenleme daha ilginç olan çalıştırma. Bir kafe penceresinin 1024×683 JPEG'ini ve tek bir talimatı gönderdik, kare bir görsel döndü. Bisiklet artık koyu; masa, fincan ve bitki hâlâ karede. Çıktı kare olduğu için pencere ve masa kenarı kaynaktan farklı çerçevelenmiş.

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.
Solda: dışarıda kırmızı bir bisikletin olduğu kafe penceresi. Sağda: düzenlemeden sonra aynı pencere, bisiklet artık koyu, kare çerçevede.
Solda: gönderdiğimiz kaynak fotoğraf, 1024×683. Sağda: 29 Ekim 2026'da tek bir düzenlemenin çıktısı, boyut 1024x1024. Bisiklet artık koyu. Çıktı kare, bu yüzden pencere ve masa kenarı kaynaktan farklı çerçevelenmiş.

Etiket ve nasıl kapatılır

Model sayfasına göre (29 Ekim 2026'da kontrol edildi) her çıktı, parameters içinde watermark false yapılmadıkça köşesinde "AI generated" etiketi taşıyor. Sayfa etiketi sağ alt köşeye koyuyor; aşağıdaki varsayılan çıktıda da orada duruyor: soluk ve küçük. İstekte watermark alanını hiç yazmazsanız etiketli görsel gelir. Etiketsiz bir dosyayı paylaşacaksanız, kendi tarafınızda etiket eklemeyi planlayın.

prompt
A glass bottle of cold-pressed orange juice on a pale stone counter, morning light from the left, a single orange slice beside it, shallow depth of field, no text, no logos.

Varsayılan ayarlarla üretilen çıktı şu:

Açık renkli taş tezgâhta bir şişe portakal suyu ve bir dilim portakal, köşesinde soluk bir AI generated etiketi.
29 Ekim 2026'da OmniaKey API'si üzerinden Seedream 5.0 Pro ile üretildi, boyut 1024x1024, varsayılan ayarlar. Soluk 'AI generated' etiketi sağ alt köşede duruyor.

watermark false ayarı çalıştırılmadı: blog aracının çalıştırma başına harcama sınırı çağrıyı gönderilmeden önce durdurdu.

Hatalar ve sınırlar

Oluşturma çağrısının geçip geçmeyeceğini iki başlık belirliyor: bearer token ve Idempotency-Key.

Ne gönderirsinizNe döner
Idempotency anahtarı olmayan oluşturma çağrısı400 missing_idempotency_key
Aynı anahtar ve aynı gövde, tekrar200, mevcut görev döner, yeni ücret işlemez
Aynı anahtar, değişmiş gövde409 idempotency_key_reused

Aynı anahtar ve aynı gövde, istediğiniz yeniden denemedir: mevcut görev döner ve yeni bir ücret işlemez. Yeniden denerken aynı gövdeyi de gönderin; anahtar ancak böyle anlam kazanır. Aynı anahtarla prompt veya boyut değişirse 409 döner, bu yüzden her yeni istek için yeni anahtar üretin. Anahtar en fazla 255 karakter olabilir (belgeler, 29 Ekim 2026'da kontrol edildi).

İstek gövdesini Base64 görsel dahil 1 MiB altında tutun ve büyük bir kaynak fotoğrafı göndermeden önce küçültün. Görev başarıyla biterse yanıttaki indirme URL'si imzalı bir bağlantıdır ve belgelere göre yaklaşık bir saat geçerlidir; dosyayı hemen indirin ya da yeni bir bağlantı için görevi tekrar yoklayın.

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ü. Kendi User-Agent başlığımız API'ye ulaştı ve hiçbir ücret işlemedi.

Kendi User-Agent başlığınızı gönderin, örneğin omniakey-example/1. Python'ın varsayılanı 29 Ekim 2026'da yukarıdaki 403'ü aldı.

API işi için Seedream mi GPT Image 2.5 mi?

İşi ne olduğu belirler. Bizim düzenlememizde Seedream 5.0 Pro adını verdiğimiz tek nesneyi, bisikleti, değiştirdi ve sahnenin çoğunu korudu, gerçi çerçeve değişti; iki çalıştırmamız da bir kafe penceresi ve bir meyve suyu şişesiydi. Çağrı, operation alanı generate veya edit olan tek bir gövde; kaynak görsel genel bir URL ya da satır içi Base64 olabilir (belgeler, 29 Ekim 2026'da kontrol edildi).

Aynı prompt'un sonucunu GPT Image 2'nin yanında görmek için Seedream 5.0 Pro ile GPT Image 2 karşılaştırması iki çıktıyı birlikte gösteriyor. İki çıktıyı yan yana koymak seçimi hızlandırıyor. Aynı üret-ve-düzenle yapısını başka bir modelde kurmak için GPT Image 2.5 API eğitimi isteği ve boyutları adım adım anlatıyor. Hangi nesnenin değişeceğini ve çıktının hangi oranda kalacağını önceden netleştirin; bizim düzenlememizde çıktı kareye döndü. Bir hattı taşımadan önce en zor prompt'unuzu adayda çalıştırın, sonra fiyatlara bakın.

FAQ

API'ye hangi model id'sini göndermeliyim?

Dola-Seedream-5.0-pro: model sayfasındaki örnek istekte geçen id (29 Ekim 2026'da kontrol edildi). ByteDance'in kendi dola-seedream-5-0-pro-260628 id'si BytePlus ModelArk'a ait; OmniaKey yukarıdaki id'yi kabul ediyor.

Görselimde neden "AI generated" etiketi var?

Model sayfasına göre (29 Ekim 2026'da kontrol edildi) her Seedream 5.0 Pro çıktısı, watermark false yapılmadıkça sağ alt köşede etiketi taşır. 29 Ekim 2026'daki varsayılan ayarlı çalıştırmamız etiketle geldi.

API hangi boyutları kabul ediyor?

1K, 1.5K ve 2K kademeleri ya da kenarlar arasında küçük x olan widthxheight biçimi (model sayfası, 29 Ekim 2026'da kontrol edildi). Çıktı 2K'da biter ve iki çalıştırmamız da 1024x1024 istedi.

JPEG yerine PNG alabilir miyim?

Evet. output_format png veya jpeg alır, varsayılan JPEG'dir (belgeler, 29 Ekim 2026'da kontrol edildi). İki çalıştırmada da PNG istedik ve PNG aldık.

Seedream ile var olan bir görseli düzenleyebilir miyim?

Evet: operation alanını edit yapın, prompt ile kaynak görseli gönderin; kaynak, mime type ile satır içi Base64 ya da genel bir URL olabilir. Kafe penceresi düzenlemesi yukarıdaki boyutlar bölümünde. Böylece tek çağrıda hem prompt hem kaynak görsel gidiyor.

Bu makaledeki modeller

Seedream 5.0 Progörsel APIPythonmetinden görselAPI

İlgili makaleler

Son makaleler