RouterAPI Docs

Генерация изображений — базовый сценарий

Документация RouterAPI помогает быстро понять, как работать с публичным API, кабинетом, RouterAPI Gateway и мультимодальными сценариями.

Публичная документация

Выбор модели для генерации изображений

Для генерации изображений используйте модели, которые upstream‑провайдер действительно поддерживает как image‑модели. Перед вызовом полезно проверить список доступных моделей через GET https://routerapi.ru/api/v1/models, а затем свериться с возможностями конкретной модели на стороне провайдера.

Gateway валидирует наличие model и messages, а затем проксирует исходный JSON дальше в upstream‑провайдера. Это означает, что совместимые дополнительные поля, такие как modalities, stream и image_config, не вырезаются из тела запроса и могут использоваться, если их понимает выбранная модель.

Базовый запрос на генерацию изображения

curl https://routerapi.ru/api/v1/chat/completions \
  -H "Authorization: Bearer $YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "google/gemini-2.5-flash-image",
    "messages": [
      {
        "role": "user",
        "content": "Создай атмосферный закат над горами в неоновом стиле"
      }
    ],
    "modalities": ["image", "text"]
  }'

В этом примере пользователь даёт текстовое описание сцены, а модель возвращает сгенерированное изображение и, при необходимости, короткий текстовый комментарий.

Почему этот пример совместим с нашим proxy

В коде gateway для chat/completions:

  • проверяются только базовые поля model и messages;
  • message.content допускается как строка, так и произвольный JSON‑блок;
  • исходное тело запроса проксируется дальше без нормализации.

Поэтому для мультимодальных моделей можно передавать не только простой текст, но и массивы content‑блоков или дополнительные совместимые параметры, если их поддерживает upstream‑модель.

Пример мультимодального content

Если модель ожидает массив блоков в messages[*].content, gateway такой формат не ломает. Пример запроса для анализа изображения:

curl https://routerapi.ru/api/v1/chat/completions \
  -H "Authorization: Bearer $YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{
    \"model\": \"google/gemini-2.5-flash-image\",
    \"messages\": [
      {
        \"role\": \"user\",
        \"content\": [
          {
            \"type\": \"text\",
            \"text\": \"Опиши это изображение\"
          },
          {
            \"type\": \"image_url\",
            \"image_url\": {
              \"url\": \"data:image/png;base64,BASE64_IMAGE\"
            }
          }
        ]
      }
    ]
  }"

Такой формат согласуется с валидатором gateway, потому что content там принимается как raw JSON.

Формат ответа с изображением

В успешном ответе сгенерированные изображения находятся в массиве images внутри сообщения ассистента, например:

{
  "choices": [
    {
      "message": {
        "role": "assistant",
        "content": "Я создал для вас изображение заката.",
        "images": [
          {
            "type": "image_url",
            "image_url": {
              "url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
            }
          }
        ]
      }
    }
  ]
}
  • image_url.url содержит data‑URL с base64‑картинкой.
  • Обычно используется формат PNG (data:image/png;base64,...).

Ограничения и практические замечания

  • Успех генерации зависит не только от gateway, но и от доступности конкретной upstream‑модели.
  • Если у пользователя нет баланса и активных пакетов, gateway вернёт 402 ещё до обращения к модели.
  • Если провайдер временно перегружен, возможен ответ 429.
  • Не все модели из /api/v1/models умеют генерировать изображения, поэтому перед использованием сверяйтесь с их возможностями.

Что дальше

  • Используйте GET /api/v1/models, чтобы выбрать совместимую image‑модель.
  • Для базового текстового сценария смотрите страницу «Первый запрос к API».

Нужен следующий раздел?

Откройте обзор, dashboard, мультимодальность или технические сценарии API.