Seedream 5.5

Seedream 5.5 is ByteDance's image generation and editing model, focused on visual realism, aesthetics and editing consistency. It supports text-to-image and reference-guided editing with up to 10 input images, keeps unedited areas stable across multi-turn edits, and outputs transparent images from a prompt or from references. It can also split an image into a base image and up to 99 editable layers, returning the text, position, font and style of each text layer, which suits poster, packaging and marketing design workflows.

Complete technical specification for integration
Ready-to-use code snippets for common workflows
Step-by-step tutorials for advanced use cases
← All GuidesEditing images
How to edit images with Seedream 5.5: an instruction to recolor, clean up or relight one photo, a drawn mark to pick the target, and edits chained over several rounds.
Introduction
A catalog photo that needs one change, a new coat color or a cleaner table, should not need a new shoot. An edit starts from the photo you already have: you send it in inputs.referenceImages, describe the change in positivePrompt, and Seedream 5.5 returns that photo with the change made.
ByteDance built 5.5 around editing consistency. What an instruction does not touch is meant to stay where it was, so a photo can take several edits in a row and still be the same photo. The street shot below went in with one instruction to recolor the coat.
The instruction named the coat and then listed everything else as fixed, from her pose to the street behind her. That second half, the keep list, is in every prompt on this page.
This guide covers the request and the output size, writing the instruction, removing clutter, moving a subject to a new background, pointing at the target with a drawn mark, and chaining edits on one photo. Building one image out of several is covered in multi-reference composition.
The request
An edit is an ordinary generation request with the photo attached: the image goes in inputs.referenceImages and the instruction in positivePrompt.
import { createClient } from '@runware/sdk'
const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()
const [result] = await client.run({
model: 'bytedance:seedream@5.5',
positivePrompt: 'Change only the color of the camel coat to a deep cobalt blue. Keep its fabric texture, its buttons, its cut and its length. Keep the woman, her face, her hair, her pose, the rest of her outfit, the bag, the street, the framing and the lighting exactly as they are.',
inputs: {
referenceImages: [
'https://assets.runware.ai/guides/bytedance-seedream-5-5/editing-images/source-coat.jpg'
]
},
width: 1776,
height: 2368
})import asyncio
import os
from runware import Runware
async def main():
async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
results = await client.run({
"model": "bytedance:seedream@5.5",
"positivePrompt": "Change only the color of the camel coat to a deep cobalt blue. Keep its fabric texture, its buttons, its cut and its length. Keep the woman, her face, her hair, her pose, the rest of her outfit, the bag, the street, the framing and the lighting exactly as they are.",
"inputs": {
"referenceImages": [
"https://assets.runware.ai/guides/bytedance-seedream-5-5/editing-images/source-coat.jpg"
]
},
"width": 1776,
"height": 2368
})
asyncio.run(main())curl https://api.runware.ai/v1 \
-H "Authorization: Bearer $RUNWARE_API_KEY" \
-H "Content-Type: application/json" \
-d '[
{
"taskType": "imageInference",
"taskUUID": "5d8e2b73-1a46-4c9f-b0e7-3f6a9c1d4e82",
"model": "bytedance:seedream@5.5",
"positivePrompt": "Change only the color of the camel coat to a deep cobalt blue. Keep its fabric texture, its buttons, its cut and its length. Keep the woman, her face, her hair, her pose, the rest of her outfit, the bag, the street, the framing and the lighting exactly as they are.",
"inputs": {
"referenceImages": [
"https://assets.runware.ai/guides/bytedance-seedream-5-5/editing-images/source-coat.jpg"
]
},
"width": 1776,
"height": 2368
}
]'runware run bytedance:seedream@5.5 \
positivePrompt="Change only the color of the camel coat to a deep cobalt blue. Keep its fabric texture, its buttons, its cut and its length. Keep the woman, her face, her hair, her pose, the rest of her outfit, the bag, the street, the framing and the lighting exactly as they are." \
inputs.referenceImages.0=https://assets.runware.ai/guides/bytedance-seedream-5-5/editing-images/source-coat.jpg \
width=1776 \
height=2368{
"taskType": "imageInference",
"taskUUID": "5d8e2b73-1a46-4c9f-b0e7-3f6a9c1d4e82",
"model": "bytedance:seedream@5.5",
"positivePrompt": "Change only the color of the camel coat to a deep cobalt blue. Keep its fabric texture, its buttons, its cut and its length. Keep the woman, her face, her hair, her pose, the rest of her outfit, the bag, the street, the framing and the lighting exactly as they are.",
"inputs": {
"referenceImages": [
"https://assets.runware.ai/guides/bytedance-seedream-5-5/editing-images/source-coat.jpg"
]
},
"width": 1776,
"height": 2368
}Response
[
{
"taskType": "imageInference",
"taskUUID": "5d8e2b73-1a46-4c9f-b0e7-3f6a9c1d4e82",
"imageUUID": "b3f61c08-7e29-4d54-a81b-6c2e9f0d3a75",
"imageURL": "https://im.runware.ai/image/os/a14d18/ws/2/ii/b3f61c08-7e29-4d54-a81b-6c2e9f0d3a75.jpg"
}
]inputs.referenceImagestakes the photo as a URL, a UUID (a previous generation's, or one uploaded via Media Storage), a data URI or base64. Each reference can be up to 36 megapixels and 30 MB, so a phone photo goes in at full size. The array takes up to 10 images, and more than one combines them into a new image.positivePromptcarries the instruction: what changes and what stays.widthandheightare optional, covered in Output size.
Output size
Leave the size out and the edit keeps the reference's shape: Seedream 5.5 returns it at the 2K tier, in the aspect ratio of the photo you sent. resolution asks for a smaller tier instead, 1K or 1.5K, with the ratio still taken from the reference.
Send width and height when the result has to line up with the source, as every before-and-after on this page does. The model honors them exactly, and they override the reference's ratio, so send the source's own size. The two have to multiply to between 921,600 and 4,624,220 pixels: a 4032 × 3024 phone photo is over that cap, and the largest output with its shape is 2480 × 1860.
Writing the instruction
An instruction has two halves, what changes and what stays. The coat prompt, clause by clause:
"The camel coat" names the target by how it looks, picking out one garment in the frame, and "only the color" fences the change to one property of it.
The second sentence holds what makes the garment that garment. A recolor that says nothing about texture or cut leaves the model free to redraw them along with the color, so it keeps the fabric, the buttons, the cut and the length.
The keep list then names categories, not details. "The street" and "the lighting" cover everything in them without describing the photo back to the model, and the photo already shows what they look like.
Removing clutter
A menu photo taken in a working restaurant picks up whatever was on the table. A removal lists every object that has to go, then says what fills the space each one leaves.
Remove the crumpled napkin, the crumbs and sesame seeds, the spilled fries and the smartphone from the table, and continue the light oak table surface and its wood grain where each of them was. Keep the burger, the plate, the basket of fries, the framing and the lighting exactly as they are.The fill clause does its work where an object sat on a pattern. The oak grain has to run on through the spots the napkin and the phone covered, and naming it hands the model the texture to continue instead of a blank to invent.
Changing the background
Moving a subject to a new place takes a new background and new light in the same instruction. A studio shot carries the flat front light of the studio, and set against a sunrise unchanged, it reads as a cutout.
Move her from the studio to an empty wooden seaside boardwalk at sunrise, the weathered planks running away behind her and a calm sea and pale sky softly out of focus in the background. Relight her with the low warm sun coming from behind her left shoulder, a soft rim of light along her hair and arms, and a long soft shadow on the planks at her feet. Keep her face, her hair and her outfit as they are.The second sentence relights her for the new place. A direction for the sun decides where the highlights land on her, and the shadow on the planks is what puts her feet on the boardwalk rather than in front of it.
The keep list is shorter than in the other edits. It holds her face, her hair and her outfit, and leaves out the lighting and the framing, because the light on her is part of what has to change.
Pointing with a mark
Three identical doors in a row leave no short wording that picks one out. Instead of counting in the prompt, circle the target on the photo in a color the photo does not contain, and refer to the circle. Seedream 5.5 reads the mark from the reference itself, so draw it into the image you send.
Repaint the front door inside the red circle a deep forest green, with a polished brass door knocker and a brass handle. Keep its panels, its fanlight and its frame. Keep the other two doors white, and keep the brick, the steps, the railings, the windows, the street, the framing and the lighting exactly as they are. Remove the red circle from the finished photo.The instruction says "the front door inside the red circle" and never names a position, so the same sentence works wherever a user taps in your app and your code draws the ring. The keep list names the look-alikes by count and color, "the other two doors white", and the last sentence asks for the circle to go, since it is part of the photo the model receives.
Any drawing step can make the mark. ImageMagick draws the ring above onto the photo in one command:
magick photo.jpg \
-fill none -stroke "#ff1f1f" -strokewidth 13 \
-draw "ellipse 1171,1045 130,270 0,360" \
marked.jpgChaining edits
Each edit returns an ordinary image, so one round's output is the next round's reference. Pass the previous result's imageURL or imageUUID straight back in inputs.referenceImages, with no download in between. The empty bedroom below is staged in three rounds, one change per round:

A real estate listing photograph of an empty bedroom in a newly built apartment. Pale engineered oak floor, plain white walls with a slim white baseboard, a large black-framed window on the right wall letting in soft afternoon daylight that falls in a bright patch across the floor, a white door frame at the far left edge, a flat white ceiling with one recessed light. The back wall is bare and faces the camera. Wide shot from the corner at chest height, 20mm lens, verticals straight. No furniture, no people, no text. Photoreal interior photography, bright neutral palette.

Stage this empty bedroom for a real estate listing. Add a queen bed with a low upholstered headboard in oatmeal linen centered against the back wall, made with crisp white bedding and a folded rust-colored throw at the foot, a slim walnut nightstand on each side of the bed with a small white ceramic lamp on each, and a large round jute rug under the bed. Keep the floor, the walls, the window, the door frame, the ceiling, the daylight and the camera angle exactly as they are.

Paint only the back wall behind the bed a muted sage green, with a clean straight line where it meets the ceiling and the side walls. Keep the bed, the bedding, the nightstands, the lamps, the rug, the floor, the other walls, the window, the door frame, the ceiling, the daylight and the camera angle exactly as they are.

Add a large framed black-and-white landscape photograph centered on the wall above the headboard, a tall bird of paradise plant in a woven seagrass basket in the corner beside the window, and two stacked books with a small stoneware vase on the right nightstand. Keep the bed, the bedding, the nightstands, the lamps, the rug, the sage green wall, the floor, the window, the door frame, the ceiling, the daylight and the camera angle exactly as they are.
The loupe sits on the window in every round, so stepping between rounds shows whether the room moved: the window frame and the patch of daylight on the floor are in every keep list.
Each request sees only its reference and its own prompt, so the keep list does not carry over from one round to the next. Round three lists "the sage green wall" that round two painted: from round three's point of view, the wall is part of the photo it was given.
None of the three rounds sends a size, so each comes back at the 2K tier in the shape of the room photo it was given.
Tips
-
Name what changes, then what stays. The keep list is half of every instruction, and on a listing or a product page it is the half that keeps the photo true.
-
Fence a recolor with "only". Then hold what makes the object itself, such as its texture and its cut.
-
Say what fills the gap. A removal names what was behind each object, the table and its grain rather than an empty space.
-
Relight a moved subject. Give the light a direction and ask for a contact shadow, and leave the lighting out of the keep list.
-
Circle look-alikes. Draw the ring into the photo you send, refer to it in the instruction and ask for it to be removed.
-
Change one thing per round. Restate the keep list in every round, since no round sees the prompts before it.
-
Send the source's size for a before-and-after. Without
widthandheight, the edit comes back at 2K in the reference's shape.







