API изображений GPT Image 2 и Gemini — документация Modelflare
Создавайте изображения с GPT Image 2 через OpenAI-совместимый Images API или с Nano Banana Pro и Nano Banana 2 через нативный Gemini API.
На этой странице собраны два независимых контракта API для генерации изображений. Они используют один API-ключ Modelflare и общие Credits, но форматы запросов и ответов нельзя смешивать.
- gpt-image-2 использует OpenAI-совместимые контракты /v1/images/generations и /v1/images/edits.
- gemini-3-pro-image и gemini-3.1-flash-image используют нативный контракт Gemini generateContent.
Сначала выберите семейство модели и не смешивайте поля Gemini и GPT Images.
1. GPT Image 2 — OpenAI-совместимый Images API
Создавайте PNG или редактируйте референсные изображения по публичному URL либо из локального файла с gpt-image-2 через совместимый с OpenAI Images API. Каждый запрос возвращает одно изображение и поддерживает среднее или высокое качество, временную подписанную ссылку либо base64 и необязательный SSE.
Выбор адреса и режима
- Для синхронного JSON, который может выполняться несколько минут, используйте https://origin.modelflare.dev/v1.
- Для долгих запросов через Cloudflare используйте https://modelflare.dev/v1 с stream=true; SSE heartbeat поддерживает соединение до готовности изображения.
- Не перенаправляйте выполняющийся POST между хостами.
Синхронный запрос
curl https://origin.modelflare.dev/v1/images/generations \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-image-2","prompt":"Тихий домик у озера на рассвете","n":1,"quality":"medium","size":"1024x1024","response_format":"url","output_format":"png"}'
Ответ URL содержит приватную подписанную ссылку Modelflare со сроком действия один час. Укажите response_format=b64_json, чтобы получить проверенный PNG без сохранения выходного объекта API.
Актуальная страница Модели и цены показывает цены medium и high для распространённых размеров. Списание рассчитывается по точным качеству и размерам запроса без обычных множителей групп маршрутизации, а итоговая сумма записывается в журнал использования.
Редактирование референсного изображения
Отправьте один или несколько общедоступных HTTP(S)-адресов изображений в POST /v1/images/edits. Каждый элемент images должен содержать ровно один image_url:
curl https://origin.modelflare.dev/v1/images/edits \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-image-2","prompt":"Замените фон на чистую белую фотостудию","images":[{"image_url":"https://example.com/input.png"}],"size":"2048x2048","response_format":"url"}'
Также можно загрузить один локальный файл PNG, JPEG или WebP через multipart/form-data:
curl https://origin.modelflare.dev/v1/images/edits \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-F "model=gpt-image-2" \
-F "prompt=Замените фон на чистую белую фотостудию" \
-F "image=@/path/to/input.png" \
-F "size=2048x2048" \
-F "response_format=url"
Multipart-запрос должен содержать ровно один файл изображения и занимать не более 20 МиБ целиком. Референсный URL или загруженный файл передаётся выбранному upstream-провайдеру; URL должен оставаться доступным во время загрузки. Modelflare не хранит ни один из референсных входов как выходной ресурс API.
SSE-запрос
curl -N https://modelflare.dev/v1/images/generations \
-H "Authorization: Bearer YOUR_MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-image-2","prompt":"Белый кот бежит по неоновой улице под дождём","n":1,"quality":"high","size":"1024x1024","response_format":"url","stream":true}'
Комментарии SSE — только heartbeat. Завершите после image_generation.completed и data: [DONE].
Поддерживаются model, prompt, n=1, quality=medium|high, корректный WIDTHxHEIGHT, response_format=url|b64_json, output_format=png и необязательный stream. /v1/images/edits принимает непустой массив images с публичным HTTP(S) image_url в каждом элементе либо ровно один корректный PNG, JPEG или WebP в multipart-поле image. Генерация отклоняет референсы; несколько файлов, ввод data/base64, маски, input_fidelity, вариации, частичные изображения и неизвестные поля отклоняются. Зарезервированные Credits неуспешных запросов возвращаются идемпотентно по Request ID.
Используйте обычный API-ключ. Ключи, закреплённые за каналом, отклоняются; ключ с ограничением моделей должен включать gpt-image-2.
2. Gemini Image — нативный Gemini API
Используйте Nano Banana Pro или Nano Banana 2 в нативном формате Gemini. Эти модели не используют /v1/images/generations.
Эндпоинт и долгие запросы
- Синхронно: POST https://modelflare.dev/v1beta/models/{model}:generateContent.
- Рекомендуется для изображений: POST https://modelflare.dev/v1beta/models/{model}:streamGenerateContent?alt=sse.
- origin.modelflare.dev не публикует /v1beta. Используйте основной домен и streaming для долгих задач.
Потоковый запрос
В примере используется Nano Banana 2. Замените модель в URL на gemini-3-pro-image, чтобы использовать Nano Banana Pro.
curl -N "https://modelflare.dev/v1beta/models/gemini-3.1-flash-image:streamGenerateContent?alt=sse" \
-H "x-goog-api-key: YOUR_MODELFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [{
"role": "user",
"parts": [{"text": "Create a clean blue circle centered on a white background. No text."}]
}],
"generationConfig": {
"responseModalities": ["TEXT", "IMAGE"],
"imageConfig": {"aspectRatio": "1:1", "imageSize": "1K"}
}
}'
Контракт ответа
Каждое SSE-событие data: содержит нативный JSON Gemini. Base64 изображения находится в candidates[].content.parts[].inlineData.data, MIME — в inlineData.mimeType. Ответ может включать текст. Завершайте при finishReason=STOP или закрытии потока; событие image_generation.completed здесь не используется.
Модели, разрешения и ориентировочные цены
| Модель | Разрешение | Ориентировочная цена за изображение |
|---|---|---|
| Nano Banana Pro | 1K / 2K | US$0.06720 |
| Nano Banana Pro | 4K | US$0.12000 |
| Nano Banana 2 | 0.5K | US$0.02241 |
| Nano Banana 2 | 1K | US$0.03360 |
| Nano Banana 2 | 2K | US$0.05040 |
| Nano Banana 2 | 4K | US$0.07560 |
В imageSize используйте заглавную K. Это ориентировочные цены за одно изображение; итоговая сумма может немного меняться в зависимости от запроса и записывается в журнале использования.
Передавайте обычный API-ключ Modelflare через x-goog-api-key. Ключ должен иметь доступ к группе gemini-image и включать выбранную модель при ограничении моделей.