> ## Documentation Index
> Fetch the complete documentation index at: https://docs.laozhang.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Seedream API: генерация и редактирование изображений, цены

> Как создавать и редактировать изображения через Seedream 5.0 Flash от $0.018, 5.0 Pro, 5.0, 4.5 и 4.0 в LaoZhang API: до 10 референсов и разбиение на прозрачные слои.

Seedream 5.0 Flash — самая новая и самая дешёвая модель Seedream, а Seedream 5.0 Pro даёт наивысшее качество изображений. Один JSON-эндпоинт выполняет и генерацию, и редактирование с объединением до десяти референсов; оплата идёт за каждое изображение на выходе.

Референсные изображения не оплачиваются, кроме 5.0 Pro: там каждый референс после первого стоит \$0.003. Публичные цены на 25 сентября 2026 года (см. [Цены на API моделей ИИ](https://docs.laozhang.ai/ru/models.md)):

| ID модели | Версия | Цена за изображение |
| - | - | - |
| `seedream-5-0-flash-260915` | Seedream 5.0 Flash (новейшая) | \$0.018 |
| `seedream-5-0-pro-260628` | Seedream 5.0 Pro | \$0.12 |
| `seedream-5-0-260128` | Seedream 5.0 | \$0.035 |
| `seedream-4-5-251128` | Seedream 4.5 | \$0.045 |
| `seedream-4-0-250828` | Seedream 4.0 | \$0.035 |

Все запросы Seedream используют один эндпоинт и одно тело JSON:

* Эндпоинт: `POST https://api.laozhang.ai/v1/images/generations`
* Для генерации передайте промпт.
* Для редактирования или объединения изображений добавьте `image` с одним–десятью референсами.
* Параллельные запросы: платформа их не ограничивает и не замедляет; `429` возникает из-за нехватки мощностей у поставщика модели, см. [Параллельность и 429](https://docs.laozhang.ai/ru/faq/api-concurrency.md).

![Реалистичный закат над горами, созданный Seedream 5.0](https://mintcdn.com/laozhangai-edd05f2c/YuJHjB7ivlJQODe0/images/samples/seedream-generate.jpg?fit=max\&auto=format\&n=YuJHjB7ivlJQODe0\&q=85\&s=58c254e27cd42e2b29f5a2cbf1efba30)

Результат примера генерации ниже: Seedream 5.0, 2K. Промпт: A beautiful sunset over mountains, realistic style

Примеры на этой странице используют Seedream 5.0 (`seedream-5-0-260128`). Чтобы вызвать другую версию:

* **4.5 или 4.0**: поменяйте `model`.
* **5.0 Flash или 5.0 Pro**: поменяйте `model` и убедитесь, что в запросе нет `sequential_image_generation` и `stream`. Обе модели отвечают на эти поля ошибкой HTTP 400, а примеры редактирования ниже передают `"sequential_image_generation": "disabled"`, так что сначала удалите эту строку.

## Подготовка

**1. Создайте ключ для моделей с оплатой за вызов**

Seedream — модель с оплатой за вызов (按次). В разделе [Управление токенами](https://api.laozhang.ai/token) создайте ключ (или измените существующий) и выберите **Режим оплаты** (计费模式) — **«сначала по использованию»** (按量优先, рекомендуется) или **«оплата за вызов»** (按次计费). Ключ с режимом «сначала по использованию» вызывает также модели с оплатой по использованию; ключ с оплатой за вызов — только модели с оплатой за вызов.

Храните ключ в переменной окружения на сервере.

![Диалог создания токена в консоли: режим оплаты «оплата за вызов» (按次计费), затем кнопка «Создать».](https://mintcdn.com/laozhangai-edd05f2c/_loZ0Jy0ZI__xJ9z/images/token-create-per-request.png?fit=max\&auto=format\&n=_loZ0Jy0ZI__xJ9z\&q=85\&s=1fdceb804bb3ad50f83a21ec65b4d807)

**2. Настройте окружение**

Экспортируйте ключ и установите `requests`, который нужен примерам на Python:

```bash theme={null}
export LAOZHANG_API_KEY="YOUR_LAOZHANG_API_KEY"
python3 -m pip install requests
```

## Генерация изображения

Этот запрос создаёт изображение 2K без водяного знака и записывает ответ в `seedream-generation.json`:

```bash theme={null}
curl --fail-with-body "https://api.laozhang.ai/v1/images/generations" \
  -H "Authorization: Bearer $LAOZHANG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedream-5-0-260128",
    "prompt": "A beautiful sunset over mountains, realistic style",
    "size": "2K",
    "response_format": "url",
    "watermark": false
  }' \
  -o seedream-generation.json
```

В успешном ответе изображение перечислено в `data`:

```json theme={null}
{
  "created": 1726051200,
  "data": [
    {
      "url": "https://example.com/generated_image.jpg"
    }
  ]
}
```

### Сохранение результата

Скачивайте изображение сразу после ответа. Сохраните скрипт как `save_images.py`: он записывает на диск все изображения из ответа, будь то `url` или `b64_json`.

```python save_images.py theme={null}
import base64
import json
import sys
import urllib.request
from pathlib import Path

response_file, stem = sys.argv[1], sys.argv[2]
response = json.loads(Path(response_file).read_text())
if not response.get("data"):
    sys.exit(f"В {response_file} нет изображения: {response}")

for number, item in enumerate(response["data"], start=1):
    if item.get("b64_json"):
        # Убираем необязательный префикс data:image/...;base64, и восстанавливаем недостающее выравнивание.
        value = item["b64_json"].split(",", 1)[-1]
        image = base64.b64decode(value + "=" * (-len(value) % 4))
    else:
        with urllib.request.urlopen(item["url"], timeout=120) as download:
            image = download.read()
    if image.startswith(b"\x89PNG"):
        extension = "png"
    elif image[:4] == b"RIFF" and image[8:12] == b"WEBP":
        extension = "webp"
    else:
        extension = "jpg"
    path = Path(f"{stem}-{number}.{extension}")
    path.write_bytes(image)
    print(f"Сохранено: {path}")
```

```bash theme={null}
python3 save_images.py seedream-generation.json seedream-sunset
```

Скрипт выведет строку вроде `Сохранено: seedream-sunset-1.jpg`. Откройте файл и проверьте результат.

### Генерация на Python

```python theme={null}
import base64
import os
from pathlib import Path

import requests

response = requests.post(
    "https://api.laozhang.ai/v1/images/generations",
    headers={"Authorization": f"Bearer {os.environ['LAOZHANG_API_KEY']}"},
    json={
        "model": "seedream-5-0-260128",
        "prompt": "A beautiful sunset over mountains, realistic style",
        "size": "2K",
        "response_format": "url",
        "watermark": False,
    },
    timeout=180,
)
response.raise_for_status()
item = response.json()["data"][0]

if item.get("b64_json"):
    value = item["b64_json"].split(",", 1)[-1]
    image = base64.b64decode(value + "=" * (-len(value) % 4))
else:
    download = requests.get(item["url"], timeout=120)
    download.raise_for_status()
    image = download.content

extension = "png" if image.startswith(b"\x89PNG") else "jpg"
output = Path(f"seedream-sunset.{extension}")
output.write_bytes(image)
print(f"Сохранено: {output}")
```

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

Чтобы отредактировать или перерисовать готовое изображение, добавьте в запрос `image`. В примере используется публичное тестовое изображение из документации BytePlus, поэтому его можно запустить без изменений:

```bash theme={null}
curl --fail-with-body "https://api.laozhang.ai/v1/images/generations" \
  -H "Authorization: Bearer $LAOZHANG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedream-5-0-260128",
    "prompt": "Generate a close-up image of a dog lying on lush grass.",
    "image": "https://ark-doc.tos-ap-southeast-1.bytepluses.com/doc_image/seedream4_imageToimage.png",
    "sequential_image_generation": "disabled",
    "size": "2K",
    "response_format": "url",
    "watermark": false
  }' \
  -o seedream-edit.json

python3 save_images.py seedream-edit.json seedream-edit
```

## Объединение до 10 референсных изображений

Чтобы передать несколько референсов, сделайте `image` массивом. Каждый элемент — публичный URL или data URL вида `data:image/png;base64,...`. Изображения нумеруются в порядке массива, поэтому в промпте можно ссылаться на image 1, image 2 и так далее.

Этот пример отправляет три локальных файла как data URL:

```bash theme={null}
IMG1=$(base64 < product.png | tr -d '\n')
IMG2=$(base64 < scene.jpg | tr -d '\n')
IMG3=$(base64 < style.jpg | tr -d '\n')

curl --fail-with-body "https://api.laozhang.ai/v1/images/generations" \
  -H "Authorization: Bearer $LAOZHANG_API_KEY" \
  -H "Content-Type: application/json" \
  --data-binary @- \
  -o seedream-multi-edit.json <<EOF
{
  "model": "seedream-5-0-260128",
  "prompt": "Place the product from image 1 in the scene from image 2, and apply the lighting and color style of image 3. Keep the product shape, label, and colors.",
  "image": [
    "data:image/png;base64,$IMG1",
    "data:image/jpeg;base64,$IMG2",
    "data:image/jpeg;base64,$IMG3"
  ],
  "sequential_image_generation": "disabled",
  "size": "2K",
  "response_format": "url",
  "watermark": false
}
EOF

python3 save_images.py seedream-multi-edit.json seedream-multi-edit
```

### Объединение референсов на Python

Функция принимает от одного до десяти референсов: локальные файлы превращает в data URL, а публичные URL передаёт без изменений.

```python theme={null}
import base64
import mimetypes
import os
from pathlib import Path

import requests

API_URL = "https://api.laozhang.ai/v1/images/generations"
HEADERS = {"Authorization": f"Bearer {os.environ['LAOZHANG_API_KEY']}"}


def to_image_input(source):
    """URL возвращаем как есть, локальный файл превращаем в data URL."""
    if source.startswith(("https://", "http://", "data:")):
        return source
    path = Path(source)
    mime_type = mimetypes.guess_type(path.name)[0] or "image/png"
    encoded = base64.b64encode(path.read_bytes()).decode("ascii")
    return f"data:{mime_type};base64,{encoded}"


def seedream_edit(prompt, sources, model="seedream-5-0-260128"):
    if not 1 <= len(sources) <= 10:
        raise ValueError("Seedream принимает от 1 до 10 референсных изображений")
    images = [to_image_input(source) for source in sources]
    response = requests.post(
        API_URL,
        headers=HEADERS,
        json={
            "model": model,
            "prompt": prompt,
            "image": images[0] if len(images) == 1 else images,
            "sequential_image_generation": "disabled",
            "size": "2K",
            "response_format": "url",
            "watermark": False,
        },
        timeout=180,
    )
    response.raise_for_status()
    return response.json()


def save_all_images(result, stem):
    """Сохраняем каждый элемент data[]: последовательная генерация может вернуть несколько изображений."""
    paths = []
    for number, item in enumerate(result["data"], start=1):
        if item.get("b64_json"):
            value = item["b64_json"].split(",", 1)[-1]
            image = base64.b64decode(value + "=" * (-len(value) % 4))
        else:
            download = requests.get(item["url"], timeout=120)
            download.raise_for_status()
            image = download.content
        extension = "png" if image.startswith(b"\x89PNG") else "jpg"
        path = Path(f"{stem}-{number}.{extension}")
        path.write_bytes(image)
        paths.append(path)
    return paths


result = seedream_edit(
    "Place the product from image 1 in the scene from image 2, and apply the "
    "lighting and color style of image 3. Keep the product shape, label, and colors.",
    ["product.png", "scene.jpg", "style.jpg"],
)
for path in save_all_images(result, "seedream-python-edit"):
    print("Сохранено:", path)
```

## Разбиение изображения на прозрачные слои

Seedream 5.0 Flash (`seedream-5-0-flash-260915`) и 5.0 Pro (`seedream-5-0-pro-260628`) умеют разложить готовое изображение на фон и отдельные прозрачные PNG-слои, по одному элементу на слой. Это удобно, чтобы заменить фон, перестроить макет или повторно использовать элементы.

Обе модели берут плату за каждое возвращённое изображение, причём изображение на Pro стоит примерно в 6.7 раза дороже, чем на Flash, поэтому начинайте с Flash. Просьба о прозрачном фоне в обычном промпте альфа-канал не создаёт — его даёт только разбиение на слои.

Запрос на разбиение отличается от обычного редактирования:

* Передайте `layer_decomposition` со значением `true`.
* Передайте в `image` ровно одно изображение — строкой или массивом из одного элемента.
* `prompt` необязателен. Если его не передать или передать пустую строку, модель сама найдёт основные элементы.
* Укажите `size` равным `1K`. Точные размеры в пикселях не принимаются.
* Для разбиения допустимы только уровни `1K`, `1.5K`, `2K` и `auto`.
* Поддерживают только 5.0 Flash и 5.0 Pro. На `seedream-5-0-260128` и `seedream-4-5-251128` этот параметр возвращает HTTP 400 с кодом ошибки `InvalidParameter`.

### Отправка запроса на разбиение

```bash theme={null}
curl --fail-with-body --max-time 360 "https://api.laozhang.ai/v1/images/generations" \
  -H "Authorization: Bearer $LAOZHANG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedream-5-0-flash-260915",
    "image": "https://example.com/your-poster.jpg",
    "layer_decomposition": true,
    "size": "1K",
    "response_format": "url",
    "watermark": false
  }' \
  -o seedream-layers.json
```

Замените URL в `image` на своё изображение, доступное для публичного скачивания, или передайте data URL. Чтобы использовать 5.0 Pro, поменяйте только `model`.

> [!WARNING]
>
> **Разбиение на слои оплачивается за каждое возвращённое изображение: \$0.018 на Flash и \$0.12 на Pro.**
>
> * Сколько слоёв вернуть, решает модель, и для одного и того же изображения число может меняться от запуска к запуску. Киноафиша, разбитая на 6 изображений (фон и 5 слоёв), стоит \$0.108 на Flash и \$0.72 на Pro. Насыщенные изображения могут дать дюжину слоёв и больше; 16 изображений на Flash стоят \$0.288.
> * При `1K` результат из 6 изображений готов меньше чем за минуту на Flash и примерно за 70 секунд на Pro; чем больше слоёв, тем дольше. Ставьте таймаут клиента не меньше 300 секунд. Запрос 2K может выполняться долго и оплачивается, даже если клиент отключился.
> * Если изображение не удаётся разбить, запрос возвращает HTTP 400 и не оплачивается. Его можно повторить.
> * Модель дорисовывает области за удалёнными элементами, поэтому перед коммерческим использованием проверьте фон.

### Ответ с разбиением на слои

Первый элемент `data[]` — фон, каждый следующий — отдельный слой. Ответ ниже сокращён до фона и одного слоя:

```json theme={null}
{
  "data": [
    {
      "url": "https://example.com/base.jpeg",
      "size": "896x1200",
      "output_format": "jpeg",
      "z_index": 0
    },
    {
      "url": "https://example.com/layer.png",
      "size": "916x529",
      "output_format": "png",
      "z_index": 4,
      "bounding_box": {
        "absolute": [260, 716, 619, 924],
        "normalized": [290, 597, 690, 769]
      },
      "name": "Spaceship",
      "description": "Sci-fi spaceship with blue engine glow effects, separate from the background nebula."
    }
  ],
  "usage": {
    "input_images": 1,
    "generated_images": 6
  }
}
```

| Поле | Значение |
| - | - |
| `url` | Временная ссылка на скачивание; сохраните файл вовремя. Ссылка не отдаёт CORS-заголовки, поэтому браузерным клиентам лучше запрашивать `"response_format": "b64_json"` и читать изображения из поля `b64_json` |
| `size` | Размер этого файла в пикселях |
| `output_format` | Фон приходит в формате `output_format` из запроса (по умолчанию `jpeg`), слои — всегда RGBA `png` |
| `z_index` | Порядок наложения: 0 — фон, затем слои от 1 и выше; больший номер лежит сверху |
| `bounding_box.absolute` | Положение слоя на фоне в виде `[left, top, right, bottom]` в пикселях фона |
| `bounding_box.normalized` | Та же рамка в шкале 0–1000 |
| `name`, `description` | Название и описание слоя на английском, которые пишет модель; у фона их нет |
| `usage.generated_images` | Число возвращённых изображений вместе с фоном |

В `usage` есть также `output_tokens`, но списание зависит только от числа изображений.

Размер файла слоя не обязательно совпадает с его рамкой. В примере PNG 916×529 должен лечь в рамку 359×208, поэтому при обратной сборке масштабируйте каждый слой под его рамку `absolute`.

### Сохранение слоёв и обратная сборка

Скрипт читает `seedream-layers.json`, сохраняет каждое изображение с `z_index` и названием в имени файла и с помощью Pillow вставляет каждый слой на фон в его рамку `bounding_box.absolute`. Сначала установите Pillow: `python3 -m pip install pillow`.

```python save_layers.py theme={null}
import json
import re
import sys
import urllib.request
from io import BytesIO
from pathlib import Path

from PIL import Image

response = json.loads(Path(sys.argv[1]).read_text())
canvas = None

# Сначала наименьший z_index: фон, затем слои поверх него.
for item in sorted(response["data"], key=lambda item: item["z_index"]):
    with urllib.request.urlopen(item["url"], timeout=120) as download:
        content = download.read()
    name = re.sub(r"[^a-z0-9]+", "-", item.get("name", "base").lower()).strip("-")
    extension = "png" if item["output_format"] == "png" else "jpg"
    path = Path(f"layer-{item['z_index']:02d}-{name or 'layer'}.{extension}")
    path.write_bytes(content)
    print(f"Сохранено: {path}")

    image = Image.open(BytesIO(content)).convert("RGBA")
    if "bounding_box" not in item:
        canvas = image  # У фона нет bounding_box.
        continue
    left, top, right, bottom = item["bounding_box"]["absolute"]
    layer = image.resize((right - left, bottom - top), Image.LANCZOS)
    canvas.alpha_composite(layer, (left, top))

canvas.save("recomposited.png")
print("Сохранено: recomposited.png")
```

```bash theme={null}
python3 save_layers.py seedream-layers.json
```

Получатся файлы вроде `layer-00-base.jpg` и `layer-04-spaceship.png`, а также `recomposited.png`. Чтобы заменить фон или убрать элемент, перед сборкой подмените файл фона или пропустите нужный слой.

## Параметры

| Параметр | Тип | Обязательный | Описание |
| - | - | - | - |
| `model` | string | Да | ID модели из таблицы в начале страницы, например `seedream-5-0-flash-260915` или `seedream-5-0-260128` |
| `prompt` | string | Да | Описание изображения или инструкция для правки. Для разбиения на слои необязателен |
| `image` | string или array | Для правки | Один референс строкой или до 10 массивом; каждый — публичный URL или data URL. Для разбиения на слои ровно один |
| `size` | string | Нет | Размер результата; в примерах `2K`. Уровни зависят от модели, см. вопрос о `size` в разделе «Частые вопросы» |
| `response_format` | string | Нет | `url` (по умолчанию) или `b64_json` |
| `output_format` | string | Нет | `png` или `jpeg` на 5.0 Flash, 5.0 Pro и 5.0. При разбиении на слои задаёт формат только фона |
| `watermark` | boolean | Нет | `false` — без водяного знака |
| `sequential_image_generation` | string | Нет | `disabled` (по умолчанию) возвращает одно изображение, как в примерах; `auto` включает последовательную генерацию, где число изображений определяет модель (см. «Частые вопросы»). Не поддерживается в 5.0 Flash и 5.0 Pro |
| `layer_decomposition` | boolean | Нет | 5.0 Flash и 5.0 Pro. `true` разбивает один референс на фон и прозрачные слои; см. раздел «Разбиение изображения на прозрачные слои» |

5.0 Flash и 5.0 Pro возвращают HTTP 400, если в запросе есть `sequential_image_generation` (даже `"disabled"`) или `stream`. Кроме того, они игнорируют `n`, так что без разбиения на слои каждый запрос возвращает одно изображение.

Последовательная генерация и разбиение на слои могут вернуть несколько изображений в одном ответе, поэтому сохраняйте каждый элемент `data[]`, как это делают `save_images.py`, `save_all_images` и `save_layers.py`.

## Частые вопросы

### Какую версию Seedream выбрать?

Выбирайте по задаче:

* **Низкая цена, скорость или большие объёмы**: Seedream 5.0 Flash (`seedream-5-0-flash-260915`), \$0.018 за изображение. BytePlus позиционирует её для рекламных креативов, изображений товаров, постеров и другого дизайна с текстом.
* **Наивысшее качество**: Seedream 5.0 Pro (`seedream-5-0-pro-260628`) — для реалистичных портретов, тонкой фактуры материалов и сложных инструкций. При цене \$0.12 за изображение она примерно в 3.4 раза дороже 5.0 и работает медленнее, поэтому для повседневных задач берите 5.0 или Flash.
* **Выход 3K, последовательная генерация или потоковая передача**: Seedream 5.0 (`seedream-5-0-260128`). В документации BytePlus эта модель называется Seedream 5.0 lite; она поддерживает выход `2K` и `3K`, максимум 3K.
* **4K**: Seedream 4.5 (`seedream-4-5-251128`) или 4.0 (`seedream-4-0-250828`). В остальных случаях оставляйте эти две версии, только если от их результата зависит существующий процесс.
* **Прозрачные слои из готового изображения**: разбиение на слои на 5.0 Flash. 5.0 Pro тоже его поддерживает, но изображение стоит примерно в 6.7 раза дороже.

Актуальные цены всех версий — на странице [Цены на API моделей ИИ](https://docs.laozhang.ai/ru/models.md).

### Какие значения принимает `size`? Можно ли получить 4K?

Используйте одну из двух форм, не обе сразу. Либо передайте уровень разрешения и опишите соотношение сторон в промпте (например, «горизонтальный кадр 16:9»), либо точные размеры в пикселях, например `2848x1600`. Уровни разрешения по моделям:

* `seedream-5-0-flash-260915`: `1K`, `1.5K`, `2K` (по умолчанию 2K)
* `seedream-5-0-pro-260628`: `1K`, `2K`
* `seedream-5-0-260128`: `2K`, `3K` (максимум 3K)
* `seedream-4-5-251128`: `2K`, `4K`
* `seedream-4-0-250828`: `1K`, `2K`, `4K`

Точные размеры должны укладываться и в диапазон общего числа пикселей, и в диапазон соотношения сторон:

* Минимум: 2560×1440 (3 686 400 пикселей) для 5.0 и 4.5, 1280×720 (921 600 пикселей) для 4.0.
* Максимум: 4096×4096 для 4.5 и 4.0, уровень 3K для 5.0.
* 5.0 Flash: от 921 600 до 4 624 220 пикселей всего.
* 5.0 Pro: до примерно 4.19 млн пикселей, например `2048x2048` или `2720x1530` для 16:9.
* Соотношение сторон: от 1/16 до 16 на 5.0 Flash, 5.0, 4.5 и 4.0.

Поэтому маленький размер вроде `1024x1024` на 5.0 и 4.5 вызывает ошибку. С уровнем разрешения 5.0 Flash выбирает соотношение сторон по содержанию, так что для фиксированного соотношения передавайте точные пиксели, например `2560x1440`. На 5.0 Flash значения `3K` и `4K` возвращают HTTP 400. Цена за изображение от размера не зависит.

Разбиение на слои принимает только `1K`, `1.5K`, `2K` или `auto`, точные пиксели не поддерживаются.

### Как работает последовательная генерация и как она оплачивается?

Передайте `sequential_image_generation` со значением `auto`, и модель сама решит по промпту, сколько связанных изображений вернуть, — например, «три изображения одного персонажа утром, днём и ночью».

Чтобы ограничить их число, BytePlus описывает параметр `sequential_image_generation_options.max_images` (1–15). Референсы вместе с созданными изображениями не могут превышать 15.

В ответе тогда будет несколько изображений в `data[]`, поэтому сохраняйте каждый элемент. Оплачивается каждое возвращённое изображение: четыре изображения от `seedream-5-0-260128` стоят \$0.14, а референсы бесплатны. Фактическое списание смотрите в [журнале вызовов](https://docs.laozhang.ai/en/faq/call-logs.md).

5.0 Flash и 5.0 Pro последовательную генерацию не поддерживают: любое значение `sequential_image_generation`, включая `"disabled"`, возвращает HTTP 400. Для последовательной генерации используйте 5.0 или отправляйте в Flash или Pro по одному запросу на изображение.

### Как передать локальное изображение и какие есть ограничения?

Превратите файл в data URL вида `data:image/png;base64,<данные Base64>`, указав формат строчными буквами, например `png` или `jpeg`. Это делает вспомогательная функция из раздела «Объединение референсов на Python».

BytePlus устанавливает для каждого референса такие ограничения:

* Формат: jpeg, png, webp, bmp, tiff, gif, heic или heif.
* Размер файла: до 30 МБ.
* Размеры: ширина и высота больше 14 пикселей, всего не больше 6000×6000 пикселей.
* Соотношение сторон: от 1/16 до 16.

Публичный URL должен скачиваться напрямую. Для больших изображений лучше использовать публичный URL: кодирование в Base64 увеличивает тело запроса примерно на треть.

### Как убрать водяной знак?

Передайте `"watermark": false`, как во всех примерах на этой странице. У BytePlus `watermark` по умолчанию равен `true` и добавляет в правый нижний угол метку «AI generated», поэтому для чистого изображения явно задавайте `false`.

### Сколько живут ссылки на результат? Можно ли получить Base64?

По данным BytePlus, ссылки на изображения действуют 24 часа после генерации. Скачивайте изображение сразу после ответа и храните у себя; не сохраняйте полученный URL как постоянный адрес.

Чтобы получить изображение прямо в ответе, передайте `response_format` со значением `b64_json`. Скрипт `save_images.py` и примеры на Python поддерживают оба формата.

### Списываются ли деньги за неудачные запросы?

Нет. Ответ с кодом не 200, например ошибка параметров или блокировка модерацией, не оплачивается; платите вы только за возвращённые изображения.

Таймаут на стороне клиента — не то же самое, что ошибка. Сервер мог уже создать изображение и списать оплату, поэтому перед повторной отправкой проверьте [журнал вызовов](https://docs.laozhang.ai/en/faq/call-logs.md). Окончательная запись о списаниях — именно журнал вызовов.

Чтобы не обрывать ещё выполняющиеся запросы, задавайте таймаут клиента по модели:

* 5.0 Flash: не меньше 60 секунд. По данным BytePlus, модель укладывается в 20 секунд; с десятью референсами рассчитывайте примерно на 30 секунд.
* 5.0 Pro: не меньше 240 секунд, потому что запрос обычно занимает около 2 минут.
* Разбиение на слои на 5.0 Flash или 5.0 Pro: не меньше 300 секунд при `1K`.

## Связанные материалы

* [Запуск Seedream 5.0 Flash и 5.0 Pro](https://docs.laozhang.ai/en/announcements/seedream-5-0-flash-pro-2026-09.md) (на английском): цены, заметки о переходе и сравнение версий
* [Сравнение API изображений](https://docs.laozhang.ai/ru/api-capabilities/image-generation-guide.md): Seedream рядом с другими моделями изображений
* [Images API](https://docs.laozhang.ai/ru/api-reference/images.md): общий формат запроса и ответа
* [Цены на API моделей ИИ](https://docs.laozhang.ai/ru/models.md): актуальные цены и группы Seedream
* [Журнал вызовов](https://docs.laozhang.ai/en/faq/call-logs.md): модель и списание по каждому запросу

## Источники

* [API генерации изображений BytePlus ModelArk](https://docs.byteplus.com/en/docs/ModelArk/1541523) (на английском): официальные параметры запроса Seedream, диапазоны `size` и срок жизни ссылок
* [Руководство BytePlus по генерации изображений](https://docs.byteplus.com/en/docs/ModelArk/1824121) (на английском): сравнение моделей, последовательная генерация и ограничения входных изображений
* [Руководство пользователя Seedream 4.0](https://docs.byteplus.com/en/docs/ModelArk/seedream-4-0-user-manual) (на английском): советы по промптам и примеры от BytePlus
* [Модели и цены в консоли](https://api.laozhang.ai/account/pricing): цены, доступные вашему аккаунту


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.