live
MODEL IDbytedance:seedream@5.5

Seedream 5.5

ByteDance
by

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.

Seedream 5.5

Editing 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.

A woman with a low bun and sunglasses on a city sidewalk in a knee-length camel double-breasted coat over a black turtleneck, dark jeans and black loafers, a black crossbody bag at her hip, shopfronts and yellow-leaved trees behind her

A fashion e-commerce lifestyle photograph of a woman in her late twenties with a sleek low bun and small gold hoop earrings, walking toward the camera mid-stride on a wide city sidewalk on a bright autumn morning. She wears a camel wool double-breasted coat that falls just below the knee, open over a black fine-knit turtleneck, straight-leg dark indigo jeans and black leather loafers, a small black leather crossbody bag on her left hip. Behind her, a softly blurred street of modern glass shopfronts and a few young plane trees with yellow leaves. Soft low sunlight from the left, natural shadows on the pavement. Full-length shot at waist height, 85mm lens, shallow depth of field, the woman centered. Photoreal fashion editorial photography, no text, no logos.

CamelCobalt

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.

Try in Playground
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.referenceImages takes 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.
  • positivePrompt carries the instruction: what changes and what stays.
  • width and height are 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:

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
TargetChangeHoldKeep

"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.

A bacon cheeseburger on a white plate beside a black wire basket of fries on a light oak table, with a crumpled napkin and a ketchup smear by the knife and fork, crumbs around the plate and a face-down phone at the back

A food delivery app menu photograph of a double smash burger with melted cheddar, pickles and shredded lettuce on a glossy toasted brioche bun, served on a round matte white plate, with skin-on fries in a small black wire basket beside it, on a light oak restaurant table. Around the plate: a crumpled paper napkin with a ketchup smear, scattered sesame seeds and crumbs, three spilled fries on the table and a smartphone lying face down near the top right corner of the frame. Soft window daylight from the left, three-quarter overhead angle at about 45 degrees, 50mm lens, shallow depth of field. Photoreal food photography, no text, no logos.

As shotCleaned
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.

A woman with dark curly hair in a high ponytail standing in a relaxed three-quarter stance in a sage green sports bra, matching leggings and white training shoes against a warm gray studio backdrop

A fitness brand catalog photograph of a woman in her early thirties with dark curly hair tied back in a high ponytail, standing in a relaxed three-quarter stance with her weight on one leg and one hand adjusting her ponytail, smiling slightly. She wears a sage green sports bra, matching high-waisted sage green leggings and white training shoes. Seamless warm gray studio backdrop, soft even studio lighting from the front, a faint shadow on the floor. Full-length shot at waist height, 50mm lens, centered. Photoreal activewear catalog photography, no text, no logos.

StudioBoardwalk
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.

A row of three identical red brick townhouses with white six-panel front doors under fanlight windows, stone steps and black railings, the middle door ringed in red

A real estate listing photograph of a row of three identical terraced townhouses in red brick, side by side. Each house has a white-painted six-panel front door with a small semicircular fanlight window above it, three pale stone steps up to the door with a black iron railing on each side, and a tall white sash window to the right of the door. Overcast soft daylight, straight-on view from across a quiet street at standing height, 35mm lens, verticals straight, all three front doors fully in frame and evenly spaced. Photoreal architectural photography, no people, no cars, no text, no house numbers.

MarkedEdited
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.jpg

Chaining 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:

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

  1. 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.

  2. Fence a recolor with "only". Then hold what makes the object itself, such as its texture and its cut.

  3. Say what fills the gap. A removal names what was behind each object, the table and its grain rather than an empty space.

  4. Relight a moved subject. Give the light a direction and ask for a contact shadow, and leave the lighting out of the keep list.

  5. Circle look-alikes. Draw the ring into the photo you send, refer to it in the instruction and ask for it to be removed.

  6. Change one thing per round. Restate the keep list in every round, since no round sees the prompts before it.

  7. Send the source's size for a before-and-after. Without width and height, the edit comes back at 2K in the reference's shape.