Seedream 5.0 Pro API: Membuat Gambar dengan Python
Satu POST dengan model Dola-Seedream-5.0-pro langsung membuat tugas gambar. Berikut kode permintaannya, perilaku ukuran dan label yang kami lihat, serta dua gambar yang kami buat pada 29 Oktober 2026.
Di halaman ini
- Id model dan operasi yang dipakai
- Kode permintaannya
- Ukuran dan format yang kami jalankan, dan hasilnya
- Label dan cara mematikannya
- Error dan batasannya
- Seedream atau GPT Image 2.5 untuk kerja API?
- FAQ
- Id model apa yang dikirim ke API?
- Kenapa gambar saya punya label "AI generated"?
- Ukuran apa saja yang diterima API?
- Bisakah saya mendapat PNG, bukan JPEG?
- Bisakah gambar yang sudah ada diedit dengan Seedream?
Kirim satu POST ke https://api.omniakey.com/v1/media/tasks dengan model diisi Dola-Seedream-5.0-pro dan operation diisi generate, lalu polling id tugas sampai statusnya succeeded dan unduh assets[0].url. Secara bawaan gambar membawa label "AI generated" di sudutnya. Pada 29 Oktober 2026 kami menjalankan permintaan itu dan satu edit berukuran 1024x1024, dan kedua berkas kembali sebagai PNG 1024×1024.
Berikut ini id dan dua operasinya, kode permintaan yang kami jalankan tanpa perubahan, daftar ukuran yang kami minta di samping ukuran piksel yang kami baca dari tiap berkas, label, pengaturan yang mematikannya (yang ini belum dijalankan), dan dua error yang menghentikan panggilan pembuatan. Kedua gambar adalah hasil kami hari itu.
Id model dan operasi yang dipakai
Pakai Dola-Seedream-5.0-pro, id pada halaman model Seedream 5.0 Pro (dicek 29 Oktober 2026). Halaman itu mencantumkan dua operasi, teks ke gambar dan edit gambar. Di sana juga tertulis bahwa membuat dan mengedit memakai tarif yang sama, dan ukuran yang Anda pilih maupun gambar referensi yang dilampirkan tidak menambah tarif. Tarif terbaru ada di halaman harga.
Sebelum prompt, bentuk permintaan ditentukan oleh bidang berikut:
model:Dola-Seedream-5.0-prooperation:generateataueditparameters.size:1K,1.5K,2K, atauwidthxheightdenganxoutput_format:pngataujpeg, danjpegadalah bawaannya
Bidang ukuran dan format berada di dalam parameters. Keluaran berhenti di 2K: halaman model (dicek 29 Oktober 2026) tidak mencantumkan ukuran 4K. Seedream memakai huruf x kecil di antara kedua sisi, sedangkan Qwen dan Wan memakai tanda bintang, jadi pisahkan kedua bentuk itu di klien yang memanggil keduanya. Percobaan kami memakai bentuk widthxheight dengan 1024x1024 dan PNG, sedangkan tiga tingkat ukuran tidak ikut dijalankan.
ByteDance menjual model yang sama di BytePlus ModelArk dengan id lain, dola-seedream-5-0-pro-260628. Id itu milik BytePlus, jadi permintaan ke OmniaKey memakai id di atas.
Kode permintaannya
Skrip di bawah adalah yang kami jalankan pada 29 Oktober 2026, tanpa perubahan: dua helper, satu panggilan membuat gambar, satu panggilan edit, hanya pustaka standar Python. Kunci dibaca dari OMNIAKEY_API_KEY dan setiap PNG ditulis ke folder tempat Anda menjalankannya. Dokumentasi API gambar menjelaskan tiga langkah yang sama.
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)
Tiga langkahnya ada di dalam run_task: buat tugas dengan kunci idempotensi baru, polling URL tugas sampai status keluar dari queued dan processing, lalu unduh URL aset pertama. Kedua fungsi memakai jalur yang sama, jadi perilaku polling dan unduhan tetap satu. Panggilan pembuatan menjawab HTTP 202 dengan id yang diawali task_, dan status dimulai sebagai queued (dokumentasi, dicek 29 Oktober 2026). Tugas yang berakhir failed melempar error dari respons, jadi penyebabnya langsung tampil di terminal Anda.
Ukuran dan format yang kami jalankan, dan hasilnya
Kedua percobaan meminta string ukuran dan format yang sama, dan kedua berkas kembali sebagai PNG 1024×1024.
- Membuat — Ukuran yang diminta:
1024x1024; Piksel di berkas: 1024×1024; Format: PNG; Tanggal: 2026-10-29 - Edit — Ukuran yang diminta:
1024x1024; Piksel di berkas: 1024×1024; Format: PNG; Tanggal: 2026-10-29
Baca ukuran piksel dari berkas yang Anda unduh. String ukuran adalah yang Anda minta; berkasnya adalah yang Anda terima. Saat menata halaman, pakai angka dari berkas itu, bukan string yang Anda kirim. Kami membuka tiap PNG, membaca lebar dan tingginya, lalu melihat gambarnya di samping prompt yang membuatnya.
Edit adalah percobaan yang lebih menarik. Kami mengirim JPEG 1024×683 berisi jendela kafe dan satu instruksi, lalu kembalinya gambar persegi. Sepedanya sekarang gelap, meja, cangkir, dan tanaman masih ada di gambar, dan karena keluarannya persegi, jendela serta tepi meja terbingkai berbeda dari sumbernya.
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.

Label dan cara mematikannya
Setiap keluaran membawa label "AI generated" di sudut, kecuali Anda mengatur watermark ke false di parameters, menurut halaman model (dicek 29 Oktober 2026). Halaman itu menempatkan label di sudut kanan bawah, dan di situlah label pada keluaran bawaan di bawah: tipis dan kecil. Biarkan watermark di luar permintaan dan Anda mendapat gambar berlabel.
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.
Berikut keluarannya, dibuat dengan pengaturan bawaan:

Pengaturan watermark false belum dijalankan: batas belanja per percobaan milik alat blog menghentikan panggilan itu sebelum terkirim.
Error dan batasannya
Dua header menentukan apakah panggilan pembuatan lolos: bearer token dan Idempotency-Key.
| Yang Anda kirim | Yang kembali |
|---|---|
| Panggilan pembuatan tanpa kunci idempotensi | 400 missing_idempotency_key |
| Kunci sama dan body sama, diulang | 200 dengan tugas yang sudah ada, tanpa biaya baru |
| Kunci sama, body berubah | 409 idempotency_key_reused |
Kunci yang sama dengan body yang sama adalah percobaan ulang yang Anda inginkan: tugas yang sudah ada kembali dan tidak ada biaya baru. Kunci yang sama dengan prompt atau ukuran yang berubah menghasilkan 409, jadi buat kunci baru untuk setiap permintaan baru. Panjang kunci sampai 255 karakter (dokumentasi, dicek 29 Oktober 2026). Kalau ragu, pakai satu kunci untuk satu permintaan dan simpan nilainya selama percobaan ulang.
Jaga body permintaan di bawah 1 MiB, termasuk gambar Base64, dan perkecil foto sumber yang besar sebelum dikirim. Saat tugas berhasil, URL unduhan di respons adalah tautan bertanda tangan yang berlaku sekitar satu jam, menurut dokumentasi, jadi ambil berkasnya langsung atau polling lagi untuk tautan baru.
Satu header membuat kami terkejut pada 29 Oktober 2026. POST yang dikirim dengan User-Agent bawaan urllib Python kembali HTTP 403 dengan body error code: 1010 dari Cloudflare. Header User-Agent kami sendiri sampai ke API, dan tidak ada biaya yang keluar.
User-Agent Anda sendiri, misalnya omniakey-example/1. Bawaan Python kena 403 di atas pada 29 Oktober 2026.Seedream atau GPT Image 2.5 untuk kerja API?
Pekerjaannya yang menentukan. Pada edit kami, Seedream 5.0 Pro mengubah objek yang kami sebut, yaitu sepeda, dan mempertahankan sebagian besar isi gambar, meski bingkainya berubah; dua percobaan kami adalah jendela kafe dan sebotol jus. Panggilannya satu body dengan operation diisi generate atau edit, dan sumbernya bisa URL publik atau Base64 inline (dokumentasi, dicek 29 Oktober 2026).
Untuk melihat hasil prompt yang sama di samping GPT Image 2, perbandingan Seedream 5.0 Pro vs GPT Image 2 menampilkan kedua keluaran dari satu prompt. Untuk bentuk buat-dan-edit yang sama pada model lain, tutorial API GPT Image 2.5 menelusuri permintaannya dan ukurannya. Jalankan prompt tersulit Anda pada kandidat sebelum memindahkan pipeline, lalu periksa tarifnya.
FAQ
Id model apa yang dikirim ke API?
Dola-Seedream-5.0-pro, id pada contoh permintaan di halaman model (dicek 29 Oktober 2026). dola-seedream-5-0-pro-260628 milik ByteDance sendiri termasuk BytePlus ModelArk, sedangkan OmniaKey memakai id di atas.
Kenapa gambar saya punya label "AI generated"?
Setiap keluaran Seedream 5.0 Pro membawa label di sudut kanan bawah kecuali watermark diatur ke false, menurut halaman model (dicek 29 Oktober 2026). Percobaan kami dengan pengaturan bawaan pada 29 Oktober 2026 membawa label itu.
Ukuran apa saja yang diterima API?
Tingkat 1K, 1.5K, dan 2K, atau bentuk widthxheight dengan huruf x kecil di antara kedua sisi (halaman model, dicek 29 Oktober 2026). Keluaran berhenti di 2K, dan kedua percobaan kami meminta 1024x1024.
Bisakah saya mendapat PNG, bukan JPEG?
Bisa. output_format menerima png atau jpeg, dan JPEG adalah bawaannya (dokumentasi, dicek 29 Oktober 2026). Kami memakai PNG di kedua percobaan dan mendapat PNG kembali.
Bisakah gambar yang sudah ada diedit dengan Seedream?
Bisa: kirim operation diisi edit bersama prompt dan gambar sumber, baik sebagai Base64 inline dengan mime type maupun sebagai URL publik. Edit jendela kafe ada di bagian ukuran di atas.
Model di artikel ini
Artikel terkait
Seedream 5.0 Pro vs GPT Image 2: uji prompt yang sama dan harga
Enam pekerjaan, prompt yang sama, tiga model: apa yang dihasilkan masing-masing dan berapa biayanya.
GPT Image 2.5 API: membuat dan mengedit gambar dengan Python
Satu POST membuat tugas dan satu GET membaca hasilnya. Berikut kode permintaannya, ukuran yang kami jalankan pada 29 Oktober 2026, dan satu edit sebelum dan sesudah.
Kling 3.0 API: kode permintaan teks ke video dan klip nyata
Tugas teks ke video cukup satu POST dengan model kling-3.0. Berikut kode permintaannya, field yang diterima, dan dua klip 5 detik yang kami buat pada 29 Oktober 2026 beserta hasil ukurnya.
Artikel terbaru
- Clapping Cat Meme AI: Buat Hewan Peliharaanmu Bertepuk Tangan dengan Image-to-Video
- Cara menggunakan API Claude dan GPT di DeepSeek Harness
- Alternatif API FLUX Kontext: Edit Gambar dengan GPT Image 2
- Panduan prompt Kling 3.0: struktur, contoh, dan klip asli
- Panduan prompt MiniMax H3: struktur, contoh, dan klip asli