Seedream 5.5 Is Here: Edit in Rounds, Transparent PNGs and Layers

Seedream 5.5 tested: 12 edit rounds, transparent PNGs and layer splits for e-commerce, games and agencies, with measured costs and API code.

Seedream 5.5 launch: an art director holds layered transparent cut-outs up to a studio window

ByteDance released Seedream 5.5 on 9 November 2026, and it went live on Segmind the same week. I spent a morning putting it through the jobs our customers actually run: product colourways, game assets and multilingual campaign posters. That came to 36 billed generations for $1.70 in total. Every image in this post came out of those runs, and every price is what the API billed, read from the response, not estimated.

The short version: Seedream 5.5 is an editing model first. You can change one thing in an image, then another, then another, and the rest of the frame stays put. It also returns real transparent PNGs, and its sibling, Seedream 5.5 Layer Decomposition, takes a flat image apart into named transparent layers. It is also cheap: $0.021 for an image at 1K or 1.5K and $0.037 at 2K. Searches for "seedream" on Google Trends more than doubled in the three days after launch, so I wanted real numbers out before the guesswork sets in.

What I found, in six lines
1. Twelve rounds of edits on one product shot: zero background pixels moved by more than 32 levels.
2. One catch: the whole frame darkened by about half a level per round, steadily. Over long chains, that adds up.
3. Transparent PNGs are clean on solid objects and soft effects. Glass came back opaque both times I asked for see-through.
4. Spanish and Japanese copy swaps were exact. Hindi got the headline right and two letters wrong in the small line.
5. Layer Decomposition split a game scene into 8 named layers plus a clean base for $0.199.
6. Every bill matched the published price list to the sixth decimal.

What is new in Seedream 5.5

ByteDance built the release around three upgrades, and they map neatly to three kinds of buyers.

  • Stable multi-round editing. ByteDance says Seedream 5.5 preserves unedited regions at the pixel level, and it demoed 100 edits in a row on one image. That is the feature e-commerce and agency teams have been asking for, because it means a hero shot can become ten variants without ten reshoots.
  • Native RGBA output. Set background to transparent and you get a PNG with a real alpha channel, including partial transparency. No separate background removal step. This is the gaming and motion design feature.
  • Better realism and small text. ByteDance reports a 0.4% severe and 1.7% minor text corruption rate on Chinese and English, including dense small type. Those are the maker's own figures, so I tested other scripts myself below.

On Segmind, there is a fourth piece: Seedream 5.5 Layer Decomposition, a separate endpoint that takes one finished image and returns a clean base plus each element as a transparent PNG, with a name, a description and a bounding box. Pair it with the main model and you can generate, edit, cut out and take apart, all on one API key.

The input surface is small. prompt, up to 10 reference_images, size (1K, 1.5K or 2K), aspect_ratio (auto plus eight ratios from 1:1 to 21:9), background, output_format and watermark. One image per request. Here are the pixel sizes I actually got back:

Size and ratioPixels returnedPrice
1K, 1:11024 x 1024$0.021164
1.5K, 1:11536 x 1536$0.021164
1.5K, 3:41296 x 1728$0.021164
1.5K, 16:91920 x 1080$0.021164
2K, 4:32304 x 1728$0.037037
2K, 2:31664 x 2496$0.037037
2K, 16:92560 x 1440$0.037037
2K, 21:93024 x 1296$0.037037

1K and 1.5K cost the same, and 1.5K gives you more than twice the pixels. I see no reason to ever pick 1K. One more detail for developers: an edit with aspect_ratio on auto came back a few pixels larger than its source (2304 x 1728 in, 2368 x 1776 out), then held that size for every later round. If you diff or composite rounds, resize round 1 first.

Seedream 5.5 pricing on Segmind

The price list has three lines, and Layer Decomposition shares it:

ChargePrice
Each output image, 1K or 1.5K (up to 2.61 MP)$0.021164
Each output image, 2K (over 2.61 MP)$0.037037
Each input or reference image$0.0084656

Transparent output costs nothing extra. Every reference you send is billed, which matters for edit chains, because each round sends the previous result back as a reference. Here is what my jobs actually cost, straight from the cost field the API returned:

JobBilledTime
1.5K image or transparent asset from a prompt$0.02116418 to 29 s
2K image from a prompt$0.03703720 to 31 s
1.5K edit, one reference (a poster translation)$0.029629619 to 24 s
2K edit, one reference (one colourway round)$0.045502625 to 30 s
2K blend of three references$0.0624338about 30 s
Layer split: 2K photo into a base and 2 layers$0.087830624 s
Layer split: 1.5K scene into a base and 8 layers$0.198941636 to 39 s
A transparent request with jpeg output (rejected)$0.00instant

Times are the model's own inference time; the average across my single-image runs was about 24 seconds. For context, Seedream 5.0 Pro lists $0.107 per 2K image and a 30-day average wait of about 87 seconds, so 5.5 is roughly a third of the price and much faster. 5.0 Pro charges less per extra reference ($0.0036), which only matters if you send many.

E-commerce: one product shot, every colourway

The e-commerce job is simple to describe and hard to do well: shoot one product, then show it in every colour and material you sell, on the same backdrop, with the same light. Retouchers bill by the variant. I wanted to see whether Seedream 5.5 could hold a product steady through a chain of edits.

Round 1: the master shot

Prompt used Studio product photograph of a single minimalist low-top sneaker in off-white full-grain leather with a natural gum rubber sole, waxed cotton laces and a small tan leather heel tab, three-quarter side view, standing on a pale concrete plinth against a warm light-grey seamless backdrop. Soft key light from the upper left, gentle contact shadow, crisp stitching and leather grain visible. No logos or text anywhere.

Parameters size: 2K  |  aspect_ratio: 4:3  |  background: opaque  |  cost: $0.037
Seedream 5.5 output: studio product shot of a leather sneaker for e-commerce example

Round 1. 2304 x 1728, 22 seconds. Leather grain and stitching hold up at full size.

It is a clean catalogue frame. The one miss: I asked for a gum sole and got a white midsole with a thin gum edge. That is a prompt-reading slip, not a quality one.

Rounds 2 to 4: material, laces, then lettering

Each round sends the previous image as the only reference, names one change, and lists everything that must stay. The model keeps no session, so that list is the only memory it has.

Prompt used Change only the upper of the sneaker from off-white leather to sage-green suede with a soft brushed nap. Keep the sneaker's shape, stitching, waxed cotton laces, gum rubber sole and tan leather heel tab, the pale concrete plinth, the grey backdrop, the soft light from the upper left and the contact shadow exactly as they are in the reference.

Parameters size: 2K  |  aspect_ratio: auto  |  reference_images: [round 1]  |  cost: $0.0455 per round

Round 2: suede upper

Seedream 5.5 output: sneaker recoloured to sage suede example

Round 3: orange laces

Seedream 5.5 output: sneaker laces changed to burnt orange example

Round 4: "NORTH 04" on the heel

Seedream 5.5 output: heel tab lettering added to sneaker example

Rounds 3 and 4 used the same pattern: "Change only the laces to burnt-orange waxed cotton" and "Add small debossed lettering reading NORTH 04 on the tan leather heel tab".

I measured every round against the one before it, counting a pixel as changed if any colour channel moved by more than 32 of 255 levels. The suede swap changed 9.9% of the frame, which is about the area of the shoe's upper. The lace swap changed 1.03%. The lettering changed 0.49%. Here is the lace round as a change map: pink is what moved.

Seedream 5.5 output: change map of the lace edit round example

Round 2 to round 3. Only the laces moved. The plinth, backdrop and shadow are untouched.

The lettering round taught me something. The text is spelled right and debossed in the right tone, but there was no room on a thin pull loop, so the model quietly redesigned the loop into a wide heel counter to make space. If the product is real, that is a change your merchandiser will catch. Prompt for text only where the surface already exists.

Round 3: pull loop

Seedream 5.5 output: heel tab before and after lettering edit example

Left: the original pull loop. Right: the model widened it into a heel counter to fit "NORTH 04".

Branching from the master

Chains are not the only way to work. For a catalogue, I would branch every colourway from the master instead, so no variant inherits another variant's drift. One edit from round 1 gave me the black version:

Master

Seedream 5.5 output: master sneaker shot example

Branch: black leather

Seedream 5.5 output: black leather colourway of the sneaker example

One round from the master, $0.0455. 12.5% of pixels changed, nearly all of them on the shoe.

How far can you chain? I ran 12 rounds

ByteDance claims 100 rounds. I did not have the patience for that, but I took the chain to round 12 by flipping the laces between navy and orange eight more times, and measured the backdrop and plinth (everything outside the shoe) against round 2 after each round.

RoundBackground pixels moved over 32 levelsAverage shift vs round 2
30.00%0.5 levels
40.00%1.0
60.00%2.0
80.00%3.1
100.00%4.1
120.00%5.1

Two findings. First, the pixel-level preservation is real: no background pixel ever made a jump. Second, the whole frame darkened by almost exactly half a level per round, in all three channels, like a slow exposure creep. At round 12 you cannot see it next to round 4. At that rate, though, round 100 would be about 50 levels darker, and you would see that.

Round 4

Seedream 5.5 output: sneaker edit round 4 example

Round 11: navy laces

Seedream 5.5 output: navy laces in edit round 11 example

Round 12

Seedream 5.5 output: sneaker edit round 12 example

Eight lace swaps later, round 12 is indistinguishable from round 4 by eye.

So for long chains: branch from the master where you can, add the original image as a second reference (the model page recommends this too), and colour-match the final round to round 1 in post if the chain runs past a few dozen edits.

Transparent cut-outs, generated that way

Prompt used Product photograph of a rolltop backpack in rust-orange waxed canvas with dark brown leather straps, brass buckles and a front zip pocket, front three-quarter view, soft studio light. Isolated on a fully transparent background with clean cut-out edges and no shadow. No text or logos.

Parameters size: 1.5K  |  aspect_ratio: 3:4  |  background: transparent  |  output_format: png  |  cost: $0.021

Backpack

Seedream 5.5 output: transparent PNG backpack cut-out example

Perfume, asked for see-through glass

Seedream 5.5 output: transparent PNG perfume bottle cut-out example

Shown on a checkerboard so the alpha is visible. Both are RGBA PNGs at 1296 x 1728.

The backpack is 54.7% fully clear, with only 0.5% of pixels partly transparent: a clean, hard edge you can drop on any page. The perfume is where it falls short. I asked for the empty glass to be see-through, and it came back fully opaque, with the glass painted in. The landing page tests found the same with a juice bottle and tinted lenses. For glass and liquids, plan to composite in post.

From cut-outs to a lifestyle scene

Next I asked the model to move the master sneaker into a lifestyle setting. It did, but it also turned one shoe into a pair and changed the camera angle. Fine for a lifestyle image, wrong if you needed the exact same render. Then I used Layer Decomposition to pull the product back out of that photo:

Prompt used Separate the sneaker and the folded grey wool blanket.

Parameters model: seedream-5.5-layer-decomposition  |  max_images: 3  |  size: auto  |  cost: $0.0878

Photo

Seedream 5.5 output: lifestyle sneaker photo example

Base layer

Seedream 5.5 output: base layer with sneakers removed example

Sneaker layer

Seedream 5.5 output: transparent sneaker layer example

A 2K base and two layers in 24 seconds. The floor under the shoes is filled in convincingly.

The base is the room with the shoes and blanket gone, floorboards and light filled in. That empty room is a reusable set. One oddity worth knowing if you parse the response: I wrote the prompt in English, and the layer names and descriptions came back in Chinese. The other two splits I ran returned English.

Then I closed the loop with a three-reference blend: the backpack cut-out, the sneaker layer, and the empty room.

Ref 1

Reference 1: backpack cut-out

Ref 2

Reference 2: sneaker layer

Ref 3

Reference 3: empty room base layer

Inputs to reference_images[], in the order the prompt names them.

Prompt used Place the rust-orange rolltop backpack from the first reference leaning against the wall on the oak floor of the room in the third reference, and set the pair of off-white sneakers from the second reference on the floor in front of it, toes angled toward the camera. Match the third reference's warm morning window light: long soft shadows fall to the right from both products onto the floorboards. Keep the backpack's waxed canvas, leather straps and brass buckles and the sneakers' leather, laces, gum soles and tan heel tabs exactly as in their references. Keep the room, the window and the floorboards from the third reference.

Parameters size: 2K  |  aspect_ratio: 4:3  |  references: 3  |  cost: $0.0624
Seedream 5.5 output: two products blended into a lifestyle room scene example

Both products sit on the floor with shadows that match the window light. Brass buckles and straps survived intact.

Six cents for a styled flat-lay from catalogue assets. The shadows fall the right way and the backpack details held. This is the workflow I would hand an e-commerce team: generate or shoot a master, cut it out, and stage it anywhere.

Gaming: transparent assets and scenes you can take apart

Game teams need lots of small assets with alpha: items, icons, effects, characters in poses. Background removal on painted art is where hair, glow and smoke get butchered. Native RGBA skips it.

Prompt used A game spell visual effect: a swirling ball of blue and white arcane energy with crackling lightning tendrils and glowing sparks flying outward, bright core fading into soft translucent wisps at the edges. Isolated on a fully transparent background: the glow and wisps are partly transparent so any background shows through them. No text.

Parameters size: 1K  |  aspect_ratio: 1:1  |  background: transparent  |  cost: $0.021 each

Health potion

Seedream 5.5 output: transparent game potion icon example

Treasure chest

Seedream 5.5 output: transparent game treasure chest icon example

Spell effect

Seedream 5.5 output: transparent spell effect with soft alpha example

Three item prompts in the same painterly style, each one call.

The spell effect is the impressive one: 30.5% of its pixels are partly transparent, so the glow genuinely blends over whatever sits behind it. Most cut-out tools flatten that into a hard halo. The chest has clean edges around every coin. The potion repeats the glass problem: the flask is opaque, though for a stylised icon that reads fine.

One character, edited and re-posed

Prompt used Full-body character concept art for a stylised fantasy action game: a young ranger with short silver hair and a scar across one eyebrow, wearing a hooded forest-green cloak over brown leather armour, a quiver on the back, holding a carved wooden longbow in the left hand, standing in a confident three-quarter pose. Clean painterly 3D-render style, even soft studio lighting, plain light warm-grey background, the whole figure in frame from head to boots. No text.

Parameters size: 2K  |  aspect_ratio: 2:3  |  cost: $0.037

Base

Seedream 5.5 output: fantasy ranger character concept example

Edit: crimson cloak

Seedream 5.5 output: ranger with recoloured cloak example

Edit: crystal staff

Seedream 5.5 output: ranger holding a staff instead of a bow example

New pose, transparent

Seedream 5.5 output: ranger kneeling with bow on transparent background example

Edits at $0.0455 each. The kneeling pose was a 1.5K transparent edit at $0.0296.

The cloak recolour changed 5.6% of pixels and the weapon swap 3.4%. Face, hair, armour and boots match across all three. The fourth is the useful one for a game pipeline: the same character, kneeling and drawing the bow, delivered on a transparent background in one call. The face, cloak and armour carried over from the reference.

Key art into parallax layers

Prompt used A 2D side-scrolling platformer game scene with clearly separated depth planes: a peach and lavender dusk sky with a large pale sun, a far range of blue mountains, a mid layer of dark pine forest, a foreground of mossy stone platforms with a wooden rope bridge, a small fox hero in a red scarf mid-jump over the gap, and three glowing amber fireflies. Across the top in bold chunky cream letters with a dark outline, the game title reads "EMBERWOOD". Flat vector style with clean edges and generous spacing between elements.

Parameters size: 1.5K  |  aspect_ratio: 16:9  |  cost: $0.021
Seedream 5.5 output: 2D platformer game key art example

The title is spelled right. It added a hanging wooden sign behind it and more than three fireflies, neither of which I asked for.

Then I sent it to Layer Decomposition with an empty prompt, max_images 10 and text recognition on.

Base layer (z-index 0)

Seedream 5.5 output: inpainted background layer of game scene example

The base: sky, sun, mountains and forest, with the bridge, platforms, fox and sign removed and the gaps painted in.

Seedream 5.5 output: eight transparent layers split from game key art example

The 8 layers it returned: sign, bridge, left cliff, right ruins, floating platform, fox, torch and fireflies.

Eight layers plus a base in 39 seconds for $0.199, every one named sensibly ("Leaping orange-red fox character", "Wooden torch on left platform"). The base is the real prize for parallax: a clean, filled background plate. Two things to know before you build on it:

  • Small layers come back upscaled. The torch occupies a 256 x 256 box in the scene but arrives as a 1024 x 1024 PNG. Every layer I got was at least about one megapixel. Resize each layer to its bounding_box before you place it.
  • Rebuilding by bounding box is close, not exact. When I stacked every layer back at its box, 9.4% of pixels differed from the original. The right-hand ruins came back noticeably smaller. Treat the layers as assets, not as a lossless copy of the image.

The text recognition did not pick up "EMBERWOOD", because the model classed it as part of the wooden sign. That matches the model page's caveat that not every text layer qualifies.

Here is the payoff: the base plate, three platform layers, and the transparent assets from earlier, composited in about 15 lines of Pillow with no masking.

Seedream 5.5 output: game scene composited from transparent assets and layers example

Base plate plus three platform layers from the split, with the ranger, chest, potion and spell effect from separate calls. Zero background removal.

Agencies: one campaign, every market and format

Agency work is multiplication: one approved key visual becomes a dozen sizes in a handful of languages, and every version needs the copy to be exactly right. That is where text rendering and edit stability matter together.

Prompt used A print campaign poster for a specialty coffee brand. A tall glass of iced coffee with cream swirling into it sits on a terracotta tile, monsoon rain streaking down a window behind it, deep teal and burnt orange palette. Headline at the top in a bold cream serif: "Brewed for the Monsoon". Below it in smaller cream sans-serif: "Cold brew, slow-steeped for 18 hours". At the bottom in a small orange pill-shaped button: "Order by 1 December". At the bottom right corner the brand wordmark in cream: "KAAPI & CO.". Clean editorial layout with generous margins. No other text.

Parameters size: 1.5K  |  aspect_ratio: 3:4  |  cost: $0.021

All four lines came back exact on the first try, ampersand included. Then I localised it with one edit each, swapping only the copy and listing everything to keep.

Prompt used Translate only the poster copy into Japanese: the headline now reads "モンスーンのための一杯", the line below reads "18時間かけてじっくり抽出したコールドブリュー" and the button reads "12月1日までにご注文を". Keep the iced coffee glass, the cream swirl, the terracotta tile, the rainy window, the teal and burnt orange palette, the fonts, colours, sizes and positions of every text line, and the wordmark "KAAPI & CO." exactly as they are in the reference.

Parameters size: 1.5K  |  aspect_ratio: auto  |  reference_images: [English poster]  |  cost: $0.0296 per language

English (original)

Seedream 5.5 output: English coffee campaign poster example

Spanish

Seedream 5.5 output: Spanish localised poster example

Japanese

Seedream 5.5 output: Japanese localised poster example

Hindi

Seedream 5.5 output: Hindi localised poster example

Each translation changed 4.4% to 5.2% of the frame: the text, and nothing else that matters.

I read every line glyph by glyph. Spanish: exact, accents included. Japanese: exact, including the small two-line subhead. Hindi is the honest result. The headline "मानसून के लिए बनी" and the button "1 दिसंबर तक ऑर्डर करें" are perfect. The small subhead has two errors: it wrote चंटे where I asked for घंटे (hours), and added a dot under the ड in कोल्ड. A Hindi reader would spot the first one immediately.

Hindi detail

Seedream 5.5 output: Hindi poster text detail example

Headline and button correct. The subhead misspells घंटे as चंटे.

That is still a big step up for Devanagari. In one of our earlier tests, Seedream 5.0 Pro rendered a Hindi sign in Arabic letterforms. But the rule stands: have a native speaker proof every Indic line before it ships, especially small type.

Re-laying the poster for a web banner

Prompt used Re-lay this poster as a 16:9 web banner. Put the iced coffee glass on the terracotta tile on the right half with the rainy window behind it, and set the copy on the left half: the headline "Brewed for the Monsoon", below it "Cold brew, slow-steeped for 18 hours", then the orange pill button "Order by 1 December", and the wordmark "KAAPI & CO." in the bottom left corner. Keep the same fonts, colours, palette and photographic style as the reference. No other text.

Parameters size: 2K  |  aspect_ratio: 16:9  |  reference_images: [English poster]  |  cost: $0.0455
Seedream 5.5 output: poster re-laid as a 16:9 web banner example

2560 x 1440. Same type, same palette, all four lines exact, the scene rebuilt for the wider frame.

This is the one that would save an agency real hours. The copy is exact, the type styles carried over, and the product is re-staged for the wider frame rather than stretched.

Taking the poster apart for the design team

Last, I ran the original poster through Layer Decomposition with text recognition on, the way you would to hand an editable file to a designer.

Base layer

Seedream 5.5 output: poster base layer with text removed example

Returned layers

Seedream 5.5 output: transparent layers split from campaign poster example

A base and 8 layers for $0.199: headline, subhead, glass, tray, napkin, copper jugs, button and wordmark.

LayerText it readClosest fontColour
HeadlineBrewed for / the MonsoonBona Nova, bold#F7EEDC
SubheadCold brew, slow-steeped / for 18 hoursTikTok Sans#FDF3DC
WordmarkKAAPI & CO.TikTok Sans#F8EDD7
Buttonnot returnednot returnednot returned

Three of four text blocks came back as structured text with a font match and a hex colour, which is enough to rebuild them as live type. The button did not: it was returned as an image layer only, and its text also stayed baked into the base. If you rebuild the poster, paint that spot out of the base yourself.

What did not work

  • See-through glass. Two requests for transparent glass, two opaque bottles. Soft effects like glow and smoke do get partial alpha.
  • Slow darkening over long edit chains, about half a level per round in my test.
  • Small Devanagari text. Two errors in one line, even though the large Hindi text was perfect.
  • Edits that need room. Asking for lettering on a thin pull loop made the model redesign the loop.
  • Moves change more than you asked. Moving one sneaker into a new scene produced a pair at a new angle.
  • Layer rebuilds drift. Layers placed at their bounding boxes differed from the original by 9.4% of pixels in the game scene.

None of these stopped a use case. They are the places to put a human check.

Seedream 5.5 API: three snippets

Everything above ran through one Segmind API key. Use /v1 when you want the image back in the response, and /v2 when you want a hosted image URL, which is exactly what an edit chain needs to pass into the next round.

1. A transparent asset, synchronous

import os, requests

r = requests.post(
    "https://api.segmind.com/v1/seedream-5.5",
    headers={"x-api-key": os.environ["SEGMIND_API_KEY"]},
    json={
        "prompt": "A die-cut vinyl sticker of a grinning cartoon mango wearing headphones, "
                  "bold black outlines, thick white border. Isolated on a fully transparent "
                  "background with clean cut-out edges. No text.",
        "size": "1.5K",            # same price as 1K, twice the pixels
        "aspect_ratio": "1:1",
        "background": "transparent",
        "output_format": "png",    # jpeg + transparent is rejected, unbilled
    },
    timeout=180,
)
r.raise_for_status()
open("sticker.png", "wb").write(r.content)
print("billed", r.headers.get("x-cost"))   # e.g. 0.021164

The response is the PNG itself, and the x-cost header carries what that call billed. A live 1K run of this same call took 23.5 seconds and billed $0.021164; 1.5K bills the same.

2. Edit in rounds with /v2

import os, time, requests

API = "https://api.segmind.com/v2"
H = {"x-api-key": os.environ["SEGMIND_API_KEY"]}

def run(payload):
    rid = requests.post(f"{API}/seedream-5.5", headers=H, json=payload).json()["request_id"]
    while True:
        s = requests.get(f"{API}/requests/{rid}/status", headers=H).json()
        if s["status"] in ("COMPLETED", "FAILED"):
            break
        time.sleep(3)
    res = requests.get(f"{API}/requests/{rid}", headers=H).json()
    if s["status"] == "FAILED":
        raise RuntimeError(res.get("error"))
    return res["output"], s["metrics"]["cost"]       # hosted image URL, exact cost

KEEP = ("Keep the sneaker's shape, stitching, sole, heel tab, the plinth, the backdrop, "
        "the light and the shadow exactly as they are in the reference.")
master, cost = run({"prompt": "Studio product photograph of a minimalist off-white leather "
                              "sneaker on a pale concrete plinth. No logos or text.",
                    "size": "2K", "aspect_ratio": "4:3", "background": "opaque"})

edits = ["Change only the upper to sage-green suede.",
         "Change only the laces to burnt-orange waxed cotton."]
current = master
for change in edits:
    current, c = run({"prompt": f"{change} {KEEP}",
                      "reference_images": [current, master],   # original anchors long chains
                      "size": "2K", "aspect_ratio": "auto"})
    cost += c
print(current, round(cost, 4))

Sending the master as a second reference adds $0.0085 a round. On long chains it is worth it to anchor identity and fight the slow drift I measured.

3. Split an image into layers and rebuild it

import io, requests
from PIL import Image

# reuse run()-style polling, but against the layer endpoint
rid = requests.post(f"{API}/seedream-5.5-layer-decomposition", headers=H, json={
    "image": "https://example.com/key-art.png",
    "prompt": "",              # empty: the model finds every major element
    "max_images": 10,          # base included; each image is billed
    "text_recognition": True,
    "size": "auto",
}).json()["request_id"]
# ... poll /requests/{rid}/status until COMPLETED, then:
layers = requests.get(f"{API}/requests/{rid}", headers=H).json()["output"]

layers.sort(key=lambda l: l["z_index"])
canvas = Image.open(io.BytesIO(requests.get(layers[0]["url"]).content)).convert("RGBA")
for l in layers[1:]:
    x1, y1, x2, y2 = l["bounding_box"]["absolute"]
    img = Image.open(io.BytesIO(requests.get(l["url"]).content)).convert("RGBA")
    img = img.resize((x2 - x1, y2 - y1))     # small layers arrive upscaled to ~1 MP
    canvas.alpha_composite(img, (x1, y1))
    if "text_recognition" in l:
        print(l["name"], "->", l["text_recognition"]["text"])
canvas.save("rebuilt.png")

The output is a list: index 0 is the opaque base, and every other entry has url, name, description, z_index and a bounding_box in both absolute pixels and a 0 to 1000 scale. Text layers add text_recognition, with per-run font, colour and style.

Seedream 5.5 FAQ

What is Seedream 5.5?

Seedream 5.5 is ByteDance's image generation and editing model, released on 9 November 2026. It takes a prompt and up to 10 reference images and returns one image at 1K, 1.5K or 2K, with optional transparent backgrounds. Its headline feature is editing in rounds while the rest of the image stays stable.

How much does Seedream 5.5 cost?

On Segmind, Seedream 5.5 costs $0.021164 per image at 1K or 1.5K and $0.037037 at 2K, plus $0.0084656 per reference image. A 2K edit with one reference bills $0.0455. Transparent output is free. In my 36 billed runs, every charge matched that list exactly.

Does Seedream 5.5 really keep images stable across edits?

In my 12-round test, no background pixel moved by more than 32 levels, and single-object edits touched 0.49% to 1.05% of the frame. The whole image did darken by about half a level per round, so branch variants from the master and anchor long chains with the original image.

Can Seedream 5.5 make transparent PNGs?

Yes. Set background to transparent and output_format to png. Solid objects get clean edges and soft effects get real partial alpha (30.5% of pixels on my spell effect). Glass came back opaque both times I asked for it to be see-through. A jpeg request with a transparent background is rejected instantly and not billed.

What is Seedream 5.5 Layer Decomposition?

It is a separate endpoint that splits one image into a clean base plus named transparent PNG layers with bounding boxes, and can read text with a font match and colour. It bills each returned image at the Seedream 5.5 rate plus the input image: $0.199 for a base and 8 layers at 1.5K.

How well does Seedream 5.5 render non-English text?

Spanish and Japanese poster copy came back exact in my tests. Hindi headline and button text were perfect, but a small Hindi subhead had two letter errors. Quote every line in the prompt, keep the layout simple, and proofread small type before print.

Try it

You can run Seedream 5.5 in the playground, and Layer Decomposition right next to it, on the same API key. My suggestion for a first test: take one product photo you already have, run three edit rounds on it, then split the last one into layers. It will cost you about twenty cents, and you will know within a few minutes whether it fits your pipeline.