Skip to content

ByteDance Seedream

Модели Seedream в продаже: seedream-5.0-pro и seedream-5.0-lite. Их обслуживают каналы Volcengine (Doubao), а вызов идёт через те же OpenAI-совместимые эндпоинты images, что описаны в разделе Формат изображений OpenAI; на этой странице описано, что меняет адаптер Volcengine.

У моделей Seedream в supported_endpoint_types присутствует image-generation — о чтении этого поля см. Модели.

POST /v1/images/generations
POST /v1/images/edits

/v1/images/generations принимает тело JSON. Для правки по изображению используется /v1/images/edits с исходным изображением, переданным строкой в image; RouteAPI передаёт оба варианта в upstream-эндпоинт генерации изображений (в этом канале Volcengine не предоставляет отдельный эндпоинт правки на основе формы).

ПолеТипОбязательноОписание
modelstringДаseedream-5.0-pro или seedream-5.0-lite
promptstringДаТекстовое описание или инструкция правки
sizestringНетРазмер или ступень результата. Нормализуется до отправки в Volcengine (см. Нормализация размера)
imagestringНетИсходное изображение для правки, URL http(s) или строка data:image/...;base64,.... Передаётся в теле JSON
watermarkbooleanНетНужно ли наносить водяной знак; явный false передаётся
sequential_image_generationstringНет"auto" включает генерацию нескольких изображений; "disabled" отключает её
sequential_image_generation_optionsobjectНетПараметры последовательной генерации; {"max_images": <int>} задаёт количество
layer_decompositionbooleanНетРазделяет результат на слои. При включении меняется и способ тарификации запроса (см. Тарификация)
backgroundstringНетОбработка фона, например "transparent" или "opaque"
toolsarrayНетИнструменты upstream, например [{"type": "web_search"}]
optimize_prompt_optionsobjectНетОптимизация prompt, например {"mode": "standard"} или {"mode": "fast"}

Эти поля входят в структуру запроса изображения шлюза и передаются в Volcengine. Пропущенные необязательные поля удаляются из тела upstream, а не отправляются как null. Остальные неизвестные поля JSON отбрасываются — включите сквозную передачу тела запроса на канале, если нужно поле, которое шлюз не моделирует.

Обработка size зависит от модели:

МодельОбработка size
seedream-5.0-proНативные размеры сохраняются как есть: 1K, 1.5K, пиксельные значения вроде 1024x1024 и другие
seedream-5.0-liteПиксельные размеры переписываются в ступень 2K / 3K / 4K

Для переписываемых моделей ступень определяет длинная сторона: она делится на 1024 и округляется до ближайшего целого (.5 — вверх), затем ограничивается диапазоном 2K–4K. Переданные напрямую ступени, например 2K или 3k, только ограничиваются, а нераспознанные значения вроде auto передаются дальше на проверку Volcengine. Примеры для seedream-5.0-lite:

Запрошенный sizeОтправлено в upstream
1024x10242K
2048x20482K
1536x15362K
1440x25603K
3840x21604K
1K2K
5K4K
autoauto
Terminal window
curl https://api.routeapi.ai/v1/images/generations \
-H "Authorization: Bearer $ROUTEAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedream-5.0-pro",
"prompt": "A misty mountain lake at sunrise, cinematic",
"size": "2K"
}'

Последовательная генерация

Section titled “Последовательная генерация”
Terminal window
curl https://api.routeapi.ai/v1/images/generations \
-H "Authorization: Bearer $ROUTEAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedream-5.0-lite",
"prompt": "A series of four postcards from the same coastal town, consistent style",
"sequential_image_generation": "auto",
"sequential_image_generation_options": { "max_images": 4 }
}'

Если sequential_image_generation равно "auto", а max_images не задан, предварительная оценка стоимости рассчитывается исходя из 15 изображений при наличии тарификации дополнительных результатов.

Редактирование изображения

Section titled “Редактирование изображения”

Передайте исходное изображение строкой в теле JSON. Шлюз передаёт значение image в Volcengine без изменений — это может быть URL http(s) или строка data:image/...;base64,.... Описанная выше нормализация размера применяется и к запросу правки.

Terminal window
curl https://api.routeapi.ai/v1/images/edits \
-H "Authorization: Bearer $ROUTEAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedream-5.0-pro",
"prompt": "Replace the background with a sunset beach, keep the subject unchanged",
"image": "https://example.com/photo.png",
"size": "2K"
}'

layer_decomposition: true просит upstream разделить результат на отдельные слои; background: "transparent" запрашивает прозрачный фон. Оба параметра передаются без изменений.

Объект images upstream передаётся вам как есть. Поля, которые можно разбирать:

{
"data": [
{
"url": "https://example.com/generated.png",
"size": "2048x2048"
}
],
"usage": {
"input_images": 1,
"generated_images": 1,
"output_tokens": 4096,
"total_tokens": 4096
}
}
  • Изображения читаются из data[].url. Каждый элемент может содержать фактически выданный size, который может отличаться от запрошенной ступени.
  • usage.input_images и usage.generated_images используются при расчёте, когда модель оплачивается за изображение; output_tokens — при расчёте по токенам.

Модели Seedream оплачиваются за изображение, если модель настроена таким образом. Если на странице модели показаны ступени размера, ступень выбирается по количеству пикселей отправленного size до выбора канала. Применимую цену см. в разделе Тарификация моделей и на странице модели.

Два момента, специфичных для Seedream:

  • Адаптер переписывает size для seedream-5.0-lite, поэтому выданное изображение может попасть в другую ступень, чем оплаченная. Чтобы не допустить такого несоответствия, модели с оплатой по ступеням размера отклоняются с 400 при маршрутизации на канал Volcengine — режим сквозной передачи тела не затрагивается, так как тогда адаптер не переписывает тело.
  • layer_decomposition: true переключает запрос на конфигурацию цены разложения на слои, если она задана для модели. Изображения-референсы сверх бесплатного лимита и последовательные результаты тоже оплачиваются; применимые значения указаны на странице модели.
СтатусЗначениеТипичная причина
400Некорректный запросОтсутствует model, n больше 128, × в качестве разделителя размера в теле JSON, или модель с оплатой по ступеням размера маршрутизирована на Volcengine
401Ошибка аутентификацииAPI Key отсутствует, недействителен, просрочен или исчерпан
403Исчерпан баланс или квотаinsufficient_user_quota или pre_consume_token_quota_failed
429Превышен лимит запросовСнизьте параллелизм
500Ошибка преобразования или внутренняя ошибкаЗапрос не удалось преобразовать, или upstream не вернул изображение

Ошибки upstream, например неподдерживаемый size или отклонённый prompt, возвращаются со статусом и сообщением upstream, к которым добавлен ID запроса RouteAPI.