Source: https://ailoot.ai/models/ru/gpt-image-2/
Canonical: https://ailoot.ai/models/ru/gpt-image-2/
Language: ru

# OpenAI: GPT Image 2

[Markdown](https://ailoot.ai/models/ru/gpt-image-2/index.md) · [JSON](https://ailoot.ai/models/ru/gpt-image-2/facts.json)

## [OpenAI: GPT Image 2](https://ailoot.ai/models/ru/gpt-image-2/)

GPT Image 2 создаёт и редактирует изображения по тексту и визуальным референсам. Он поддерживает гибкие размеры кадра и автоматически обрабатывает входные изображения с высокой точностью, с отдельными настройками качества, формата и фона для готового материала.

- [**Ailoot · Картинки** `POST /v1/images/generations` `gpt-image-2`](https://ailoot.ai/models/ru/gpt-image-2/#method-0)
- [**Ailoot Ultra · Картинки** `POST /v1/images/generations` `gpt-image-2`](https://ailoot.ai/models/ru/gpt-image-2/#method-1)
- [**Ailoot Ultra · Картинки** `POST /v1/images/generations` `openai/gpt-image-2`](https://ailoot.ai/models/ru/gpt-image-2/#method-2)

О модели

Описание раскрывает возможности модели. Доступные в Ailoot входные данные, результаты и параметры выбранного метода перечислены ниже.

GPT Image 2 — модель OpenAI для генерации и редактирования изображений по тексту и визуальным входным данным. Она создаёт новое изображение по письменному заданию и может использовать исходные изображения для правок или работы на основе референсов. Практические задачи включают иллюстрации, концепции продуктов, визуальные композиции и изменения существующих материалов. Это отдельная версия, отличная от GPT Image 2.5 Sunburst и Flare, со своим диапазоном качества и поведением обработки входных изображений.

Для генерации опишите объект, сцену, композицию, свет и предполагаемый стиль. Для правки назовите, что должно измениться и что должно сохранить внешний вид. Задание для продукта может запросить керамическую лампу на светлой поверхности с силуэтом по центру и местом для подписи; последующая правка может изменить фон, сохранив форму лампы и угол обзора. Документированные прямые процессы генерации и редактирования принимают запросы до 32,000 символов и могут возвращать от одного до десяти изображений.

Редактирование по референсам принимает до шестнадцати входных изображений. Укажите назначение каждого референса, чтобы объект, фон и визуальное оформление не смешивались. GPT Image 2 автоматически обрабатывает каждое входное изображение с высокой точностью; input\_fidelity следует пропустить, поскольку в этой версии он не настраивается. Это отличается от выбора high или low в GPT Image 1 и режима точности входа только low в GPT Image 1 Mini. Высокая точность обработки помогает учитывать исходные детали, но не гарантирует воспроизведения каждой детали без изменений.

Маска может указать область для редактирования. Согласно требованиям подготовки в руководстве, исходное изображение и маска должны иметь одинаковые формат и размеры и быть менее 50 MB; маске также нужен альфа-канал. Если передано несколько входных изображений, маска применяется к первому. Модель воспринимает маску как подсказку вместе с запросом, а не как строгую геометрическую границу. Опишите локальное изменение и требования к сохранению, затем проверьте окружающую область на непреднамеренные отличия.

GPT Image 2 поддерживает качество low, medium, high и auto; по умолчанию — auto. Настройки xhigh и max из семейства 2.5 не входят в диапазон качества этой версии. Размер может быть квадратным, горизонтальным, вертикальным, автоматическим или допустимой собственной парой ширины и высоты. В примерах поставщика указаны 1024 × 1024, 1536 × 1024, 1024 × 1536, 2048 × 2048, 2048 × 1152, 3840 × 2160 и 2160 × 3840 пикселей. Подбирайте ориентацию и уровень детализации под реальный макет, не считая качество и размеры одной настройкой.

Собственные размеры должны быть кратны шестнадцати пикселям, с максимальной стороной 3840 пикселей, отношением длинной стороны к короткой не более 3:1 и площадью от 655,360 до 8,294,400 пикселей. Эти условия действуют одновременно. Разрешения выше 2560 × 1440 помечены как экспериментальные. Кадр, соответствующий одному правилу, всё ещё может нарушать другое, поэтому выбирайте поддерживаемую пару размеров и описывайте чувствительные к обрезке элементы в задании.

По умолчанию результат выдаётся в PNG, также доступны JPEG и WebP. Сжатие от 0 до 100 поддерживается для JPEG и WebP. Фон может быть непрозрачным или автоматическим; точный текущий справочник описывает прозрачность GPT Image 2 как предварительно доступную возможность. При запросе прозрачности используйте PNG или WebP для сохранения альфа-канала. Документированный потоковый процесс допускает до трёх промежуточных изображений перед готовым изображением; сохраняйте итоговый материал, а не превью хода работы. Интерфейс производителя также поддерживает пакетную обработку.

Оценивайте ясность текста, расположение объектов и сохранение исходных деталей в фактическом результате. GPT Image может испытывать трудности с точными надписями, композициями, чувствительными к компоновке, и повторяемой визуальной идентичностью между отдельными генерациями. Для серии правок используйте выбранный результат как следующий исходник и давайте конкретное изменение, связанное с видимой проблемой. Полезный результат GPT Image 2 — изображение, связанное с ясным заданием на генерацию или редактирование, где высокоточные входные данные, размеры и качество подобраны для конкретной задачи.

**Ailoot · Картинки** `POST /v1/images/generations` `gpt-image-2`

[`gpt-image-2`](https://ailoot.ai/models/ru/#m=openai%2Fgpt-image-2&route=Core&caller=gpt-image-2&fmt=images)

OpenAI /`gpt-image-2`

### Начало

GPT Image 2 создаёт и редактирует изображения по тексту и визуальным референсам. Он поддерживает гибкие размеры кадра и автоматически обрабатывает входные изображения с высокой точностью, с отдельными настройками качества, формата и фона для готового материала.

Допустимые входные данные

Текст

Результаты

Картинки

### Доступно в Ailoot · входные данные и методы

**Ailoot · Картинки** `POST /v1/images/generations`

Входные данные

`text`

Результат

`image`

Выходной формат

Файл изображения

| Поле | Тип | Требование | Значения и ограничения | По умолчанию |
| --- | --- | --- | --- | --- |
| Поле`model` | Тип`string` | ТребованиеОбязательно | Значения и ограничения gpt-image-2 | По умолчанию— |
| Поле`prompt` | Тип`string` | ТребованиеОбязательно | Значения и ограничения Минимальная длина: 1 | По умолчанию— |
| Поле`n` | Тип`integer` | ТребованиеНеобязательно | Значения и ограничения Минимум: 1 | По умолчанию1 |
| Поле`response_format` | Тип`string` | ТребованиеНеобязательно | Значения и ограничения url, b64\_json | По умолчанию— |
| Поле`stream` | Тип`boolean` | ТребованиеНеобязательно | Значения и ограничения | По умолчаниюfalse |
| Поле`size` | Тип`string` | ТребованиеНеобязательно | Значения и ограничения Зависит от модели | По умолчанию— |
| Поле`quality` | Тип`string` | ТребованиеНеобязательно | Значения и ограничения Зависит от модели | По умолчанию— |
| Поле`background` | Тип`string` | ТребованиеНеобязательно | Значения и ограничения Зависит от модели | По умолчанию— |
| Поле`output_format` | Тип`string` | ТребованиеНеобязательно | Значения и ограничения Зависит от модели | По умолчанию— |
| Поле`output_compression` | Тип`integer` | ТребованиеНеобязательно | Значения и ограничения Зависит от модели | По умолчанию— |
| Поле`moderation` | Тип`string` | ТребованиеНеобязательно | Значения и ограничения Зависит от модели | По умолчанию— |
| Поле`input_fidelity` | Тип`string` | ТребованиеНеобязательно | Значения и ограничения Зависит от модели | По умолчанию— |
| Поле`style` | Тип`string` | ТребованиеНеобязательно | Значения и ограничения Зависит от модели | По умолчанию— |
| Поле`partial_images` | Тип`integer` | ТребованиеНеобязательно | Значения и ограничения Зависит от модели | По умолчанию— |

Сочетания входных материалов

**Из текста в изображение** · Обязательно: prompt

Параметры и жизненный цикл метода

| Параметр | Контракт |
| --- | --- |
| Параметр`material_types` | Контрактtext |
| Параметр`required` | Контрактmodel, prompt |
| Параметр`optional_controls` | Контрактnull |
| Параметр`content_type` | Контрактapplication/json |

Жизненный цикл: `synchronous_result_then_owned_library`

`GET /v1/media/tasks/{task_id}` · Фактически возвращённый task\_id или запись в медиатеке

`GET /v1/media/assets/{asset_id}/content`

`GET /v1/media/assets`

`GET /v1/media/assets/{asset_id}`

Структуры методов и ID указаны точно; возможности поставщика рассматриваются отдельно от допуска.

### Тарифы

#### Ставки методов Ailoot

Текстовый вход

0,0025 $ */ 1K*

Вход, картинка

0,004 $ */ 1K tokens*

Выход, картинка

0,015 $ */ 1K tokens*

Ailoot резервирует расчётную сумму перед запросом. После получения результата списывает итоговую плату по измеренному расходу. Для окончательного списания за потоковый ответ используется итоговая запись расхода. [Как работают резервирование и расчёт →](https://ailoot.ai/docs/ru/billing/reserve/)

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

#### Ailoot · Картинки

curlPython SDKNode.js SDK

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
export AILOOT_API_KEY
: "${AILOOT_PROMPT_FILE:?Set your actual UTF-8 image brief}"
export AILOOT_PROMPT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "gpt-image-2", "prompt": ""}')
f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 brief")
p['prompt']=f.read_text(encoding="utf-8")
if not p['prompt'].strip():raise SystemExit("Brief must contain text")
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT
```

```python
from openai import OpenAI
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")

f=Path(os.environ["AILOOT_PROMPT_FILE"])
if not f.is_file():raise SystemExit("Set your actual UTF-8 image brief file")
request={'model': 'gpt-image-2', 'prompt': ''}
request["prompt"]=f.read_text(encoding="utf-8")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.images.generate(**request)
Path("sdk-result.txt").write_text(str(result),encoding="utf-8")
save_images([{"b64_json":getattr(item,"b64_json",None),"url":getattr(item,"url",None)} for item in result.data])
```

```js
import OpenAI from "openai";
import { readFileSync, writeFileSync } from "node:fs";
const key=process.env.AILOOT_API_KEY;
if(!key) throw new Error("Set your actual Ailoot API key");
const client=new OpenAI({baseURL:"https://api.ailoot.ai/v1",apiKey:key,maxRetries:0});
const request={"model": "gpt-image-2", "prompt": ""};
if(!process.env.AILOOT_PROMPT_FILE)throw new Error("Set your actual UTF-8 image brief file");
request.prompt=readFileSync(process.env.AILOOT_PROMPT_FILE,"utf8");
const result=await client.images.generate(request);
writeFileSync("sdk-result.json",JSON.stringify(result,null,2));
if(!result.data?.length) throw new Error("No completed images");
for(let index=0;index<result.data.length;index++) {
  const item=result.data[index];let encoded=item.b64_json,uri=item.url||"",raw;
  if(!encoded && uri.startsWith("data:image/")) {
    const comma=uri.indexOf(",");if(comma<0 || !uri.slice(0,comma).includes(";base64")) throw new Error("Unsupported image data URI");
    encoded=uri.slice(comma+1);
  }
  if(encoded) {
    if(encoded.length%4!==0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(encoded)) throw new Error("Invalid Base64");
    raw=Buffer.from(encoded,"base64");
  } else if(uri) {
    const u=new URL(uri,"https://api.ailoot.ai");
    if(u.protocol!=="https:" || u.username || u.password) throw new Error("Invalid returned URL");
    const owned=u.origin==="https://api.ailoot.ai" && u.pathname.startsWith("/v1/media/assets/") && u.pathname.endsWith("/content");
    const response=await fetch(u,{headers:owned?{Authorization:"Bearer "+key}:{},redirect:"manual"});
    if(!response.ok) throw new Error("Image content download failed: "+response.status);
    raw=Buffer.from(await response.arrayBuffer());
  } else throw new Error("Image has neither bytes nor URL");
  if(!raw.length) throw new Error("Empty image result");
  const ext=raw.subarray(0,4).equals(Buffer.from([137,80,78,71]))?"png":raw[0]===255&&raw[1]===216?"jpg":raw.toString("ascii",0,4)==="RIFF"&&raw.toString("ascii",8,12)==="WEBP"?"webp":raw.toString("utf8").trimStart().startsWith("<svg")||raw.toString("utf8").trimStart().startsWith("<?xml")?"svg":"bin";
  writeFileSync(`image-${index}.${ext}`,raw);
}
console.log("Every returned image saved; sdk-result.json retains complete metadata");
```

### Получить и сохранить результаты

#### Ailoot · Картинки

Загрузите каждое полученное изображение или сохраните его содержимое Base64

- `GET /v1/media/tasks/{task_id}`
- `GET /v1/media/assets/{asset_id}/content`
- `GET /v1/media/assets`
- `GET /v1/media/assets/{asset_id}`

##### Сохраняйте все готовые результаты

Сохраните каждое готовое изображение; загрузите содержимое по каждому полученному URL или декодируйте его содержимое Base64.

Сохраняйте каждый элемент данных. Декодируйте каждый b64\_json или загружайте ресурс по каждому возвращённому подписанному URL. Выбирайте расширение имени файла по фактическому MIME и байтам.

##### Если нужно проверить исходный ответ

Если результат генерации или редактирования изображения требует проверки, сохраните исходный operation\_id/X-Client-Request-ID и возвращённые сведения о результате. Восстановите существующие собственные результаты через медиатеку, используя фактические значения task\_id или asset\_id. Не отправляйте запрос генерации или редактирования повторно и не составляйте URL опроса из operation\_id.

Поля ответа

| Поле | Тип |
| --- | --- |
| Поле`created` | Типinteger |
| Поле`data[].url` | Типstring |
| Поле`data[].b64_json` | Типbase64 string |
| Поле`usage` | Типobject |

Ошибки и дальнейшие шаги

| Ответ | Условие | Следующий шаг |
| --- | --- | --- |
| Ответ400 · `invalid_request_error` | УсловиеНеверные обязательные поля, представление материалов или значение параметра | Следующий шагИсправьте указанные поля перед новым запросом на создание. |
| Ответ`server_error` | УсловиеВозвращённый ответ указывает, что операция или результат требуют проверки | Следующий шагСохраните исходный возвращённый ID операции или задачи, заголовки запроса и ответ; продолжайте поддерживаемые операции чтения исходной операции. Не отправляйте запрос создания повторно. |

### Псевдонимы

#### Псевдонимы моделей

<strong>Ailoot</strong> [`gpt-image-2`](https://ailoot.ai/models/ru/#m=openai%2Fgpt-image-2&route=Core&caller=gpt-image-2&fmt=images)
**Ailoot Ultra** [`gpt-image-2`](https://ailoot.ai/models/ru/#m=openai%2Fgpt-image-2&route=Ultra&caller=gpt-image-2&fmt=images), [`openai/gpt-image-2`](https://ailoot.ai/models/ru/#m=openai%2Fgpt-image-2&route=Ultra&caller=openai%2Fgpt-image-2&fmt=images)

#### Псевдонимы путей метода

`/v1/images`

#### Связанные ID для вызова

[`openai/gpt-image-2`](https://ailoot.ai/models/ru/#m=openai%2Fgpt-image-2&route=Ultra&caller=openai%2Fgpt-image-2&fmt=images), [`gpt-image-2`](https://ailoot.ai/models/ru/#m=openai%2Fgpt-image-2&route=Core&caller=gpt-image-2&fmt=images), [`gpt-image-2`](https://ailoot.ai/models/ru/#m=openai%2Fgpt-image-2&route=Ultra&caller=gpt-image-2&fmt=images)

**Ailoot Ultra · Картинки** `POST /v1/images/generations` `gpt-image-2`

[`gpt-image-2`](https://ailoot.ai/models/ru/#m=openai%2Fgpt-image-2&route=Ultra&caller=gpt-image-2&fmt=images)

OpenAI /`gpt-image-2`

ID модели

- `gpt-image-2`
- `openai/gpt-image-2`

### Начало

GPT Image 2 создаёт и редактирует изображения по тексту и визуальным референсам. Он поддерживает гибкие размеры кадра и автоматически обрабатывает входные изображения с высокой точностью, с отдельными настройками качества, формата и фона для готового материала.

Допустимые входные данные

Текст

Результаты

Картинки

### Доступно в Ailoot · входные данные и методы

**Ailoot Ultra · Картинки** `POST /v1/images/generations`

Входные данные

`text`

Результат

`image`

| Поле | Тип | Требование | Значения и ограничения | По умолчанию |
| --- | --- | --- | --- | --- |
| Поле`model` | Тип`string` | ТребованиеОбязательно | Значения и ограничения gpt-image-2 | По умолчанию— |
| Поле`prompt` | Тип`string` | ТребованиеОбязательно | Значения и ограничения Максимальная длина: 32 000 | По умолчанию— |
| Поле`size` | Тип`string` | ТребованиеНеобязательно | Значения и ограничения Условия: Используйте auto или WIDTHxHEIGHT, причём оба размера должны делиться на 16. Длинная сторона — не более 3,840 пикселей, общее количество — не более 8,300,000 пикселей. | По умолчаниюauto |
| Поле`background` | Тип`string` | ТребованиеНеобязательно | Значения и ограничения transparent, opaque, auto | По умолчаниюauto |
| Поле`moderation` | Тип`string` | ТребованиеНеобязательно | Значения и ограничения low, auto Условия: Используйте auto для стандартной модерации содержимого. | По умолчанию— |
| Поле`n` | Тип`integer` | ТребованиеНеобязательно | Значения и ограничения Минимум: 1 Максимум: 10 | По умолчанию1 |
| Поле`quality` | Тип`string` | ТребованиеНеобязательно | Значения и ограничения auto, high, medium, low | По умолчаниюauto |
| Поле`output_compression` | Тип`integer` | ТребованиеНеобязательно | Значения и ограничения Минимум: 0 Максимум: 100 Условия: Применяется к результатам JPEG и WebP; передайте документированное целое значение. | По умолчанию100 |
| Поле`output_format` | Тип`string` | ТребованиеНеобязательно | Значения и ограничения webp, png, jpeg | По умолчаниюpng |
| Поле`stream` | Тип`boolean` | ТребованиеНеобязательно | Значения и ограничения false Условия: Этот маршрут возвращает один завершённый ответ JSON. | По умолчаниюfalse |

Параметры и жизненный цикл метода

| Параметр | Контракт |
| --- | --- |
| Параметр`content_type` | Контрактapplication/json |
| Параметр`required` | Контрактprompt, model |
| Параметр`material_types` | Контрактtext |
| Параметр`optional` | Контрактsize, background, moderation, n, quality, output\_compression, output\_format, stream |
| Параметр`conditions` | КонтрактПрозрачный фон требует PNG или WebP., Сжатие результата применяется к JPEG или WebP., Выбранный метод генерирует из текста. Описанные производителем средства редактирования и потоковой передачи относятся к отдельным возможностям. |

Жизненный цикл: `synchronous_result_then_owned_library`

`GET /v1/media/tasks/{task_id}` · Фактически возвращённый task\_id или запись в медиатеке

`GET /v1/media/assets/{asset_id}/content`

`GET /v1/media/assets`

`GET /v1/media/assets/{asset_id}`

### Тарифы

##### Как рассчитывается итоговая плата

Отображаемые тарифы позволяют оценить стоимость до генерации. Итоговое списание рассчитывается по стоимости, записанной для исходной генерации. Измеренная длительность результата и прогнозные объёмы не являются итоговым оплачиваемым объёмом.

Тарифная справка не добавляет режимы запроса. Поддерживаемые параметры указаны для выбранного метода.

Быстрый режим

Не указано При выборе быстрого режима

Режим flex

Не указано При выборе режима flex

Максимальная интенсивность рассуждений

Не указано При максимальной интенсивности рассуждений с корректировкой по умолчанию (default)

#### Оценочные ставки для сравнения

#### Цены по конфигурациям

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

| Конфигурация | Шкала ставок | Прогноз количества | Плата |
| --- | --- | --- | --- |
| КонфигурацияБазовые тарифы на токены | Шкала ставокБазовая ставка | Прогноз количества— | Плата Вход · Входные токены · Оценка только для сравнения **—** / 1K токенов Выход · Выходные токены · Оценка только для сравнения **—** / 1K токенов Вход · Чтение кэша · Оценка только для сравнения **—** / 1K токенов Вход · Запись в кэш · Оценка только для сравнения **—** / 1K токенов Вход · Запись в кэш, 1 час · Оценка только для сравнения **—** / 1K токенов |
| КонфигурацияОриентировочная стоимость генерации | Шкала ставок— | Прогноз количестваОценка для одной генерации | Плата Выход · Оценочная стоимость генерации · Оценка только для сравнения **$0.24576** оценка до генерации Эта оценка не является дополнительным списанием или фиксированным тарифом для завершённой генерации. |

Ailoot резервирует расчётную сумму перед запросом. После получения результата списывает итоговую плату по измеренному расходу. Для окончательного списания за потоковый ответ используется итоговая запись расхода. [Как работают резервирование и расчёт →](https://ailoot.ai/docs/ru/billing/reserve/)

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

#### Ailoot Ultra · Картинки

curl

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p={'prompt': 'A cute baby sea otter', 'model': 'gpt-image-2', 'size': '1024x1024', 'n': 1, 'background': 'auto', 'moderation': 'auto', 'output_format': 'png'}

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT
```

### Получить и сохранить результаты

#### Ailoot Ultra · Картинки

Загрузите каждое полученное изображение или сохраните его содержимое Base64

- `GET /v1/media/tasks/{task_id}`
- `GET /v1/media/assets/{asset_id}/content`
- `GET /v1/media/assets`
- `GET /v1/media/assets/{asset_id}`

Чтение другого содержимого

Читать существующие материалы, принадлежащие вам

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o owned-assets.json
# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.
```

##### Сохраняйте все готовые результаты

Сохраните каждое готовое изображение; загрузите содержимое по каждому полученному URL или декодируйте его содержимое Base64.

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

##### Если нужно проверить исходный ответ

Сохраните возвращённый X-Client-Request-ID для сверки. Читайте только фактически возвращённые значения task\_id/asset\_id или собственную медиатеку; никогда не составляйте URL задачи из ID операции и никогда не отправляйте запрос создания повторно.

Поля ответа

| Поле | Тип |
| --- | --- |
| Поле`created` | Тип |
| Поле`data[].url` | Тип |
| Поле`data[].b64_json` | Тип |
| Поле`usage` | Тип |

### Псевдонимы

#### Псевдонимы моделей

<strong>Ailoot</strong> [`gpt-image-2`](https://ailoot.ai/models/ru/#m=openai%2Fgpt-image-2&route=Core&caller=gpt-image-2&fmt=images)
**Ailoot Ultra** [`gpt-image-2`](https://ailoot.ai/models/ru/#m=openai%2Fgpt-image-2&route=Ultra&caller=gpt-image-2&fmt=images), [`openai/gpt-image-2`](https://ailoot.ai/models/ru/#m=openai%2Fgpt-image-2&route=Ultra&caller=openai%2Fgpt-image-2&fmt=images)

#### Псевдонимы путей метода

`/v1/images`

#### Связанные ID для вызова

[`openai/gpt-image-2`](https://ailoot.ai/models/ru/#m=openai%2Fgpt-image-2&route=Ultra&caller=openai%2Fgpt-image-2&fmt=images), [`gpt-image-2`](https://ailoot.ai/models/ru/#m=openai%2Fgpt-image-2&route=Core&caller=gpt-image-2&fmt=images), [`gpt-image-2`](https://ailoot.ai/models/ru/#m=openai%2Fgpt-image-2&route=Ultra&caller=gpt-image-2&fmt=images)

**Ailoot Ultra · Картинки** `POST /v1/images/generations` `openai/gpt-image-2`

[`openai/gpt-image-2`](https://ailoot.ai/models/ru/#m=openai%2Fgpt-image-2&route=Ultra&caller=openai%2Fgpt-image-2&fmt=images)

OpenAI /`openai/gpt-image-2`

ID модели

- `gpt-image-2`
- `openai/gpt-image-2`

### Начало

GPT Image 2 создаёт и редактирует изображения по тексту и визуальным референсам. Он поддерживает гибкие размеры кадра и автоматически обрабатывает входные изображения с высокой точностью, с отдельными настройками качества, формата и фона для готового материала.

Допустимые входные данные

Текст · Картинки

Результаты

Картинки

### Доступно в Ailoot · входные данные и методы

**Ailoot Ultra · Картинки** `POST /v1/images/generations`

Входные данные

`text`, `image`

Результат

`image`

| Поле | Тип | Требование | Значения и ограничения | По умолчанию |
| --- | --- | --- | --- | --- |
| Поле`model` | Тип`string` | ТребованиеОбязательно | Значения и ограничения openai/gpt-image-2 | По умолчанию— |
| Поле`prompt` | Тип`string` | ТребованиеОбязательно | Значения и ограничения Минимальная длина: 1 | По умолчанию— |
| Поле`aspect_ratio` | Тип`string` | ТребованиеНеобязательно | Значения и ограничения 1:1, 3:2, 2:3, 4:3, 3:4, 16:9, 9:16, 21:9, auto | По умолчанию— |
| Поле`quality` | Тип`string` | ТребованиеНеобязательно | Значения и ограничения auto, low, medium, high | По умолчанию— |
| Поле`background` | Тип`string` | ТребованиеНеобязательно | Значения и ограничения auto, opaque | По умолчанию— |
| Поле`n` | Тип`integer` | ТребованиеНеобязательно | Значения и ограничения Минимум: 1 Максимум: 10 | По умолчанию— |
| Поле`input_references` | Тип`array` | ТребованиеНеобязательно | Значения и ограничения Минимум элементов: 0 Максимум элементов: 16 | По умолчанию— |
| Поле`output_compression` | Тип`integer` | ТребованиеНеобязательно | Значения и ограничения Минимум: 0 Максимум: 100 | По умолчанию— |
| Поле`provider` | Тип`object` | ТребованиеНеобязательно | Значения и ограничения | По умолчанию— |

Параметры и жизненный цикл метода

| Параметр | Контракт |
| --- | --- |
| Параметр`content_type` | Контрактapplication/json |
| Параметр`required` | Контрактmodel, prompt |
| Параметр`material_types` | Контрактtext, image |

Жизненный цикл: `synchronous_result_then_owned_library`

`GET /v1/media/tasks/{task_id}` · Фактически возвращённый task\_id или запись в медиатеке

`GET /v1/media/assets/{asset_id}/content`

`GET /v1/media/assets`

`GET /v1/media/assets/{asset_id}`

### Тарифы

##### Как рассчитывается итоговая плата

Отображаемые тарифы позволяют оценить стоимость до генерации. Итоговое списание рассчитывается по стоимости, записанной для исходной генерации. Измеренная длительность результата и прогнозные объёмы не являются итоговым оплачиваемым объёмом.

Тарифная справка не добавляет режимы запроса. Поддерживаемые параметры указаны для выбранного метода.

Быстрый режим

Не указано При выборе быстрого режима

Режим flex

Не указано При выборе режима flex

Максимальная интенсивность рассуждений

Не указано При максимальной интенсивности рассуждений с корректировкой по умолчанию (default)

#### Оценочные ставки для сравнения

#### Цены по конфигурациям

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

| Конфигурация | Шкала ставок | Прогноз количества | Плата |
| --- | --- | --- | --- |
| КонфигурацияБазовые тарифы на токены | Шкала ставокБазовая ставка | Прогноз количества— | Плата Вход · Входные токены · Оценка только для сравнения **—** / 1K токенов Выход · Выходные токены · Оценка только для сравнения **—** / 1K токенов Вход · Чтение кэша · Оценка только для сравнения **—** / 1K токенов Вход · Запись в кэш · Оценка только для сравнения **—** / 1K токенов Вход · Запись в кэш, 1 час · Оценка только для сравнения **—** / 1K токенов |
| КонфигурацияОриентировочная стоимость генерации | Шкала ставок— | Прогноз количестваОценка для одной генерации | Плата Выход · Оценочная стоимость генерации · Оценка только для сравнения **$0.24576** оценка до генерации Эта оценка не является дополнительным списанием или фиксированным тарифом для завершённой генерации. |

Ailoot резервирует расчётную сумму перед запросом. После получения результата списывает итоговую плату по измеренному расходу. Для окончательного списания за потоковый ответ используется итоговая запись расхода. [Как работают резервирование и расчёт →](https://ailoot.ai/docs/ru/billing/reserve/)

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

#### Ailoot Ultra · Картинки

curl

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p={'model': 'openai/gpt-image-2', 'prompt': 'a red panda astronaut floating in space, studio lighting'}

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT
```

### Получить и сохранить результаты

#### Ailoot Ultra · Картинки

Загрузите каждое полученное изображение или сохраните его содержимое Base64

- `GET /v1/media/tasks/{task_id}`
- `GET /v1/media/assets/{asset_id}/content`
- `GET /v1/media/assets`
- `GET /v1/media/assets/{asset_id}`

Чтение другого содержимого

Читать существующие материалы, принадлежащие вам

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o owned-assets.json
# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.
```

##### Сохраняйте все готовые результаты

Сохраните каждое готовое изображение; загрузите содержимое по каждому полученному URL или декодируйте его содержимое Base64.

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

##### Если нужно проверить исходный ответ

Сохраните возвращённый X-Client-Request-ID для сверки. Читайте только фактически возвращённые значения task\_id/asset\_id или собственную медиатеку; никогда не составляйте URL задачи из ID операции и никогда не отправляйте запрос создания повторно.

Поля ответа

| Поле | Тип |
| --- | --- |
| Поле`created` | Тип |
| Поле`data[].url` | Тип |
| Поле`data[].b64_json` | Тип |
| Поле`usage` | Тип |

### Псевдонимы

#### Псевдонимы моделей

<strong>Ailoot</strong> [`gpt-image-2`](https://ailoot.ai/models/ru/#m=openai%2Fgpt-image-2&route=Core&caller=gpt-image-2&fmt=images)
**Ailoot Ultra** [`gpt-image-2`](https://ailoot.ai/models/ru/#m=openai%2Fgpt-image-2&route=Ultra&caller=gpt-image-2&fmt=images), [`openai/gpt-image-2`](https://ailoot.ai/models/ru/#m=openai%2Fgpt-image-2&route=Ultra&caller=openai%2Fgpt-image-2&fmt=images)

#### Псевдонимы путей метода

`/v1/images`

#### Связанные ID для вызова

[`openai/gpt-image-2`](https://ailoot.ai/models/ru/#m=openai%2Fgpt-image-2&route=Ultra&caller=openai%2Fgpt-image-2&fmt=images), [`gpt-image-2`](https://ailoot.ai/models/ru/#m=openai%2Fgpt-image-2&route=Core&caller=gpt-image-2&fmt=images), [`gpt-image-2`](https://ailoot.ai/models/ru/#m=openai%2Fgpt-image-2&route=Ultra&caller=gpt-image-2&fmt=images)

FAQ · OpenAI: GPT Image 2

Какие входные данные и результаты доступны?

`POST /v1/images/generations` · `gpt-image-2`: `text` → `image` `POST /v1/images/generations` · `gpt-image-2`: `text` → `image` `POST /v1/images/generations` · `openai/gpt-image-2`: `text`, `image` → `image`

Какие поля использует запрос?

`POST /v1/images/generations` · `gpt-image-2`: `model`, `prompt`, `n`, `response_format`, `stream` `POST /v1/images/generations` · `gpt-image-2`: `model`, `prompt`, `size`, `background`, `moderation`, `n`, `quality`, `output_compression`, `output_format`, `stream` `POST /v1/images/generations` · `openai/gpt-image-2`: `model`, `prompt`, `aspect_ratio`, `quality`, `background`, `n`, `input_references`, `output_compression`, `provider`

Какие ограничения действуют?

`POST /v1/images/generations` · `gpt-image-2`: `n.minimum`: `1` `POST /v1/images/generations` · `gpt-image-2`: `prompt.maximum_length`: `32000`; `n.minimum`: `1`; `n.maximum`: `10`; `output_compression.minimum`: `0`; `output_compression.maximum`: `100` `POST /v1/images/generations` · `openai/gpt-image-2`: `n.minimum`: `1`; `n.maximum`: `10`; `output_compression.minimum`: `0`; `output_compression.maximum`: `100`

Подключите Ailoot к Claude Code, OpenCode, Hermes или своему приложению.

## Компания и портфель её проектов

Компания и портфель её проектов: миллионы клиентов; продажи на миллиарды ежемесячно.

## Покупайте токены со скидкой.

Скидка по подписке для регулярной работы. Промокоды — до 50% на покупку токенов.

Подписка

Выберите тариф со скидкой для своих регулярных запросов.

Промокод до 50%

Введите код при покупке. Цена пересчитается с учётом действующей акции.

Расходы в истории

Модель, токены и сумма сохраняются для каждого запроса.

[Выбрать подписку](https://ailoot.ai/docs/ru/billing/subscriptions/) · [Посмотреть цены моделей](https://ailoot.ai/models/ru/)

## Подключайте API к продукту, который вы продаёте.

SaaS, приложения и боты — по оферте и лицензионному договору Ailoot. Для перепродажи запросите реселлерскую лицензию.

Коммерческое приложение

Встраивайте генерацию текста, картинок, видео и звука в платные функции своего сервиса.

Лицензия для реселлера

Пришлите описание проекта и схему доступа. Запросите письменные условия использования и перепродажи.

Документы на сайте

Оферта, лицензионный договор и политика обработки данных доступны до подключения.

[Запросить реселлерскую лицензию](mailto:support@ailoot.ai) · [Оферта и лицензионный договор](https://ailoot.ai/legal/offer?lang=ru)

## Ailoot · Компания и портфель её проектов





Ailoot опирается на накопленный опыт работы, большую клиентскую базу, стабильный сервис и постоянный контроль KPI.





Компания и портфель её проектов: миллионы клиентов; продажи на миллиарды ежемесячно.





Этот опыт Ailoot использует для API-доступа к нейросетям в продуктах клиентов, агентах, приложениях и автоматизациях.
