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

# MAI-Image-2.6 Генерация изображений

> Генерация по тексту, редактирование одного изображения, композиция из максимум 5 референсов и веб-поиск. Версии высокого качества и Flash.

## Выбор модели

| ID модели | Особенности |
| - | - |
| `mai-image-2.6` | Версия высокого качества для задач с приоритетом качества изображения |
| `mai-image-2.6-flash` | Более быстрая и дешёвая версия с немного меньшим качеством |

Возможности и параметры моделей одинаковы; за запрос создаётся только 1 изображение. Актуальные цены см. в [тарифах моделей](https://apimart.ai/pricing).

<Info>
  Эндпоинт асинхронный. После отправки получите ID из `data[0].task_id`, затем используйте [запрос состояния задачи](/ru/api-reference/tasks/status). Опрос каждые 3–5 секунд, рекомендуемый общий тайм-аут — 3 минуты. Остановитесь при `completed` или `failed`.
</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": "mai-image-2.6",
      "prompt": "Фотореалистичный плакат университетского кампуса на закате, кинематографическое освещение",
      "size": "16: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": "mai-image-2.6",
          "prompt": "Фотореалистичный плакат университетского кампуса на закате, кинематографическое освещение",
          "size": "16:9",
          "resolution": "2K"
      }
  )
  response.raise_for_status()
  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: "mai-image-2.6",
      prompt: "Фотореалистичный плакат университетского кампуса на закате, кинематографическое освещение",
      size: "16:9",
      resolution: "2K"
    })
  });
  if (!response.ok) throw new Error(await response.text());
  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>
  ID модели: `mai-image-2.6` или `mai-image-2.6-flash`.
</ParamField>

<ParamField body="prompt" type="string" required>
  Описание изображения или инструкции по редактированию. Поддерживаются китайский и английский, максимум около 32 000 токенов (не символов).
</ParamField>

<ParamField body="size" type="string" default="1:1">
  Принимает соотношение сторон (например `16:9`), размеры в пикселях (например `1536x1024`) или `auto`.

  * Соотношение сторон: любое отношение целых чисел от `1:4` до `4:1`, совместно с `resolution`.
  * Пиксели: форматы `ширинаxвысота`, `ширина*высота` или `ширина×высота`. В этом режиме `resolution` не определяет размеры.
  * `auto`: модель выбирает соотношение по промпту.

  Только для генерации по тексту. При наличии референсов размеры определяет модель.
</ParamField>

<ParamField body="resolution" type="string" default="1K">
  Поддерживаются `1K` и `2K`, включая нижний регистр. Другие уровни, например `4K`, возвращают HTTP 400.

  Определяет размерный уровень при генерации по тексту с соотношением сторон. Не участвует в расчёте при точных пиксельных размерах. Не задаёт размеры при генерации по изображению.
</ParamField>

<ParamField body="width" type="integer">
  Точная ширина в пикселях. Обязательно вместе с `height`. Эта пара имеет приоритет над `size` и `resolution` при генерации по тексту.

  Ширина и высота — минимум 768 каждая, общее число пикселей — не более 2 359 296. Рекомендуются кратные 32 значения; иначе каждая сторона округляется вниз до кратного 32.

  Этот параметр не определяет размеры при генерации по изображению.
</ParamField>

<ParamField body="height" type="integer">
  Точная высота в пикселях, обязательно вместе с `width`, с указанными выше ограничениями. Не определяет размеры при генерации по изображению.
</ParamField>

<ParamField body="image_urls" type="string[]">
  Список максимум из 5 референсов. Без него — генерация по тексту, с одним — редактирование, с несколькими — композиция.

  Каждый элемент поддерживает общедоступный HTTP(S) URL изображения или Base64 Data URL, например `data:image/png;base64,...`.

  Поддерживаются JPEG и PNG; WEBP и GIF автоматически преобразуются в PNG. URL должны быть общедоступны, иначе задача завершится ошибкой.

  **При генерации по изображению размеры определяет модель по референсам**: около 1 миллиона пикселей с близким соотношением сторон. `size`, `resolution`, `width` и `height` не задают эти размеры.
</ParamField>

<ParamField body="auto_aspect_ratio" type="boolean" default="false">
  При `true` модель выбирает соотношение по промпту, что эквивалентно `size: "auto"`.
</ParamField>

<ParamField body="web_grounding" type="boolean" default="false">
  При `true` перед генерацией выполняется поиск актуальной информации, полезный для реальных людей, мест или событий.
</ParamField>

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

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

| Потребность | Параметры |
| - | - |
| Квадрат по умолчанию | Не задавать размеры: `1:1` + `1K`, результат 1024×1024 |
| Разрешение + соотношение сторон | `size: "16:9"`, `resolution: "2K"` |
| Точные пиксели | `size: "1536x1024"` либо `width: 1536`, `height: 1024` |
| Автоматическое соотношение | `size: "auto"` или `auto_aspect_ratio: true` |

Приоритет размеров при генерации по тексту: пара `width` / `height` → `size` в пикселях → `size` как соотношение вместе с `resolution`.

### Уровни и соотношения сторон

| Соотношение сторон | 1K | 2K |
| - | - | - |
| 1:1 | 1024×1024 | 1536×1536 |
| 4:3 / 3:4 | 1152×864 / 864×1152 | 1760×1312 / 1312×1760 |
| 3:2 / 2:3 | 1248×832 / 832×1248 | 1856×1248 / 1248×1856 |
| 16:9 / 9:16 | 1344×768 / 768×1344 | 2048×1152 / 1152×2048 |
| 2:1 / 1:2 | 1536×768 / 768×1536 | 2144×1056 / 1056×2144 |
| 21:9 / 9:21 | 1792×768 / 768×1792 | 2336×992 / 992×2336 |
| 4:1 / 1:4 | 3072×768 / 768×3072 | 3072×768 / 768×3072 |

Размеры преобразуются в кратные 32. Короткая сторона должна быть минимум 768, поэтому при экстремальных соотношениях даже `1K` может превышать примерно 1 миллион пикселей. Оплата рассчитывается по токенам фактических выходных пикселей.

### Ограничения точных размеров

* Ширина и высота — минимум 768 каждая.
* Ширина × высота — не более 2 359 296 (1536 × 1536).
* Каждая сторона округляется вниз до кратного 32. Например, `1000x1000` даёт `992x992`. Для точных размеров используйте кратные 32.

Поддерживаются `1536x1024`, `2048x1152`, `3072x768`. `512x512` отклоняется из-за слишком коротких сторон, `2048x2048` — из-за превышения общего числа пикселей.

<Warning>
  Ограничение относится к **общему числу пикселей**, а не к максимуму 1536 на сторону. Поэтому `2048x1152` и `3072x768` допустимы, но уровень 4K не поддерживается. Эти настройки применимы только к генерации по тексту.
</Warning>

## Примеры запросов

### Точные пиксели и веб-поиск

```json theme={null}
{
  "model": "mai-image-2.6-flash",
  "prompt": "Эйфелева башня ночью с фейерверком, стиль туристического плаката",
  "width": 2048,
  "height": 1152,
  "web_grounding": true
}
```

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

```json theme={null}
{
  "model": "mai-image-2.6",
  "prompt": "Сделай велосипед синим и добавь рядом маленькую собаку",
  "image_urls": ["https://example.com/bicycle.png"]
}
```

### Композиция из нескольких изображений

```json theme={null}
{
  "model": "mai-image-2.6-flash",
  "prompt": "Объедини оба референса в чистую футуристическую фотографию продукта",
  "image_urls": [
    "https://example.com/first.png",
    "https://example.com/second.jpg"
  ]
}
```

Замените URL из примеров на доступные адреса изображений.

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

`quality`, `style`, `background`, `output_format`, `response_format` и `mask_url` не поддерживаются и игнорируются при передаче. Выходной формат всегда PNG. Редактирование по маске не поддерживается.

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

<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": {
    "id": "task_01K...",
    "status": "completed",
    "progress": 100,
    "result": {
      "images": [
        {
          "url": ["https://example.com/generated-image.png"]
        }
      ]
    }
  }
}
```

| Статус | Действие |
| - | - |
| `pending` | В очереди; продолжить опрос |
| `processing` | Обработка; продолжить опрос |
| `completed` | Успех; получить ссылки из массива `data.result.images[0].url` |
| `failed` | Ошибка; прочитать `data.error.message`, остановить опрос. Полный возврат средств |

## Оплата

Оплата по фактическому расходу входных и выходных токенов. Цены см. в [тарифах моделей](https://apimart.ai/pricing).

* Выходные токены изображения = фактическая ширина × высота ÷ 1024. 1024×1024 соответствует 1024 токенам, 1536×1536 — 2304 токенам.
* Входные токены каждого референса ≈ ширина × высота ÷ 1024. Текстовые промпты также учитываются на входе.
* При отправке предварительно списывается сумма по уровню; после успеха выполняется возврат разницы или доплата по фактическим токенам.
* При ошибке задачи средства автоматически возвращаются полностью. Отклонённые при отправке ошибки параметров не создают задач и не оплачиваются.

## Частые ошибки

| HTTP | Причина и действие |
| - | - |
| 400 | Неподдерживаемое `resolution`, например `4K`; используйте `1K` или `2K` |
| 400 | Ширина или высота меньше 768 либо всего более 2 359 296 пикселей |
| 400 | Передан только `width` или `height`; нужны оба одновременно |
| 400 | Соотношение вне диапазона от `1:4` до `4:1` или неизвестный формат `size` |
| 400 | `n` больше 1 либо более 5 референсов |

При ошибке проверьте загрузку изображений и сообщения о безопасности контента. Перед повтором измените промпт или референсы. Редактирование реалистичных фото с несовершеннолетними может блокироваться правилами безопасности.


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