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

# FLUX.2 API: генерация изображений, цены и подключение

> Как создавать изображения моделями flux-2-pro, flux-2-flex и flux-2-max через один JSON-эндпоинт LaoZhang API, задавать размер и вовремя сохранять результат.

Для большинства задач FLUX.2 берите `flux-2-pro`. Генерация и редактирование идут через один JSON-эндпоинт с оплатой за вызов, а ссылка на результат действует 10 минут после генерации, поэтому скачивайте изображение сразу.

| Параметр | Значение |
| - | - |
| `flux-2-pro` | \$0.03 за вызов; рекомендуемая модель по умолчанию |
| `flux-2-flex` | \$0.06 за вызов; по описанию Black Forest Labs, специализирована на отрисовке текста и мелких деталях |
| `flux-2-max` | \$0.07 за вызов; модель Black Forest Labs с самым точным следованием промпту |
| Цены | Публичные цены на 24 сентября 2026 года; см. [Цены на API моделей ИИ](https://docs.laozhang.ai/ru/models.md) |
| Эндпоинт | `POST https://api.laozhang.ai/v1/images/generations` с телом JSON |
| Запрос | `model`, `prompt` и размер изображения |
| Результат | URL изображения в `data[0].url`, действует 10 минут |
| Редактирование | Добавьте референсные изображения в запрос к тому же эндпоинту; см. [Редактирование FLUX.2](https://docs.laozhang.ai/ru/api-capabilities/flux-image-edit.md) |

Формат запроса у всех трёх моделей одинаковый.

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

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

Модели FLUX.2 оплачиваются за вызов. В разделе [Управление токенами](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
```

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

Этот запрос создаёт горизонтальное изображение 1792×1024 и записывает ответ в `flux-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": "flux-2-pro",
    "prompt": "Рубиново-красный ретро-робот на жёлтом скейтборде перед бирюзовой стеклянной оранжереей, чистый стиль продуктовой иллюстрации",
    "size": "1792x1024"
  }' \
  -o flux-generation.json
```

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

В ответе приходит `data[0].url`. Ссылка перестаёт работать через 10 минут после генерации, поэтому скачивайте изображение сразу. FLUX возвращает только URL, без `b64_json`. Сохраните скрипт как `save_images.py`: он скачивает все изображения из ответа, а заодно умеет декодировать `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 flux-generation.json flux-robot
```

Скрипт выведет `Сохранено: flux-robot-1.jpg`. FLUX.2 возвращает JPEG, если не указать `output_format` со значением `png`.

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

```python theme={null}
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": "flux-2-pro",
        "prompt": "Кинематографичное продуктовое фото прозрачной умной колонки на мраморном столе",
        "size": "1024x1024",
    },
    timeout=240,
)
response.raise_for_status()
image_url = response.json()["data"][0]["url"]

# Ссылка на результат действует 10 минут, поэтому скачиваем сразу.
download = requests.get(image_url, timeout=120)
download.raise_for_status()
image = download.content

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

## Размер изображения

Размер задаётся либо строкой `size` в стиле OpenAI, либо полями `width` и `height` в пикселях. Используйте один из способов, не оба сразу.

| `size` | Результат | Для чего подходит |
| - | - | - |
| `1024x1024` | 1024×1024 | Квадратные изображения, аватары, фото товаров |
| `1792x1024` | 1792×1024 | Горизонтальные обложки, баннеры, первые экраны сайтов |
| `1024x1792` | 1024×1792 | Вертикальные постеры, мобильные обложки, сторис |

`width` и `height` должны быть кратны 16 и не меньше 64 пикселей, а общий размер — не больше примерно 4 мегапикселей (например, 2048×2048). При редактировании работают те же поля размера.

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

Чтобы отредактировать изображение, а не генерировать только по тексту, добавьте `input_image` в тот же 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": "flux-2-pro",
    "prompt": "Сохрани тот же главный объект. Замени фон на чистый бледно-голубой студийный фон и сохрани исходное освещение.",
    "input_image": "https://example.com/source.png",
    "size": "1792x1024",
    "output_format": "png"
  }' \
  -o flux-edit.json

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

Несколько референсов передаются только через эти JSON-поля этого эндпоинта. Локальные файлы, до восьми референсов, вспомогательная функция на Python и промпты для редактирования описаны в разделе [Редактирование FLUX.2](https://docs.laozhang.ai/ru/api-capabilities/flux-image-edit.md).

## Параметры

| Параметр | Тип | Обязательный | Описание |
| - | - | - | - |
| `model` | string | Да | `flux-2-pro`, `flux-2-flex` или `flux-2-max` |
| `prompt` | string | Да | Что нужно сгенерировать |
| `size` | string | Нет | Размер, например `1792x1024`; по умолчанию `1024x1024` |
| `width`, `height` | integer | Нет | Размер в пикселях: кратно 16, не меньше 64, всего до \~4 Мп; вместо `size` |
| `n` | integer | Нет | Число изображений; поддерживается только `1` |
| `output_format` | string | Нет | `jpeg` (по умолчанию) или `png` |
| `seed` | integer | Нет | Фиксированный seed для воспроизводимого результата |
| `input_image` … `input_image_8` | string | Нет | Референсные изображения: публичные URL или data URL; с ними запрос становится редактированием |

## Совместимость с прежними моделями: FLUX Kontext

`flux-kontext-pro` (\$0.035 за вызов) и `flux-kontext-max` (\$0.07 за вызов) остаются доступны для существующих интеграций. Эндпоинт тот же, отличия такие:

* Вместо `size` они принимают поле `aspect_ratio`. В OpenAI Python SDK передавайте его через `extra_body`.
* Подходит любое соотношение сторон от `3:7` до `7:3`, размер результата остаётся около одного мегапикселя.

Распространённые соотношения и примерный размер результата:

| `aspect_ratio` | Примерный размер |
| - | - |
| `1:1` | 1024×1024 |
| `3:2` / `2:3` | 1248×832 / 832×1248 |
| `16:9` / `9:16` | 1408×792 / 792×1408 |
| `21:9` | 1680×720 |
| `7:3` / `3:7` | 1544×662 / 662×1544 |

Для новой генерации и редактирования используйте FLUX.2.

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

### Нужно ли опрашивать результат, как в BFL API?

Нет. BFL API возвращает ID задачи и `polling_url`, который нужно опрашивать до статуса `Ready`. LaoZhang API дожидается изображения в рамках того же запроса и возвращает его в `data[0].url`.

Вместо опроса задайте клиенту большой таймаут; в примере на Python это 240 секунд. Если запрос проходит через обратный прокси или serverless-функцию, увеличьте и их таймаут или лимит выполнения, иначе соединение закроется раньше, чем изображение будет готово.

### Почему ссылка на изображение перестаёт работать?

Ссылки на результат действуют 10 минут после генерации — столько же, сколько живут ссылки на результаты у самого BFL. Скачивайте каждое изображение на сервер сразу после ответа, храните его у себя и передавайте в базу данных или фронтенд собственный адрес.

В пакетных задачах скачивайте каждый результат, как только завершился его запрос, а не после всей пачки. Параллельность держите такой, чтобы скачивание успевало за генерацией.

Истёкшую ссылку обновить нельзя. Отправьте запрос заново — он будет оплачен как новый вызов.

### Как получать воспроизводимый результат?

Передавайте один и тот же `seed` с той же моделью, промптом и размером. Это удобно, когда вы дорабатываете один дизайн.

### Как добиться точного текста и фирменных цветов?

Для изображений с большим количеством текста — постеров, инфографики, макетов интерфейсов — сначала попробуйте `flux-2-flex`: BFL позиционирует её для отрисовки текста и мелких деталей. Если нужно максимальное качество и самое точное следование промпту, берите `flux-2-max`.

Чтобы попасть в фирменные цвета, укажите в промпте hex-коды, например `the mug is #FF5A1F`. Для сложных сцен можно описать объект, фон, освещение и стиль JSON-строкой и передать её в `prompt`.

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

Нет. FLUX.2 оплачивается за вызов: запрос, вернувший изображение, оплачивается один раз, а ответ с кодом не 200 (например, ошибка параметров или блокировка модерацией) не оплачивается.

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

### Можно ли использовать OpenAI SDK?

Да, через `client.images.generate()`:

* В `base_url` укажите `https://api.laozhang.ai/v1`.
* `model`, `prompt` и `size` передавайте как обычно.
* Поля, специфичные для FLUX, например `width`, `height` и `seed`, передавайте в `extra_body`.

URL изображения находится в `response.data[0].url`; скачивайте его сразу.

Для редактирования тоже используйте `client.images.generate()` и передавайте `input_image` в `extra_body`: `client.images.edit()` принимает только одно изображение. Подробнее — в частых вопросах на странице [Редактирование FLUX.2](https://docs.laozhang.ai/ru/api-capabilities/flux-image-edit.md).

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

* [Редактирование FLUX.2](https://docs.laozhang.ai/ru/api-capabilities/flux-image-edit.md): правка одного изображения или объединение до восьми референсов
* [Сравнение API изображений](https://docs.laozhang.ai/ru/api-capabilities/image-generation-guide.md): FLUX.2 рядом с другими моделями изображений
* [Images API](https://docs.laozhang.ai/ru/api-reference/images.md): общий формат запроса и ответа
* [Цены на API моделей ИИ](https://docs.laozhang.ai/ru/models.md): актуальные цены и группы FLUX
* [Журнал вызовов](https://docs.laozhang.ai/en/faq/call-logs.md): модель и списание по каждому запросу
* [Модели и цены в консоли](https://api.laozhang.ai/account/pricing): цены, доступные вашему аккаунту
* [Black Forest Labs: обзор FLUX.2](https://docs.bfl.ai/flux_2/flux2_overview) (на английском): для чего создана каждая версия FLUX.2, управление цветом через hex и структурированные промпты
* [Black Forest Labs: руководство по интеграции API](https://docs.bfl.ai/api_integration/integration_guidelines) (на английском): асинхронный опрос в BFL и 10-минутные ссылки на результаты


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