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

# FLUX 3 Image Генерация изображений

> Генерация по тексту, редактирование одного изображения и до 10 референсов, с различными соотношениями сторон и разрешением до 4k.

<Info>
  Этот эндпоинт работает асинхронно. При успешной отправке возвращается `task_id`. Получайте статус и изображения через [запрос состояния задачи](/ru/api-reference/tasks/status). Остановите опрос при статусе `completed` или `failed`. Генерация в `4k` может занять несколько минут; рекомендуемый общий тайм-аут ожидания — 10 минут.
</Info>

<RequestExample>
  ```bash cURL theme={null}
  curl --request POST \
    --url https://api.apimart.ai/v1/images/generations \
    --header 'Authorization: Bearer <token>' \
    --header 'Content-Type: application/json' \
    --data '{
      "model": "flux-3-image",
      "prompt": "Сверхширокий кинематографический кадр окутанной туманом прибрежной дороги на рассвете, один ретроавтомобиль с включёнными фарами",
      "aspect_ratio": "21:9",
      "resolution": "2k"
    }'
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://api.apimart.ai/v1/images/generations",
      headers={"Authorization": "Bearer <token>"},
      json={
          "model": "flux-3-image",
          "prompt": "Сверхширокий кинематографический кадр окутанной туманом прибрежной дороги на рассвете, один ретроавтомобиль с включёнными фарами",
          "aspect_ratio": "21:9",
          "resolution": "2k"
      }
  )
  print(response.json())
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch("https://api.apimart.ai/v1/images/generations", {
    method: "POST",
    headers: {
      Authorization: "Bearer <token>",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      model: "flux-3-image",
      prompt: "Сверхширокий кинематографический кадр окутанной туманом прибрежной дороги на рассвете, один ретроавтомобиль с включёнными фарами",
      aspect_ratio: "21:9",
      resolution: "2k"
    })
  });
  console.log(await response.json());
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "code": 200,
    "data": [
      {
        "status": "submitted",
        "task_id": "task_01K..."
      }
    ]
  }
  ```
</ResponseExample>

## Заголовки запроса

<ParamField header="Authorization" type="string" required>
  Bearer-аутентификация в формате `Bearer <token>`, где `<token>` — ваш APIMart API Key.
</ParamField>

## Параметры запроса

<ParamField body="model" type="string" required>
  Фиксированное значение: `flux-3-image`.
</ParamField>

<ParamField body="prompt" type="string" required>
  Описание сцены для генерации по тексту или инструкции по редактированию. Негативные промпты не поддерживаются; описывайте то, что хотите получить.

  Используйте теги и JSON bbox в `prompt`, чтобы задать композицию или области локального редактирования. Примеры приведены ниже.
</ParamField>

<ParamField body="image_urls" type="string[]">
  Список референсных изображений, максимум 10. Поддерживаются общедоступные HTTP(S) URL или ввод в Base64.

  Без референсов выполняется генерация по тексту. Одно изображение можно передать для редактирования, несколько — для использования в качестве референсов.
</ParamField>

<ParamField body="aspect_ratio" type="string" default="auto">
  Соотношение сторон результата. Поддерживаемые значения:

  `21:9`, `2:1`, `16:9`, `3:2`, `7:5`, `4:3`, `5:4`, `1:1`, `4:5`, `3:4`, `5:7`, `2:3`, `9:16`, `1:2`, `9:21` или `auto`.

  Также принимается формат `16x9`. При `auto`:

  * Редактирование или несколько референсов: используется соотношение сторон первого референса.
  * Генерация по тексту: определяется промптом; если соотношение не определено, используется `1:1`.
</ParamField>

<ParamField body="size" type="string">
  Совместимый параметр соотношения сторон. Может заменять `aspect_ratio` и принимает те же значения. Рекомендуется использовать только одно из этих полей.

  Размеры в пикселях, например `1024x1024`, не поддерживаются и возвращают HTTP 400. Выбирайте разрешение с помощью `resolution`.
</ParamField>

<ParamField body="resolution" type="string" default="1k">
  Уровень разрешения результата. Поддерживаются `768sq`, `1k`, `1.5k`, `2k` и `4k` без учёта регистра. `768` эквивалентен `768sq`.

  Этот параметр определяет тарифную категорию. Если он не указан, генерация и оплата выполняются как для `1k`. Неподдерживаемые значения, например `3k`, возвращают HTTP 400.
</ParamField>

<ParamField body="safety_tolerance" type="integer" default="2">
  Допустимый уровень контента с точки зрения безопасности: 0–4. Значение 0 — самое строгое.
</ParamField>

<ParamField body="grounding" type="boolean" default="true">
  Разрешать ли поиск в интернете или поиск изображений перед генерацией. Для отключения передайте `false`.

  Требуется логическое значение, а не строки `"false"` или `"true"`.
</ParamField>

<ParamField body="n" type="integer" default="1">
  Каждый запрос создаёт 1 изображение; поддерживается только `1`. Для нескольких изображений отправляйте отдельные задачи. Значения больше 1 возвращают HTTP 400.
</ParamField>

## Неподдерживаемые параметры

Следующие параметры при передаче возвращают HTTP 400, а не игнорируются:

* `width`, `height`
* Размер в пикселях в `size`, например `1024x1024`
* `seed`, `steps`, `guidance`
* `output_format`, `negative_prompt`, `prompt_upsampling`, `mask_url`

Для более высокого разрешения используйте `resolution`, для определённого соотношения сторон — `aspect_ratio`.

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

```json theme={null}
{
  "model": "flux-3-image",
  "prompt": "Сделай автомобиль на изображении красным, сохрани исходную дорогу, фон и освещение",
  "image_urls": ["https://example.com/car.jpg"],
  "aspect_ratio": "auto",
  "resolution": "2k"
}
```

Замените пример URL на общедоступный URL изображения. Для нескольких референсов передайте несколько адресов в `image_urls`, всего не более 10 изображений.

## Несколько референсов

Редактирование, локальное редактирование и композиция используют тот же эндпоинт и модель этой страницы с оплатой по `resolution`. Референсы нумеруются по порядку: `ref_image_0` для первого, `ref_image_1` для второго. В промпте также можно писать `Image 1` / `Image 2`.

```json theme={null}
{
  "model": "flux-3-image",
  "prompt": "Преобразуй Image 1 в стиль Image 2.",
  "image_urls": [
    "https://example.com/subject.jpg",
    "https://example.com/style.jpg"
  ],
  "aspect_ratio": "auto"
}
```

## Локальное редактирование (bounding box)

Начните `prompt` с инструкций на естественном языке и обозначьте элементы с помощью `<тегов>`, например `<car_1>`. Затем в той же строке добавьте JSON-массив, по одному объекту на рамку. bbox не является отдельным параметром запроса.

| Поле | Описание |
| - | - |
| `id` | Соответствует тегу элемента в промпте, без угловых скобок. |
| `from` | Источник элемента, например `ref_image_0`; для новых или перерисовываемых элементов используйте `null`. |
| `src_bbox` | Рамка в исходном изображении; также должна быть `null`, если `from` равен `null`. |
| `tgt_bbox` | Рамка в результате; совпадение с `src_bbox` сохраняет позицию, отличие перемещает элемент. |
| `desc` | Описывает, как изменить элемент или что сохранить. |

Все поля рамок (`src_bbox`, `tgt_bbox`, `bbox`) используют `[верх, лево, низ, право]`, то есть `[y1, x1, y2, x2]`, на **нормализованной сетке 0–1000**: `[0,0]` в левом верхнем углу, `[1000,1000]` в правом нижнем. Это не пиксельные координаты.

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

```json theme={null}
{
  "model": "flux-3-image",
  "prompt": "В <ref_image_0> сделай автомобиль <car_1> красным и сохрани фон <background_1>. [{\"id\":\"car_1\",\"from\":null,\"src_bbox\":null,\"tgt_bbox\":[250,300,750,800],\"desc\":\"Красный автомобиль с сохранением исходной формы и ориентации.\"},{\"id\":\"background_1\",\"from\":\"ref_image_0\",\"src_bbox\":[0,0,1000,1000],\"tgt_bbox\":[0,0,1000,1000],\"desc\":\"Сохранить исходную дорогу, фон и освещение.\"}]",
  "image_urls": [
    "https://example.com/car.jpg"
  ],
  "aspect_ratio": "auto",
  "resolution": "2k"
}
```

### Перемещение элемента

Поместите следующий объект в массив bbox в конце промпта. `from` задаёт исходное изображение, `src_bbox` — прежнее положение, `tgt_bbox` — новое. В текстовой инструкции также используйте соответствующий тег `<knight_1>`.

```json theme={null}
{
  "id": "knight_1",
  "from": "ref_image_0",
  "src_bbox": [
    500,
    150,
    850,
    350
  ],
  "tgt_bbox": [
    194,
    55,
    544,
    255
  ],
  "desc": "Миниатюрная серая фигурка рыцаря амигуруми."
}
```

## Композиция при генерации по тексту

Композицию можно задавать и без референсов. Каждая рамка использует `id`, `bbox` и `desc`. Явно укажите `aspect_ratio`, так как координатная сетка растягивается с соотношением сторон.

```json theme={null}
{
  "model": "flux-3-image",
  "aspect_ratio": "1:1",
  "prompt": "Минималистичная иллюстрация чёрного бегущего силуэта <silhouette_1> на однотонном жёлто-зелёном фоне <background_1>. [{\"id\":\"background_1\",\"bbox\":[0,0,1000,1000],\"desc\":\"Неоновый жёлто-зелёный фон с лёгкой текстурой бумаги.\"},{\"id\":\"silhouette_1\",\"bbox\":[150,150,850,850],\"desc\":\"Чёрный бегущий силуэт с точечной текстурой.\"}]"
}
```

### Примечания

* JSON bbox является частью строки `prompt`. При ручном составлении JSON запроса экранируйте внутренние двойные кавычки как `\"`. SDK или методы сериализации JSON могут сделать это автоматически.

* Также перечислите области, которые должны остаться без изменений, и опишите требования к сохранению в `desc`.

* Теги элементов в промпте должны однозначно соответствовать значениям `id` в JSON. Идентификаторы референсов, такие как `<ref_image_0>`, указывают на входные изображения.

* У этой модели нет параметра `mask`, а `mask_url` не поддерживается; передача `mask_url` возвращает HTTP 400. Редактирование bbox не использует параметр загрузки маски.

## Ответ на отправку

<ResponseField name="code" type="integer">
  Код состояния ответа. `200` означает успех.
</ResponseField>

<ResponseField name="data" type="array">
  Результат отправки задачи.

  <Expandable title="Показать поля задачи">
    <ResponseField name="status" type="string">
      `submitted` означает успешную отправку, но не завершение генерации.
    </ResponseField>

    <ResponseField name="task_id" type="string">
      ID задачи для запроса состояния и результатов.
    </ResponseField>
  </Expandable>
</ResponseField>

## Запрос результатов задачи

```bash theme={null}
curl --request GET \
  --url https://api.apimart.ai/v1/tasks/task_01K... \
  --header 'Authorization: Bearer <token>'
```

Пример успешного ответа (URL изображения — заглушка):

```json theme={null}
{
  "code": 200,
  "data": {
    "status": "completed",
    "result": {
      "images": [
        {
          "url": ["https://example.com/generated-image.jpg"]
        }
      ]
    }
  }
}
```

Получайте ссылки на изображения из массива `data.result.images[0].url`. Если статус задачи — `failed`, проверьте возвращённое сообщение об ошибке и прекратите ожидание изображения.

## Разрешение и оплата

Оплата за изображение. Цена зависит только от `resolution`, а не от соотношения сторон или количества референсов. Доплаты за референсы нет.

| Уровень разрешения | Примерный размер результата |
| - | - |
| `768sq` | Около 768×768 |
| `1k` (по умолчанию) | Около 1MP |
| `1.5k` | Около 2MP |
| `2k` | Около 4MP |
| `4k` | Около 16MP |

Размеры приблизительные; фактические размеры в пикселях определяются возвращённым изображением. Цены для каждого уровня указаны в [тарифах моделей](https://apimart.ai/pricing).

При ошибке задачи или блокировке модерацией средства возвращаются полностью.

## Частые ошибки параметров

| Запрос | Результат и действие |
| - | - |
| `resolution: "3k"` | HTTP 400; используйте один из 5 поддерживаемых уровней |
| `size: "1024x1024"` | HTTP 400; задайте соотношение сторон и выберите разрешение через `resolution` |
| `n: 2` | HTTP 400; за запрос создаётся только 1 изображение |
| 11 референсов | HTTP 400; передайте не более 10 |
| `grounding: "false"` | HTTP 400; используйте логическое значение `false` |


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