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.
Bu sayfada
- Hangi model id'sini ve hangi işlemleri kullanmalı
- İstek kodu
- Çalıştırdığımız boyutlar ve formatlar, dönen dosyalar
- Etiket ve nasıl kapatılır
- Hatalar ve sınırlar
- API işi için Seedream mi GPT Image 2.5 mi?
- FAQ
- API'ye hangi model id'sini göndermeliyim?
- Görselimde neden "AI generated" etiketi var?
- API hangi boyutları kabul ediyor?
- JPEG yerine PNG alabilir miyim?
- Seedream ile var olan bir görseli düzenleyebilir miyim?
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-prooperation:generateveyaeditparameters.size:1K,1.5K,2Kya da arasında küçükxolanwidthxheightoutput_format:pngveyajpeg, varsayılanjpeg
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.
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ş.
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.

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.
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:

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önderirsiniz | Ne döner |
|---|---|
| Idempotency anahtarı olmayan oluşturma çağrısı | 400 missing_idempotency_key |
| Aynı anahtar ve aynı gövde, tekrar | 200, mevcut görev döner, yeni ücret işlemez |
| Aynı anahtar, değişmiş gövde | 409 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.
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
İlgili makaleler
Seedream 5.0 Pro vs GPT Image 2: aynı promptla test ve fiyat
Altı iş, aynı promptlar, üç model: her biri ne üretti ve ne kadar tuttu.
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.
Kling 3.0 API: metinden video isteği kodu ve gerçek klipler
Metinden videoya bir görev, kling-3.0 modeliyle tek bir POST. Aşağıda istek kodu, aldığı alanlar ve 29 Ekim 2026'da üretip ölçtüğümüz iki 5 saniyelik klip var.
Son makaleler
- Clapping Cat Meme AI: Evcil hayvanınızı görselden videoya ile alkışlatın
- DeepSeek Harness'ta Claude ve GPT API'leri nasıl kullanılır
- FLUX Kontext API alternatifi: GPT Image 2 ile görsel düzenleme
- Kling 3.0 prompt rehberi: yapı, örnekler ve gerçek klipler
- MiniMax H3 prompt rehberi: yapı, örnekler ve gerçek klipler