canonical_url: https://yycode.net/docs/ru/gpt-image-quickstart
lang: ru
updated_at: 2026-07-04T13:33:48.616Z
source_html: https://yycode.net/docs/ru/gpt-image-quickstart

# Руководство по использованию GPT-Image-2

GPT-Image-2 — это сервис AI-генерации изображений, предоставляемый YYCode. Он использует независимый интерфейс изображений `gpt.yycode.net` для text-to-image, image-to-image и асинхронного запроса задач.

---

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

### 1. Создайте API Key

Перейдите на [страницу управления токенами YYCode](https://yycode.net/console/token), создайте или скопируйте API Key.

После создания сохраните его безопасно: все последующие запросы должны передавать этот Key в Header.

### 2. Адрес интерфейса

GPT-Image-2 использует отдельный Base URL:

```
https://gpt.yycode.net
```

Все запросы изображений также передают адрес посредника YYCode:

```
x-demo-base-url: https://yycode.net
```

---

## Подключение AI Agent в один шаг

При использовании AI-инструментов для кодинга с поддержкой Skills, таких как Claude Code и Codex, отправьте AI следующий текст:

```text
Подключи к этому проекту сервис генерации изображений YYCode GPT-Image-2.

Base URL:
https://gpt.yycode.net

Text to Image:
POST /api/images/generate

Image to Image:
POST /api/images/edit

Запрос задачи:
GET /api/jobs/{jobId}

Request Header:
x-demo-base-url: https://yycode.net
x-demo-api-key: YOUR_API_KEY
x-demo-async: 1

Text to Image использует JSON-тело запроса; Image to Image использует multipart/form-data и загружает исходное изображение через поле image.
После отправки задачи и получения jobId запрашивай /api/jobs/{jobId} каждые 6 секунд.
После возврата status=succeeded считай images[].b64 и images[].mimeType, затем сохрани base64 как файл изображения.
```

AI Agent выполнит интеграцию клиентского кода согласно указанным интерфейсам, Header, способу polling и сохранению изображений.

---

## Подробное описание API

### Text to Image

Отправка задачи генерации:

```bash
curl 'https://gpt.yycode.net/api/images/generate' \
  -H 'Content-Type: application/json' \
  -H 'x-demo-base-url: https://yycode.net' \
  -H 'x-demo-api-key: YOUR_API_KEY' \
  -H 'x-demo-async: 1' \
  -d '{
    "model": "gpt-image-2",
    "prompt": "Милый котенок дремлет на солнце",
    "n": 1,
    "size": "1024x1024"
  }'
```

Успешный ответ:

```json
{
  "ok": true,
  "pending": true,
  "jobId": "job_1782732290788_3",
  "meta": {
    "requestId": "req_1782732290788_1"
  }
}
```

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

Замените `job_1782732290788_3` на `jobId`, который вернулся при отправке задачи:

```bash
curl 'https://gpt.yycode.net/api/jobs/job_1782732290788_3'
```

**Задача выполняется:**

```json
{
  "ok": true,
  "pending": true,
  "jobId": "job_1782732290788_3",
  "status": "running",
  "meta": {
    "requestId": "req_1782732290788_1"
  }
}
```

**Задача завершена:**

```json
{
  "ok": true,
  "images": [
    {
      "b64": "iVBORw0KGgo...",
      "filename": null,
      "mimeType": "image/png"
    }
  ],
  "usage": null,
  "raw": {},
  "meta": {
    "requestId": "req_1782732290788_1"
  },
  "jobId": "job_1782732290788_3",
  "status": "succeeded"
}
```

Итоговые данные изображения находятся в `images[0].b64`, формат изображения — в `images[0].mimeType`. На фронтенде для отображения используйте `data:${mimeType};base64,${b64}`, а для скачивания декодируйте base64 в файл изображения.

---

### Image to Image

Image to Image использует `multipart/form-data` для загрузки исходного изображения и отправляет файл через поле `image`.

**Загрузить одно исходное изображение:**

```bash
curl 'https://gpt.yycode.net/api/images/edit' \
  -H 'x-demo-base-url: https://yycode.net' \
  -H 'x-demo-api-key: YOUR_API_KEY' \
  -H 'x-demo-async: 1' \
  -F 'model=gpt-image-2' \
  -F 'prompt=Преобразуй это изображение в акварельный стиль' \
  -F 'n=1' \
  -F 'size=1024x1024' \
  -F 'image=@input.png'
```

**Загрузить несколько исходных изображений:**

```bash
curl 'https://gpt.yycode.net/api/images/edit' \
  -H 'x-demo-base-url: https://yycode.net' \
  -H 'x-demo-api-key: YOUR_API_KEY' \
  -H 'x-demo-async: 1' \
  -F 'model=gpt-image-2' \
  -F 'prompt=Создай единый постер в стиле киберпанк по этим референсам' \
  -F 'n=1' \
  -F 'size=1536x1024' \
  -F 'image=@subject.png' \
  -F 'image=@style.png'
```

**Важные замечания по Image to Image:**

- `image` — поле файла изображения; при загрузке нескольких изображений передавайте `image` повторно
- `mask` — поле файла маски изображения для локального редактирования
- Не задавайте `Content-Type` в заголовке вручную: `curl` или SDK автоматически сгенерирует multipart boundary
- Задача Image to Image также возвращает `jobId`, а результат запрашивается через `GET /api/jobs/{jobId}`

---

## Описание параметров

| Параметр | Описание |
|---|---|
| `model` | Всегда указывать `gpt-image-2` |
| `prompt` | Prompt для генерации или редактирования изображения |
| `n` | Количество генерируемых изображений, диапазон от `1` до `10` |
| `size` | Размер выходного изображения в формате `<width>x<height>` |
| `output_format` | Формат вывода: `png`, `jpeg`, `webp` |
| `quality` | Качество изображения: `auto`, `low`, `medium`, `high`, `standard`, `hd` |
| `background` | Режим фона: `auto`, `opaque` |
| `image` | Поле исходного файла для Image to Image, поддерживает повторную передачу |
| `mask` | Поле файла маски для Image to Image, используется для локального редактирования |

### Поддержка size

`size` использует реальные размеры в пикселях; ширина и высота должны быть кратны `16`, длинная сторона не больше `3840`, общее число пикселей не больше `3840x2160`.

| Размер | Описание |
|---|---|
| `1024x1024` | Квадратное изображение |
| `1536x1024` | Горизонтальное изображение |
| `1024x1536` | Вертикальное изображение |
| `1920x1080` | Горизонтальное HD-изображение |
| `1080x1920` | Вертикальное HD-изображение |
| `3840x2160` | 4K горизонтальное изображение |
| `2160x3840` | 4K вертикальное изображение |

---

## Пример Python

```python
import base64
import time

import requests


# Замените на свой YYCode API Key
base_url = "https://gpt.yycode.net"
api_key = "YOUR_API_KEY"

headers = {
    "Content-Type": "application/json",
    "x-demo-base-url": "https://yycode.net",
    "x-demo-api-key": api_key,
    "x-demo-async": "1",
}

# Шаг 1: отправить задачу Text to Image
submit = requests.post(
    f"{base_url}/api/images/generate",
    headers=headers,
    json={
        "model": "gpt-image-2",
        "prompt": "Милый котенок дремлет на солнце",
        "n": 1,
        "size": "1024x1024",
    },
    timeout=30,
)

submit.raise_for_status()
job_id = submit.json()["jobId"]
print(f"Задача отправлена: {job_id}")

# Шаг 2: каждые 6 секунд опрашивать статус задачи
while True:
    result = requests.get(
        f"{base_url}/api/jobs/{job_id}",
        timeout=30,
    )
    result.raise_for_status()

    data = result.json()

    if data.get("pending"):
        print("Задача обрабатывается...")
        time.sleep(6)
        continue

    if data.get("status") == "succeeded":
        # Шаг 3: сохранить base64-изображение в локальный файл
        image = data["images"][0]
        mime_type = image.get("mimeType") or "image/png"
        suffix = mime_type.split("/")[-1].replace("jpeg", "jpg")
        filename = f"{job_id}.{suffix}"

        with open(filename, "wb") as file:
            file.write(base64.b64decode(image["b64"]))

        print(f"Изображение создано: {filename}")
        break

    raise RuntimeError(data.get("error", {}).get("message", "Задача завершилась ошибкой"))
```

---

## Описание биллинга

- Генерация изображений расходует квоту аккаунта YYCode, которому принадлежит `x-demo-api-key`
- Возврат `jobId` при отправке означает, что фоновая задача создана
- Когда статус задачи `succeeded` и возвращены `images`, текущая генерация изображения завершена
- При статусе `failed` в ответе возвращается информация об ошибке
- Записи расхода аккаунта отображаются в панели YYCode

---

## Описание возврата изображений

Интерфейс изображений YYCode возвращает стандартизированный массив `images`. Каждое изображение содержит поля `b64` и `mimeType`; интегратор декодирует `b64` для сохранения файла или собирает `data:${mimeType};base64,${b64}` для отображения на фронтенде.
