Seedream 5.5 is available on EmpirioLabs. It is ByteDance's newest Seedream image model, released on November 9, 2026, for text-to-image generation, edits that combine up to 10 reference images, images with real transparency made from a prompt or from references, and layer decomposition, which splits one image into a base image plus up to 99 transparent layers and can read the text in them. It works in the API and in the Playground.
Watch the launch film
Every picture in the film was made by Seedream 5.5 through the EmpirioLabs API at 2K, including a freediver beside a humpback whale, a flamenco dancer mid-spin, a glassblower at work and a lettered jazz poster. The score was generated by ACE-Step on EmpirioLabs. Watch it on YouTube.
How it compares
| Seedream 5.5 | Seedream 5.0 Pro | Seedream 5.0 Flash | |
|---|---|---|---|
| Layers in one decomposition | Up to 99 | Up to 16 | Up to 16 |
| Text recognition on layers | Yes | No | No |
| Transparent image from a prompt | Yes | No | No |
| Transparent edit | Up to 10 references, no alpha channel needed | One image that has an alpha channel | One image that has an alpha channel |
| Reference images | Up to 10 | Up to 10 | Up to 10 |
| Resolution tiers | 1K, 1.5K, 2K | 1K, 1.5K, 2K | 1K, 1.5K, 2K |
What it supports
- Text-to-image. Send a prompt with no image.
- Editing and fusion. Attach one to ten images and describe the change, or how to combine them.
- Marker and coordinate edits. Mark the area to change on the input image with a circle, arrow or sketch, or give its exact position as a
<bbox>tag in the prompt. - Transparent images. Set
backgroundtotransparentto get a PNG with an alpha channel, from a prompt alone or from reference images. - Layer decomposition. Split one image into a base image plus up to 99 transparent PNG layers, each returned with its position in the base image, a name and a description.
- Text recognition. During a decomposition, get the text of each printed text layer with its line positions and styling.
- Text in the image. Signs, labels, posters and small print render in Chinese, English and 14 other languages, including Japanese, Korean, Arabic, Spanish and French.
Output is PNG by default, or JPEG, at the 1K, 1.5K or 2K resolution tier, or at a custom width and height.
Generate an image
curl https://api.empiriolabs.ai/v1/images/generations \
-H "Authorization: Bearer $EMPIRIOLABS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedream-5-5",
"prompt": "A ceramic coffee cup beside a small chalkboard sign that reads Oat Flat White 4.50, morning window light",
"aspect_ratio": "4:3",
"quality": "2K"
}'
The request waits for the finished image and returns it in data. Add "sync": false to get a job back at once, with a job_id to poll at GET /v1/jobs/<job_id> until its status is completed.
The same call from the OpenAI Python SDK, pointed at EmpirioLabs. Controls that the SDK does not define go in extra_body:
from openai import OpenAI
client = OpenAI(
base_url="https://api.empiriolabs.ai/v1",
api_key="YOUR_EMPIRIOLABS_API_KEY",
)
result = client.images.generate(
model="seedream-5-5",
prompt="A glass terrarium with a tiny moss landscape and a brass label that reads Fern Garden",
extra_body={"aspect_ratio": "4:3", "quality": "2K"},
)
print(result.data[0].url)
Make a transparent image
Set background to transparent. It works from a prompt alone, and on edits of up to 10 reference images that do not need an alpha channel of their own. The output must be PNG:
{
"model": "seedream-5-5",
"prompt": "A glossy red paper lantern with gold tassels, isolated product cutout",
"background": "transparent",
"quality": "1K"
}
Each returned image reports what it actually contains as background: transparent or opaque. Leave background at auto, the default, and the model decides from the prompt and the output format.
Edit with reference images
Pass up to 10 image URLs, data URIs or uploaded images in image, and refer to them in the prompt by their order:
{
"model": "seedream-5-5",
"prompt": "Hang the red paper lantern from image 1 from the branch in image 2, keeping everything else in image 2 unchanged",
"image": [
"https://example.com/lantern.png",
"https://example.com/branch-poster.png"
]
}
Edit a marked area
To change one part of an image, mark it on the input with a circle, arrow or sketch and describe the change, or give the area as a <bbox> tag. A box is left top right bottom on a 0 to 1000 grid over the image, whatever its pixel size:
{
"model": "seedream-5-5",
"prompt": "Add a small glass vase with a single white tulip inside <bbox>60 80 300 520</bbox>. Keep everything else unchanged.",
"image": "https://example.com/kitchen.png"
}
Split an image into layers
Set layer_decomposition to true and attach exactly one image. The prompt is optional: leave it out to let the model choose the elements, or name the elements or regions to separate. max_images sets the most images to return, the base image included, from 2 to 100, and text_recognition adds the text of each printed text layer:
curl https://api.empiriolabs.ai/v1/images/generations \
-H "Authorization: Bearer $EMPIRIOLABS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedream-5-5",
"layer_decomposition": true,
"image": "https://example.com/magazine-cover.png",
"max_images": 10,
"text_recognition": true
}'
data[0] is the base image, with a z_index of 0. Each entry after it is a transparent PNG layer with its stacking order, its box in the base image in pixels (bounding_box.absolute) and on the 0 to 1000 grid (bounding_box.normalized), both as [left, top, right, bottom], and a name and description. A printed text layer also carries text_recognition:
{
"url": "https://media.empiriolabs.ai/...",
"z_index": 1,
"width": 1723,
"height": 609,
"bounding_box": {
"absolute": [75, 0, 995, 325],
"normalized": [69, 0, 921, 301]
},
"name": "Top yellow large serif title text Seedream",
"description": "Large yellow serif title text reading \"Seedream\" positioned at the top of the composition.",
"text_recognition": {
"text": "Seedream",
"lines": [
{
"bounding_box": {
"absolute": [196, 53, 874, 231],
"normalized": [181, 49, 809, 214]
},
"runs": [
{
"text": "Seedream",
"style": {
"similar_font_family": "HTF Didot",
"foreground_color": "#F5E25A",
"bold": false,
"italic": false,
"underline": false,
"strikethrough": false,
"shadow": false,
"translucent": false
}
}
]
}
]
},
"background": "transparent"
}
Stack the layers over the base image in ascending z_index order to rebuild it, or move, resize, recolor or replace any layer first. With the recognized text, a layer can be retyped, translated or restyled and placed back at its line's box.
Things to know before your first request
- One image per request. A request returns one image, and
nabove 1 returns an error. Send separate requests for variations. Layer decomposition is the exception: it returns the base image and its layers together. - Set
max_imagesfor the decomposition you need. Without it a decomposition may return up to 30 images, and each returned image bills. A larger value allows a finer split. - Scale each layer to its box. A layer PNG is not always the size of its footprint in the base image: in the example above, a 1723x609 layer fills a 920x325 box. Scale each layer to the width and height of its
bounding_box.absolutebefore placing it at the box's top-left corner. - Text recognition reads printed text. Artistic lettering and handwriting come back as layers without
text_recognition. - Decomposition takes no
background. Its layers are always transparent PNG, and settingbackgroundtotransparentoropaquewithlayer_decompositionreturns an error. - A transparent result needs PNG.
background: "transparent"withoutput_format: "jpeg"returns an error.
Pricing
Per image. Seedream 5.5 is pay as you go and billed per returned image at its size: 1K and 1.5K images share one rate, and 2K images bill at a higher rate. Each reference image adds a charge. A layer decomposition bills each image it returns, the base image and every layer, at its own size. You can pay as you go, or choose a plan with weekly allowances. Current rates are on the model page and the pricing page.
Content safety. Generated images pass an automated content-safety check. An image flagged as explicit is not returned, and because it was generated before the check ran, it is still billed.
Start building
Try Seedream 5.5 in the Playground, read the full parameter reference in the API docs, or compare it with the other image models in the model catalog. For the earlier models of the family, see How to Use the Seedream 5.0 Pro API and How to Use the Seedream 5.0 Flash API.




