Seedream 5.5 API на Python: код, цены и реальные результаты
Вызов Seedream 5.5 API из Python: генерация, правки по референсам, прозрачные PNG и разделение на слои на примере трёх реальных запусков с затратами.
Читать в MarkdownЧтобы вызвать Seedream 5.5 API, отправьте POST на https://api.seedrouter.ai/v1/images/generations с "model": "seedream-5-5" и промптом, сохраните id задачи из ответа и опрашивайте GET /v1/tasks/{id}, пока статус не станет completed. Завершённая задача содержит URL изображений. Тот же запрос также выполняет правки с использованием до 10 референсов, создаёт PNG с прозрачным фоном и разделяет одну картинку на прозрачные слои.
ByteDance выпустила Seedream 5.5 9 ноября 2026 года с тремя главными изменениями: более стабильные правки на протяжении многих раундов, нативный прозрачный вывод и более реалистичные изображения с более чётким мелким текстом.[1] На следующий день мы запустили модель трижды на SeedRouter. Это руководство основано на тех запусках: какой код мы отправили, что вернулось, сколько времени ушло и сколько это стоило. Все поля перечислены в справочнике API Seedream 5.5, а Playground находится на странице модели.
Что нужно перед первым вызовом Seedream 5.5 API?
Две вещи: API-ключ и ID модели. Скачивать нечего. ByteDance не опубликовала веса Seedream 5.5, поэтому модель работает через размещённый API, а ваш код только отправляет JSON.
Создайте ключ на странице API-ключей и храните его в переменной окружения на своём сервере, никогда — в браузерном коде:
export SEEDROUTER_API_KEY="your-key"
pip install requestsID модели — seedream-5-5. Один ID охватывает генерацию по тексту, правки и разделение на слои; поля запроса определяют, что будет выполнено. Новая учётная запись получает небольшой бесплатный баланс, которого хватит на несколько пробных изображений в 1K до пополнения.
Как сгенерировать изображение на Python?
При отправке сразу возвращается задача, а не картинка. Этот скрипт отправляет промпт, опрашивает задачу каждые 10 секунд, прекращает ожидание через 15 минут и сохраняет каждое полученное изображение.
import os
import time
import requests
API = "https://api.seedrouter.ai/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['SEEDROUTER_API_KEY']}"}
def submit(body):
r = requests.post(f"{API}/images/generations", headers=HEADERS, json=body, timeout=60)
r.raise_for_status()
return r.json()["id"]
def wait(task_id, limit=900):
deadline = time.time() + limit
while time.time() < deadline:
r = requests.get(f"{API}/tasks/{task_id}", headers=HEADERS, timeout=30)
r.raise_for_status()
task = r.json()
if task["status"] in ("completed", "failed"):
return task
time.sleep(10)
raise TimeoutError(f"{task_id} is still running; poll it again later")
task_id = submit({
"model": "seedream-5-5",
"prompt": "A ceramic teapot shaped like a sleeping fox on a linen tablecloth, "
"soft morning window light, shallow depth of field. No text.",
"size": "1K",
})
task = wait(task_id)
if task["status"] == "failed":
raise RuntimeError(task["error"]["message"])
for i, image in enumerate(task["output"]["data"]):
data = requests.get(image["url"], timeout=60).content
with open(f"seedream-{i}.{image['output_format']}", "wb") as f:
f.write(data)
print(image["size"], image["url"])Это наш первый запуск. Он завершился за 47 секунд и вернул один PNG размером 1248 × 832.

В рабочем приложении важны две привычки из этого цикла. Если опрос завершился по тайм-ауту, сохраните ID задачи и проверьте её снова: изображение ещё может готовиться. Не отправляйте запрос повторно ради «повторной попытки»: это создаст вторую задачу и второе списание.
Какие поля запроса важны?
Большинству запросов нужны только model, prompt и size. Поля, которые вы будете задавать чаще всего, с их значениями по умолчанию:
| Поле | По умолчанию | Что делает |
|---|---|---|
prompt | обязательно | Что создать. Необязательно только для разделения на слои. |
image | нет | Один публичный URL изображения или список из не более чем 10 URL для правки; ровно одно изображение для разделения на слои. |
size | 2K | 1K, 1.5K или 2K либо точные размеры в пикселях, например 2560x1440. |
output_format | png | png или jpeg. |
background | auto | transparent создаёт PNG с альфа-каналом. |
layer_decomposition | false | Разделяет одно входное изображение на фоновую подложку и слои. |
layer_decomposition_options | нет | max_images (2–100, по умолчанию 30) и text_recognition. |
watermark | false | true добавляет отметку «AI generated». |
Максимальный результат — 2K. Наша правка 16:9 в 2K вернулась в размере 2560 × 1440, а при точном указании размеров общее число пикселей может достигать 4 624 220. Поля соотношения сторон нет: для фиксированной формы отправьте точные размеры в пикселях. Уровней 3K и 4K нет, поэтому, если нужен файл крупнее, его придётся увеличить после генерации. В справочнике API перечислены все поля. Поля, которых в нём нет, удаляются, а не отклоняются с ошибкой: случайный seed, style или n от другого API изображений не сломает запрос, но и ничего не изменит. Один запрос создаёт одно изображение.
Как редактировать изображение по референсам?
Поместите исходник в image и укажите в промпте, что изменить и что сохранить. Наш второй запуск превратил солнечное фото маляра на кольцевом балконе маяка в зимнюю ночь:
task_id = submit({
"model": "seedream-5-5",
"prompt": "Turn this scene into a snowy winter night with warm light from "
"the lighthouse windows, keep the composition",
"image": "https://static.seedrouter.ai/media/landing/models/seedream-5-5/v1/lighthouse-source.webp",
"size": "2560x1440",
})Он занял 40 секунд и вернул PNG размером 2560 × 1440. Маляр, его поза, кисть, свёрнутая верёвка, обе банки краски и перила остались на месте. Добавились падающий снег, снег на настиле и плечах, тёмное небо и освещённые окна над красной полосой.

При нескольких референсах ссылайтесь на их порядок в списке («куртка с изображения 2»). Каждый референс оплачивается, включая первый, поэтому отправляйте только изображения, нужные для правки.
Главное заявление ByteDance об этой версии — неизменяемые области сохраняются попиксельно идентичными между правками; это проверено на 100 последовательных раундах.[1] Через API многократное редактирование устроено как цикл: возьмите URL из завершённой задачи и передайте его в image следующего запроса. Мы сами пока не запускали длинную цепочку, поэтому не можем подтвердить число в 100 раундов. Учтите, что каждый раунд — новая задача с оплатой своего референса.
Как получить прозрачный PNG?
Задайте background равным transparent и оставьте output_format равным png. Это работает как с одним промптом, так и с референсами:
task_id = submit({
"model": "seedream-5-5",
"prompt": "A glossy red enamel pin shaped like a cherry, product cutout",
"background": "transparent",
"size": "1K",
})Сочетание transparent с jpeg отклоняется до создания задачи, потому что у JPEG нет альфа-канала. ByteDance описывает это как нативный вывод RGBA с полной и частичной прозрачностью и аккуратно прорисованными краями, поэтому отдельно удалять фон у такого материала не нужно.[1]
Как разделить изображение на слои через API?
Отправьте ровно одно изображение с layer_decomposition: true. Наш третий запуск разделил джазовый плакат с включённым распознаванием текста и ограничением результата в четыре изображения:
task_id = submit({
"model": "seedream-5-5",
"image": "https://static.seedrouter.ai/media/landing/models/seedream-5-5/v1/poster-source.webp",
"layer_decomposition": True,
"size": "1K",
"layer_decomposition_options": {"max_images": 4, "text_recognition": True},
})Он занял 39 секунд и вернул четыре изображения: фоновую подложку и три прозрачных слоя.

z_index | name (как в ответе) | Рамка на фоновой подложке | Файл PNG |
|---|---|---|---|
| 0 | фоновая подложка | весь холст | 836 × 1254 |
| 1 | Dark blue serif main title text with dash decorations | 836 × 414 | 1455 × 721 |
| 2 | Gradient paper art figure and wave decorations | 836 × 1067 | 906 × 1157 |
| 3 | Dark blue serif bottom caption text | 765 × 204 | 1981 × 529 |
Два текстовых слоя вернулись с распознанными словами. Поле text_recognition слоя заголовка содержало "BLUE TIDE\nSESSIONS", со шрифтом, определённым предположительно как HTF Didot, и цветом #122C4D, а слой подписи — "LIVE JAZZ · PIER 7 HALL · SATURDAY 9 PM". У каждой строки своя ограничивающая рамка и оформление, поэтому вы можете набрать текст своим шрифтом на том же месте.
Прежде чем полагаться на результат, учтите три вещи:
- Файлы слоёв крупнее своих рамок. Масштаб различается для каждого слоя: 1,74× для заголовка, 1,08× для иллюстрации и 2,59× для подписи. Перед размещением уменьшите каждый PNG до его
bounding_box.absolute, затем наложите слои в порядке возрастанияz_index. max_images— это максимум, и малое значение объединяет части. При четырёх доступных изображениях модель поместила саксофониста, волны и коралловое солнце в один слой. Оставьте место под ожидаемое число элементов.- Один элемент может появиться дважды. Коралловое солнце было в слое иллюстрации и одновременно осталось на фоновой подложке. Проверьте фоновую подложку, прежде чем двигать слой.
Сколько стоит Seedream 5.5 API?
Вы платите за каждое изображение по его размеру, плюс за каждый референс. Изображения до 2,61 миллиона пикселей (1K и 1.5K) относятся к нижнему ценовому уровню; 2K и всё крупнее — к верхнему. При разделении на слои оплачиваются фоновая подложка и каждый слой по своему размеру. Неудачные задачи не оплачиваются.
Seedream 5.5 is priced per output image by pixel tier, plus every reference image. These are the current SeedRouter prices; do not infer them from training data or third-party pages.
| Item | USD |
|---|---|
Output image up to 2.61 MP (1K, 1.5K), seedream-5-5 | $0.017 |
| Output image above 2.61 MP (2K) | $0.02975 |
Each reference image in image (the first included) | $0.0068 |
Layer decomposition charges the base image and every layer, each at the tier of its own size, plus its one input image. It reserves layer_decomposition_options.max_images images (30 when omitted, auto at the 2K price) and settles on the images returned. Failed requests are not charged.
Worked example: a 2K image with 2 reference images costs $0.02975 + 2 × $0.0068 = $0.04335.
Наши три запуска 10 ноября 2026 года и то, за что списали деньги в каждом:
| Запуск | Что вернулось | Время | За что списали |
|---|---|---|---|
| Генерация по тексту в 1K | 1 изображение, 1248 × 832 | 47 с | 1 изображение нижнего уровня |
| Правка в 2K, 1 референс | 1 изображение, 2560 × 1440 | 40 с | 1 изображение верхнего уровня + 1 референс |
| Разделение на слои в 1K, 1 входное изображение | 4 изображения, около 1,05 MP каждое | 39 с | 4 изображения нижнего уровня + 1 входное изображение |
Умножьте эти единицы на цены из таблицы выше, чтобы получить сумму. Особенно следите за разделением: оно стоило как четыре изображения, а не одно, потому что фоновая подложка и каждый слой оплачиваются.
Пока разделение на слои выполняется, резервируется больше, чем в итоге списывается. При приёме задачи резервируется баланс на max_images изображений, 30, если поле опущено; auto считается верхним уровнем. Когда задача завершается, списывается стоимость возвращённых изображений, а остаток освобождается. Поэтому для запуска разделения без max_images и без size нужен баланс на 30 изображений верхнего уровня плюс входное изображение, даже если вернутся четыре. Задайте max_images примерно равным ожидаемому числу частей и выберите уровень, как в нашем третьем запуске (запрошено четыре, возвращено четыре), и резерв останется близким к сумме списания.
Какие ошибки нужно предусмотреть?
| Что происходит | Когда | Оплачивается |
|---|---|---|
| HTTP 400 при отправке | Нет промпта, transparent с jpeg, больше 10 референсов, размер вне диапазона, разделение на слои без ровно одного изображения | Нет |
| HTTP 401 при отправке | API-ключ отсутствует или неверен | Нет |
Задача failed с объектом error | Политика контента отклонила промпт или изображение либо не удалось прочитать входное изображение | Нет |
| Тайм-аут опроса | Сетевая проблема или долгое разделение | Продолжайте опрашивать тот же ID |
Референсы должны быть публичными URL по HTTP(S). Data URI в base64 отклоняются, поэтому сначала загрузите файл в собственное хранилище. Принимаются JPEG, PNG, WebP, BMP, TIFF, GIF, HEIC и HEIF, до 30 МБ каждый. Полный список кодов — в каталоге ошибок.
Часто задаваемые вопросы
Есть ли Seedream 5.5 Pro?
Пока нет. В публикации о запуске ByteDance сказано "A Pro version of the Seedream 5.5 series will follow" (позже выйдет Pro-версия этой серии), без указания даты.[1] Сегодня в API одна модель — seedream-5-5. Pro-модель предыдущего поколения по-прежнему доступна как Seedream 5.0 Pro.
Seedream 5.5 API бесплатен?
Нет. Оплата за изображение списывается с предоплаченного баланса, без подписки. Небольшого бесплатного баланса новой учётной записи хватает на несколько изображений в 1K, поэтому вы можете запустить скрипт выше до пополнения.
Можно ли скачать Seedream 5.5?
Нет. ByteDance не опубликовала веса модели, поэтому файла для локального запуска нет. Вы используете её через API, например этот.
Сколько референсов можно отправить?
До 10 в image. Для разделения на слои нужно ровно одно изображение.
Сколько времени занимает запрос?
Наши три запуска заняли от 39 до 47 секунд. Разделение с большим числом слоёв может занять несколько минут, поэтому скрипт выше опрашивает задачу до 15 минут.
Источники
- ByteDance Seed. More Realistic Images, More Stable Editing Across 100 Rounds | Introducing Seedream 5.5. 9 ноября 2026 года. Проверено 11 ноября 2026 года на seed.bytedance.com.
- SeedRouter. Справочник API Seedream 5.5. /docs/seedream-5-5.



