Публичная документация
Выбор модели для генерации изображений
Для генерации изображений используйте модели, которые 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.