Seedream 5.0 Pro API: Bilder mit Python generieren
Ein POST mit model Dola-Seedream-5.0-pro legt die Bildaufgabe an. Hier finden Sie den Anfragecode, das Verhalten von Größen und Kennzeichnung aus unseren Läufen und die zwei Bilder vom 29. Oktober 2026.
Auf dieser Seite
- Welche Modell-ID und welche Operationen nutzen
- Der Anfragecode
- Die Größen und Formate unserer Läufe und was zurückkam
- Die Kennzeichnung und wie Sie sie abschalten
- Fehler und Grenzen
- Seedream oder GPT Image 2.5 für die API-Arbeit?
- FAQ
- Welche Modell-ID übergebe ich an die API?
- Warum trägt mein Bild die Kennzeichnung "AI generated"?
- Welche Größen akzeptiert die API?
- Bekomme ich PNG statt JPEG?
- Kann ich mit Seedream ein vorhandenes Bild bearbeiten?
Sie senden einen POST an https://api.omniakey.com/v1/media/tasks, setzen model auf Dola-Seedream-5.0-pro und operation auf generate und fragen dann die Task-ID ab, bis der Status succeeded lautet; danach laden Sie assets[0].url herunter. Standardmäßig trägt das Bild in einer Ecke die Kennzeichnung "AI generated". Am 29. Oktober 2026 haben wir diese Anfrage und eine Bearbeitung mit 1024x1024 ausgeführt, und beide Dateien kamen als PNG mit 1024×1024 zurück.
Im Folgenden finden Sie die ID und die beiden Operationen, den unverändert ausgeführten Anfragecode, eine Liste der angefragten Größen neben den Pixelmaßen aus jeder Datei, die Kennzeichnung, die Einstellung, die sie abschaltet (nicht ausgeführt), und die beiden Fehler, die einen Create-Aufruf stoppen. Beide Bilder stammen von jenem Tag.
Welche Modell-ID und welche Operationen nutzen
Verwenden Sie Dola-Seedream-5.0-pro, die ID auf der Modellseite Seedream 5.0 Pro (geprüft am 29. Oktober 2026). Die Seite nennt zwei Operationen: Text zu Bild und Bildbearbeitung. Sie sagt außerdem, dass Generieren und Bearbeiten denselben Preis haben und dass weder die gewählte Größe noch mitgeschickte Referenzbilder ihn erhöhen. Die aktuellen Preise stehen auf der Preisseite.
Diese Felder bestimmen den Aufbau einer Anfrage, noch vor dem Prompt.
model:Dola-Seedream-5.0-prooperation:generateodereditparameters.size:1K,1.5K,2Koderwidthxheightmit einemxoutput_format:pngoderjpeg,jpegist der Standard
Die Felder für Größe und Format stehen in parameters. Die Ausgabe endet bei 2K: Die Modellseite (geprüft am 29. Oktober 2026) nennt keine 4K-Größe. Seedream erwartet ein kleines x zwischen den Seiten, Qwen und Wan dagegen ein Sternchen; halten Sie die beiden Formen in einem Client getrennt, der beide aufruft. Unsere Läufe nutzten die Form widthxheight mit 1024x1024 und PNG, die drei Stufen blieben außen vor.
ByteDance verkauft dasselbe Modell bei BytePlus ModelArk unter einer anderen ID, dola-seedream-5-0-pro-260628. Diese gehört zu BytePlus, eine Anfrage an OmniaKey braucht daher die ID oben.
Der Anfragecode
Das Skript ist das, das wir am 29. Oktober 2026 unverändert ausgeführt haben: zwei Hilfsfunktionen, ein Generate-Aufruf, ein Edit-Aufruf, nur die Python-Standardbibliothek. Es liest Ihren Schlüssel aus OMNIAKEY_API_KEY und schreibt jedes PNG in den Ordner, aus dem Sie es starten. Die Dokumentation der Bild-API beschreibt dieselben drei Schritte.
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)
Die drei Schritte stecken in run_task: Aufgabe mit einem frischen Idempotenzschlüssel anlegen, die Task-URL abfragen, bis der Status queued und processing verlässt, dann die erste Asset-URL herunterladen. Der Create-Aufruf antwortet mit HTTP 202 und einer ID, die mit task_ beginnt, der Status startet als queued (Dokumentation, geprüft am 29. Oktober 2026). Eine Aufgabe, die auf failed endet, wirft den Fehler aus der Antwort, sodass der Grund in Ihrem Terminal erscheint.
Die Größen und Formate unserer Läufe und was zurückkam
Beide Läufe fragten dieselbe Größenzeichenfolge und dasselbe Format an, und beide Dateien kamen als PNG mit 1024×1024 zurück.
- Generieren — Angefragte Größe:
1024x1024; Pixel in der Datei: 1024×1024; Format: PNG; Datum: 2026-10-29 - Bearbeiten — Angefragte Größe:
1024x1024; Pixel in der Datei: 1024×1024; Format: PNG; Datum: 2026-10-29
Lesen Sie die Pixelgröße aus der Datei, die Sie heruntergeladen haben. Die Größenzeichenfolge ist das, was Sie angefragt haben; die Datei ist das, was Sie bekommen haben. Wir haben jedes PNG geöffnet, Breite und Höhe gemessen und es neben dem Prompt betrachtet, der es erzeugt hat.
Interessanter ist der Bearbeitungslauf. Wir schickten ein JPEG mit 1024×683 von einem Cafénster und eine einzige Anweisung, und zurück kam ein quadratisches Bild. Das Fahrrad ist nun dunkel, Tisch, Tasse und Pflanze sind weiter im Bild, und weil die Ausgabe quadratisch ist, sind Fenster und Tischkante anders gefasst als in der Vorlage.
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.

Die Kennzeichnung und wie Sie sie abschalten
Laut Modellseite (geprüft am 29. Oktober 2026) trägt jede Ausgabe die Kennzeichnung "AI generated" in einer Ecke, solange Sie watermark in parameters nicht auf false setzen. Die Seite nennt die untere rechte Ecke, und dort sitzt sie auch in der Standardausgabe unten: blass und klein. Lassen Sie watermark aus der Anfrage weg, bekommen Sie die Kennzeichnung.
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.
Hier ist diese Ausgabe, erzeugt mit den Standardeinstellungen.

Die Einstellung mit watermark false wurde nicht ausgeführt: Das Kostenlimit pro Lauf des Blog-Werkzeugs hat den Aufruf vor dem Senden gestoppt.
Fehler und Grenzen
Zwei Header entscheiden, ob ein Create-Aufruf durchgeht: das Bearer-Token und ein Idempotency-Key.
| Was Sie senden | Was zurückkommt |
|---|---|
| Create-Aufruf ohne Idempotenzschlüssel | 400 missing_idempotency_key |
| Derselbe Schlüssel und derselbe Body, erneut | 200 mit der vorhandenen Aufgabe, nichts neu berechnet |
| Derselbe Schlüssel, geänderter Body | 409 idempotency_key_reused |
Derselbe Schlüssel mit demselben Body ist der gewünschte Wiederholungsversuch: Die vorhandene Aufgabe kommt zurück, und nichts wird neu berechnet. Derselbe Schlüssel mit geändertem Prompt oder geänderter Größe liefert 409, legen Sie also für jede neue Anfrage einen neuen Schlüssel an. Der Schlüssel darf bis zu 255 Zeichen lang sein (Dokumentation, geprüft am 29. Oktober 2026).
Halten Sie den Body der Anfrage unter 1 MiB, das Base64-Bild eingeschlossen, und verkleinern Sie ein großes Ausgangsfoto, bevor Sie es senden. Wenn eine Aufgabe gelingt, ist die Download-URL in der Antwort ein signierter Link, der laut Dokumentation etwa eine Stunde gilt; holen Sie die Datei also sofort oder fragen Sie die Aufgabe erneut nach einem frischen Link ab.
Ein Header hat uns am 29. Oktober 2026 überrascht. Ein POST mit dem Standard-User-Agent von Pythons urllib kam als HTTP 403 mit dem Body error code: 1010 von Cloudflare zurück. Unser eigener User-Agent-Header erreichte die API, und es wurde nichts berechnet.
User-Agent-Header, etwa omniakey-example/1. Der Standard von Python bekam am 29. Oktober 2026 den 403 oben.Seedream oder GPT Image 2.5 für die API-Arbeit?
Die Aufgabe entscheidet. In unserer Bearbeitung änderte Seedream 5.0 Pro das eine Objekt, das wir nannten, das Fahrrad, und behielt den größten Teil der Szene, allerdings änderte sich der Ausschnitt. Produktfotos wurden hier nicht getestet. Der Aufruf ist ein Body mit operation auf generate oder edit, und die Quelle kann eine öffentliche URL oder Inline-Base64 sein (Dokumentation, geprüft am 29. Oktober 2026).
Für ein Ergebnis mit demselben Prompt neben GPT Image 2 zeigt der Vergleich von Seedream 5.0 Pro und GPT Image 2 beide Ausgaben zu einem Prompt. Für dieselbe Form aus Generieren und Bearbeiten auf einem anderen Modell geht das GPT Image 2.5 API-Tutorial die Anfrage und die Größen durch. Führen Sie Ihren schwierigsten Prompt auf dem Kandidaten aus, bevor Sie eine Pipeline umstellen, und prüfen Sie danach die Preise.
FAQ
Welche Modell-ID übergebe ich an die API?
Dola-Seedream-5.0-pro, die ID in der Beispielanfrage der Modellseite (geprüft am 29. Oktober 2026). Das dola-seedream-5-0-pro-260628 von ByteDance gehört zu BytePlus ModelArk, und OmniaKey nimmt die ID oben.
Warum trägt mein Bild die Kennzeichnung "AI generated"?
Jede Ausgabe von Seedream 5.0 Pro trägt die Kennzeichnung in der unteren rechten Ecke, solange Sie watermark nicht auf false setzen, laut Modellseite (geprüft am 29. Oktober 2026). Unser Lauf mit Standardeinstellungen am 29. Oktober 2026 trug sie.
Welche Größen akzeptiert die API?
Die Stufen 1K, 1.5K und 2K oder die Form widthxheight mit einem kleinen x zwischen den Seiten (Modellseite, geprüft am 29. Oktober 2026). Die Ausgabe endet bei 2K, und beide Läufe fragten 1024x1024 an.
Bekomme ich PNG statt JPEG?
Ja. output_format nimmt png oder jpeg, und JPEG ist der Standard (Dokumentation, geprüft am 29. Oktober 2026). In beiden Läufen nutzten wir PNG und bekamen PNG zurück.
Kann ich mit Seedream ein vorhandenes Bild bearbeiten?
Ja: Senden Sie operation auf edit mit dem Prompt und dem Ausgangsbild, entweder als Inline-Base64 mit MIME-Typ oder als öffentliche URL. Die Bearbeitung des Cafénsters steht im Abschnitt zu den Größen.
Modelle in diesem Artikel
Verwandte Artikel
Seedream 5.0 Pro vs GPT Image 2: Test mit gleichem Prompt und Preis
Sechs Aufgaben, dieselben Prompts, drei Modelle: was jedes erzeugte und was es kostete.
GPT Image 2.5 API: Bilder mit Python generieren und bearbeiten
Ein POST legt den Task an, ein GET liest das Ergebnis. Hier kommen der Request-Code, die am 29. Oktober 2026 getesteten Größen und eine Bearbeitung mit Vorher und Nachher.
Kling 3.0 API: Request-Code für Text zu Video und echte Clips
Eine Text-zu-Video-Aufgabe ist ein einzelner POST mit dem Modell kling-3.0. Hier stehen der Request-Code, die Felder und zwei 5-Sekunden-Clips, die wir am 29. Oktober 2026 erstellt und gemessen haben.