Перейти к основному содержанию
FLUX.2 редактирует изображения через тот же JSON-эндпоинт, что и генерирует: передайте одно изображение, чтобы изменить его, или объедините несколько референсов. Запросы оплачиваются за вызов, а ссылка на результат действует 10 минут после генерации. Начните с flux-2-pro. Black Forest Labs рекомендует flux-2-max для самых точных правок, а flux-2-flex — для тонкого контроля, например отрисовки текста и мелких деталей. Запрос у всех трёх моделей одинаковый.

Подготовка

1

Создайте API-ключ

Модели FLUX.2 оплачиваются за вызов. В разделе Управление токенами создайте ключ (или измените существующий) и выберите Режим оплаты (计费模式) — «сначала по использованию» (按量优先, рекомендуется) или «оплата за вызов» (按次计费). Ключ с режимом «сначала по использованию» вызывает и модели с оплатой за вызов, и модели с оплатой по использованию; ключ с оплатой за вызов — только модели с оплатой за вызов.Храните ключ в переменной окружения на сервере.Диалог создания токена в консоли LaoZhang API с режимом оплаты «оплата за вызов» (按次计费)
2

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

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

Сохраните скрипт скачивания

Сохраните скрипт как save_images.py. Примеры на cURL запускают его для файла ответа, чтобы скачать все изображения. FLUX возвращает только URL, но скрипт умеет декодировать и b64_json, который возвращают некоторые другие модели изображений:
save_images.py

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

Добавьте input_image в запрос генерации, и он станет редактированием. Замените URL на публично доступное изображение:
Скрипт выведет Сохранено: flux-edit-1.png. Референс скачивается во время запроса, поэтому URL должен открываться без входа в аккаунт, cookie и проверок на бота.
Чтобы объединить референсы, отправляйте JSON на /v1/images/generations и кладите каждый референс в своё поле input_image.
  • Multipart-эндпоинт /v1/images/edits принимает один файл в поле image и объединять референсы не умеет.

Редактирование локального файла

Чтобы отредактировать файл со своего компьютера, передайте его как data URL с MIME-типом, соответствующим файлу, например data:image/png;base64,... для PNG. Тело запроса через heredoc не даёт большому изображению попасть в командную строку:

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

Для дополнительных референсов добавьте поля от input_image_2 до input_image_8 и называйте их в промпте «изображение 1», «изображение 2» и так далее — в порядке полей. Этот пример берёт три PNG-файла из текущего каталога:

Редактирование на Python

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

Параметры

Размер задаётся либо через size, либо через width и height, но не обоими способами сразу. Распространённые значения size перечислены в разделе о размере изображения на странице Генерация FLUX.2.

Обработка ответа

В ответе приходит одно изображение в data[0].url. FLUX не возвращает b64_json, поэтому не передавайте response_format. Ссылка действует 10 минут после генерации: скачивайте изображение сразу после ответа, особенно в пакетных задачах. Изображение приходит в JPEG, если не указать output_format со значением png.

Советы по промптам

  • Называйте источники «изображение 1», «изображение 2», «изображение 3» и так далее — в порядке полей.
  • Перечислите, что нужно сохранить из каждого референса: логотип, лицо, цвет товара.
  • Укажите, что результат должен быть одним цельным изображением.
  • Укажите, чего избегать: коллажа, разделённого кадра, рамок, подписей.

Ошибки и оплата

  • HTTP 400: проверьте имена полей, число референсов и размер изображения.
    • Имена полей: input_image, затем input_image_2 и далее.
    • Число референсов: не больше 8.
    • Размер: кратно 16, не меньше 64 пикселей, до ~4 Мп, задаётся через size или через width и height.
  • Референс не загружается: URL должен быть публичным. Иначе передайте файл как data URL.
  • Ссылка на результат больше не работает: она истекла через 10 минут после генерации. Повторите запрос и скачайте результат сразу.
  • HTTP 401: проверьте ключ и заголовок Authorization: Bearer.
  • HTTP 429, 5xx или таймаут: повторите запрос с нарастающей паузой. После таймаута сначала проверьте журнал вызовов, чтобы не заплатить дважды.
Каждый запрос оплачивается по цене за вызов для выбранной модели. В журнале вызовов видны модель и списание по каждому запросу.

Прежние модели FLUX Kontext

flux-kontext-pro и flux-kontext-max остаются в каталоге для существующих интеграций. Вместо size они принимают поле aspect_ratio; подробности — в разделе о FLUX Kontext на странице Генерация FLUX.2. Новые правки стройте на FLUX.2.

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

Можно ли отредактировать только часть изображения?

Да, описав её словами. Поля для маски в запросе нет, поэтому назовите в промпте элемент, который нужно изменить, и укажите, что должно остаться прежним.

Редактирование стоит дороже генерации?

Нет. FLUX.2 оплачивается за вызов, поэтому правка стоит столько же, сколько генерация, — независимо от того, один референс вы передали или восемь, и от размера результата. Фактическое списание смотрите в журнале вызовов.

Для редактирования и генерации используется одна модель?

Да. flux-2-pro, flux-2-flex и flux-2-max умеют и то и другое. Запрос с input_image — это редактирование, без него — генерация нового изображения, как на странице Генерация FLUX.2.

Можно ли редактировать через images.edit() в OpenAI SDK?

Только если изображение одно. images.edit() отправляет multipart/form-data на /v1/images/edits, а этот эндпоинт принимает одно изображение и не объединяет референсы. Вместо него используйте client.images.generate() и передавайте input_image (и нумерованные поля для остальных референсов) в extra_body как публичные URL или data URL. Вспомогательная функция на Python на этой странице делает то же самое через requests.

Связанные материалы и источники