
Ein Bild mit der Seedream 5.0 Pro Layerize API in bearbeitbare Ebenen zerlegen
POST https://api.evolink.ai/v1/images/generations mit model: "doubao-seedream-5.0-pro-layerize" und genau einer Bild-URL. Zurück kommt eine Task-ID, kein Bild — das Modell arbeitet asynchron und braucht etwa 120 Sekunden. Anschließend GET /v1/tasks/{task_id} abfragen, bis status auf completed steht, und die Ebenen aus result_data auslesen.Was Sie zurückbekommen
| Ausgabe | Format | Inhalt |
|---|---|---|
| Basisbild | folgt output_format (Standard jpeg) | Der Hintergrund, hinter allem Abgehobenen rekonstruiert |
| Ebenen 1–16 | immer PNG mit Alphakanal, unabhängig von output_format | Je ein Element, überall sonst transparent |
Bemerkenswert ist das Basisbild. Wenn Layerize eine Überschrift von einem Poster abhebt, bleibt dort kein Loch — was darunter lag, wird rekonstruiert. Genau das unterscheidet dieses Verfahren von einer Segmentierungsmaske, und deshalb landet die Ausgabe ohne Nacharbeit direkt im Design-Tool.
Drei Wege, Ebenen anzusteuern
prompt ist optional, und jeder der drei Wege passt zu einer anderen Aufgabe.
1. Prompt weglassen — automatische Vollzerlegung
{
"model": "doubao-seedream-5.0-pro-layerize",
"image_urls": ["https://example.com/poster.png"],
"quality": "auto",
"output_format": "jpeg"
}Ohne jeden Prompt findet das Modell alle wesentlichen Elemente selbst — Textblöcke, Motive, Dekoration, Hintergrund — und zerlegt jedes in eine eigene Ebene. Das ist der Hauptzweck des Modells; ein komplexes Poster kommt regelmäßig mit zehn oder mehr Ebenen zurück.
"prompt": "" wird stromaufwärts als „der Nutzer hat eine leere Anweisung übergeben" gelesen und verliert damit die automatische Erkennung. Der Request-Body darf den Schlüssel prompt schlicht nicht enthalten.2. Natürliche Sprache — die gewünschten Elemente benennen
{
"model": "doubao-seedream-5.0-pro-layerize",
"prompt": "Trenne den Papagei und den Titeltext heraus",
"image_urls": ["https://example.com/poster.png"],
"quality": "2K"
}Sinnvoll, wenn Sie nur zwei oder drei Elemente brauchen und keine vollständige Zerlegung bezahlen wollen. Die Elemente werden semantisch erkannt, „der Titeltext" genügt also, ohne dass Sie dessen Position kennen müssen.
3. Bbox-Koordinaten — die exakte Region festnageln
{
"model": "doubao-seedream-5.0-pro-layerize",
"prompt": "Titeltext<bbox>179 58 809 197</bbox>, 1 Papagei<bbox>330 274 641 991</bbox>",
"image_urls": ["https://example.com/poster.png"],
"quality": "1.5K"
}<bbox>-Tag nimmt vier Zahlen in normalisierten 0–1000-Koordinaten (keine Pixel), geschrieben als links oben rechts unten. Greifen Sie darauf zurück, wenn natürliche Sprache mehrdeutig wird — zwei ähnliche Produkte im selben Bild oder mehrere Textblöcke, bei denen „die Überschrift" beides meinen könnte.bounding_box.normalized ablesen und dann mit diesen Koordinaten erneut anfragen, um genau die gewünschte Aufteilung zu erhalten.Der asynchrone Ablauf
Schritt 1 — Task abgeben
curl -X POST https://api.evolink.ai/v1/images/generations \
-H "Authorization: Bearer $EVOLINK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "doubao-seedream-5.0-pro-layerize",
"image_urls": ["https://example.com/poster.png"],
"quality": "auto"
}'Die Antwort ist ein Task-Handle, kein Bild:
{
"id": "task-unified-1757165031-seedream5prolayerize",
"object": "image.generation.task",
"model": "doubao-seedream-5.0-pro-layerize",
"status": "pending",
"progress": 0,
"type": "image",
"task_info": { "can_cancel": true, "estimated_time": 120 },
"usage": { "billing_rule": "per_call", "credits_reserved": 39.168 }
}credits_reserved — das ist eine vorab reservierte Schätzung, bemessen auf den ungünstigsten Fall. Abgerechnet wird nach den Bildern, die tatsächlich zurückkommen.Schritt 2 — bis zum Abschluss abfragen
curl https://api.evolink.ai/v1/tasks/task-unified-1757165031-seedream5prolayerize \
-H "Authorization: Bearer $EVOLINK_API_KEY"status durchläuft pending → processing → completed (oder failed). Rechnen Sie mit rund 120 Sekunden; alle 5 Sekunden abzufragen reicht völlig. Wer nicht pollen möchte, übergibt bei der Abgabe eine callback_url — ausschließlich HTTPS, keine internen IPs, ausgelöst nach bestätigter Abrechnung, mit bis zu 3 Wiederholungen nach 1 s / 2 s / 4 s.Schritt 3 — die Ebenen auslesen
result_data trägt Metadaten, mit denen sich die Komposition auf jeder Leinwand rekonstruieren lässt:| Feld | Bedeutung |
|---|---|
z_index | Stapelreihenfolge. 0 ist das Basisbild, Ebenen beginnen bei 1 |
bounding_box.absolute | Position im Pixelkoordinatensystem des Basisbilds |
bounding_box.normalized | Dasselbe Rechteck in 0–1000-Koordinaten |
name | Vom Modell erzeugte Bezeichnung, z. B. „scharlachroter Ara" |
description | Ausführlichere Beschreibung des Elements |
z_index: 0 — ohne name und bounding_box. Nach z_index sortieren und jede Ebene an ihrem absolute-Rechteck einsetzen reproduziert das Original exakt.Die Eingabebeschränkungen sind strenger als bei normaler Generierung
Hier scheitern mehr Anfragen als irgendwo sonst im Ablauf, denn Layerize akzeptiert nicht alles, was die normale Seedream-Generierung annimmt.
| Beschränkung | Wert |
|---|---|
| Anzahl Bilder | Genau 1. Keines oder zwei und mehr ergeben einen Fehler |
| Formate | nur .png, .jpeg, .jpg — webp wird abgelehnt |
| Dateigröße | höchstens 30 MB |
| Gesamtpixel | insgesamt 262.144 bis 36.000.000 — 512×512 ist das kleinste Quadrat, das genügt |
| Seitenverhältnis | zwischen 1:16 und 16:1 |
| URL | muss vom Server direkt abrufbar sein oder einen direkten Download auslösen |
quality ist enger gefasst: Der Ebenenmodus akzeptiert ausschließlich Stufen (auto, 1K, 1.5K, 2K). Ein Seitenverhältnis wie 16:9 oder explizite Pixelmaße wie 2048x2048 führen zu einem Fehler. Bei auto folgt die Ausgabe der Eingabe — unverändert, wenn das Original zwischen 921.600 und 4.624.220 Pixeln liegt, hochgesetzt auf 1K darunter, gedeckelt auf 2K darüber.Abrechnung: Ausgabebilder zählen, nicht Anfragen
Auf EvoLink läuft Layerize 20 % unter dem BytePlus-Listenpreis:
| Position | BytePlus-Liste | EvoLink |
|---|---|---|
| Eingabebild | 0,003 $ | 0,0024 $ |
| Ausgabebild, niedrige Stufe (≤ 2.610.000 px) | 0,0225 $ | 0,018 $ |
| Ausgabebild, hohe Stufe (> 2.610.000 px) | 0,045 $ | 0,036 $ |
1K und 1.5K kosten gleich viel — beide fallen in die niedrige Stufe. Die Stufe wird pro Bild bestimmt, ein 2K-Basisbild wird also hoch abgerechnet, während die kleinen davon abgehobenen Textebenen niedrig eingestuft werden.Zwei durchgerechnete Beispiele:
Vier Stolperfallen
"prompt": ""senden, statt den Schlüssel wegzulassen. Das killt die automatische Erkennung — die stärkste Eigenschaft des Modells.- Erwarten, dass
output_format: "png"die Ebenen beeinflusst. Es steuert nur das Basisbild. Ebenen sind immer PNG mit Alphakanal. - Einen Fehlschlag als Teilerfolg behandeln. Es gibt keinen Teilerfolg. Scheitert eine Ebene, scheitert alles und wird vollständig erstattet — die Retry-Logik sollte also von „alles oder nichts" ausgehen.
- Die Links verfallen lassen. Nach 24 Stunden sind sie weg. Laden Sie im selben Job herunter, in dem Sie pollen.
Häufige Fragen
Wie viele Ebenen bekomme ich?
Zwischen 1 und 16 Ebenen plus das Basisbild, also höchstens 17 Ausgabebilder. Eine bestimmte Anzahl lässt sich nicht anfordern — das Zerlegungsergebnis entscheidet.
Kann ich steuern, welche Elemente zu Ebenen werden?
<bbox>-Tags in normalisierten 0–1000-Koordinaten festnageln.Sind die Ebenen wirklich transparente PNGs?
output_format. Diese Einstellung betrifft nur das Basisbild.Wie lange dauert ein Aufruf?
callback_url.Was passiert, wenn eine Ebene fehlschlägt?
Die gesamte Anfrage scheitert — einen Teilerfolg gibt es nicht — und wird vollständig erstattet.
Funktioniert das mit jedem Bild?
Es braucht ein PNG oder JPEG mit mindestens 262.144 Gesamtpixeln — etwa 512×512 — unter 30 MB, mit einem Seitenverhältnis zwischen 1:16 und 16:1. webp wird abgelehnt, obwohl die normale Generierung es annimmt.


