Для получения чистого Markdown любой страницы добавьте .md к URL страницы.
Для полного индекса документации см. https://api.vega.chat/docs/llms.txt.
Для полного содержания документации см. https://api.vega.chat/docs/llms-full.txt.
Для интеграции AI‑клиентов (Claude Code, Cursor и др.) подключитесь к MCP‑серверу по адресу https://api.vega.chat/docs/_mcp/server.
Генерация изображений
VEGA поддерживает генерацию изображений через эндпоинты Chat Completions и Responses. Поддерживаемые модели, их возможности и цены можно посмотреть, отфильтровав наш список моделей по выводу изображений.
Поиск моделей
Модели для генерации изображений можно найти несколькими способами:
Через API
Используйте параметр запроса output_modalities в Models API, чтобы программно обнаружить модели генерации изображений:
# Вывести только модели генерации изображений
curl "https://api.vega.chat/api/v1/models?output_modalities=image"
# Вывести модели, поддерживающие как текст, так и изображения
curl "https://api.vega.chat/api/v1/models?output_modalities=text,image"Смотрите Models – Query Parameters для полного списка поддерживаемых значений модальностей.
На странице моделей
Перейдите на страницу моделей и отфильтруйте по модальностям вывода, чтобы найти модели, способные генерировать изображения. Ищите модели, у которых в output_modalities указано "image".
В чат‑комнате
При использовании чат‑комнаты нажмите кнопку Image, чтобы автоматически отфильтровать и выбрать модели с возможностью генерации изображений. Если активной модели с поддержкой изображений нет, вам будет предложено добавить её.
Использование API
Для генерации изображений отправьте запрос к эндпоинту /api/v1/chat/completions с параметром modalities. Значение зависит от возможностей модели:
- Модели, выводящие и текст, и изображения (например, Gemini):
modalities: ["image", "text"] - Модели, выводящие только изображения (например, Sourceful, Flux):
modalities: ["image"]
Базовая генерация изображений
import { OpenRouter } from '@openrouter/sdk';
const client = new OpenRouter({
apiKey: '{{API_KEY_REF}}',
});
const result = await client.chat.send({
model: '{{MODEL}}',
messages: [
{
role: 'user',
content: 'Generate a beautiful sunset over mountains',
},
],
modalities: ['image', 'text'],
stream: false,
});
// Сгенерированное изображение будет в сообщении ассистента
if (result.choices) {
const message = result.choices[0].message;
if (message.images) {
message.images.forEach((image, index) => {
const imageUrl = image.imageUrl.url; // Base64 data URL
console.log(`Generated image ${index + 1}: ${imageUrl.substring(0, 50)}...`);
});
}
}import requests
import json
url = "https://api.vega.chat/api/v1/chat/completions"
headers = {
"Authorization": f"Bearer {API_KEY_REF}",
"Content-Type": "application/json"
}
payload = {
"model": "{{MODEL}}",
"messages": [
{
"role": "user",
"content": "Generate a beautiful sunset over mountains"
}
],
"modalities": ["image", "text"]
}
response = requests.post(url, headers=headers, json=payload)
result = response.json()
# Сгенерированное изображение будет в сообщении ассистента
if result.get("choices"):
message = result["choices"][0]["message"]
if message.get("images"):
for image in message["images"]:
image_url = image["image_url"]["url"] # Base64 data URL
print(f"Generated image: {image_url[:50]}...")const response = await fetch('https://api.vega.chat/api/v1/chat/completions', {
method: 'POST',
headers: {
Authorization: `Bearer ${API_KEY_REF}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: '{{MODEL}}',
messages: [
{
role: 'user',
content: 'Generate a beautiful sunset over mountains',
},
],
modalities: ['image', 'text'],
}),
});
const result = await response.json();
// Сгенерированное изображение будет в сообщении ассистента
if (result.choices) {
const message = result.choices[0].message;
if (message.images) {
message.images.forEach((image, index) => {
const imageUrl = image.image_url.url; // Base64 data URL
console.log(`Generated image ${index + 1}: ${imageUrl.substring(0, 50)}...`);
});
}
}Параметры конфигурации изображения
Некоторые модели генерации изображений поддерживают дополнительную настройку через параметр image_config.
Соотношение сторон
Установите image_config.aspect_ratio, чтобы запросить конкретные соотношения сторон для генерируемых изображений.
Поддерживаемые соотношения сторон:
1:1→ 1024×1024 (по умолчанию)2:3→ 832×12483:2→ 1248×8323:4→ 864×11844:3→ 1184×8644:5→ 896×11525:4→ 1152×8969:16→ 768×134416:9→ 1344×76821:9→ 1536×672
Соотношения сторон Azure MAI Image (поддерживает microsoft/mai-image-2.5):
1:1→ 1024×1024 (по умолчанию)4:3→ 1024×7683:4→ 768×102416:9→ 1365×7689:16→ 768×13653:2→ 1152×7682:3→ 768×1152
Расширенные соотношения сторон (поддерживает только google/gemini-3.1-flash-image-preview):
1:4→ Высокий, узкий формат, идеален для прокручиваемых каруселей и вертикальных UI‑элементов4:1→ Широкий, короткий формат для баннеров‑героев и горизонтальных макетов1:8→ Очень высокий формат для заголовков‑уведомлений и узких вертикальных пространств8:1→ Очень широкий формат для широкоформатных баннеров и панорамных макетов
Размер изображения
Установите image_config.image_size, чтобы управлять разрешением генерируемых изображений.
Поддерживаемые размеры:
1K→ Стандартное разрешение (по умолчанию)2K→ Более высокое разрешение4K→ Наивысшее разрешение0.5K→ Низкое разрешение, оптимизировано для эффективности (поддерживается толькоgoogle/gemini-3.1-flash-image-preview)
Вы можете комбинировать aspect_ratio и image_size в одном запросе:
import requests
import json
url = "https://api.vega.chat/api/v1/chat/completions"
headers = {
"Authorization": f"Bearer {API_KEY_REF}",
"Content-Type": "application/json"
}
payload = {
"model": "{{MODEL}}",
"messages": [
{
"role": "user",
"content": "Create a picture of a nano banana dish in a fancy restaurant with a Gemini theme"
}
],
"modalities": ["image", "text"],
"image_config": {
"aspect_ratio": "16:9",
"image_size": "4K"
}
}
response = requests.post(url, headers=headers, json=payload)
result = response.json()
if result.get("choices"):
message = result["choices"][0]["message"]
if message.get("images"):
for image in message["images"]:
image_url = image["image_url"]["url"]
print(f"Generated image: {image_url[:50]}...")const response = await fetch('https://api.vega.chat/api/v1/chat/completions', {
method: 'POST',
headers: {
Authorization: `Bearer ${API_KEY_REF}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: '{{MODEL}}',
messages: [
{
role: 'user',
content: 'Create a picture of a nano banana dish in a fancy restaurant with a Gemini theme',
},
],
modalities: ['image', 'text'],
image_config: {
aspect_ratio: '16:9',
image_size: '4K',
},
}),
});
const result = await response.json();
if (result.choices) {
const message = result.choices[0].message;
if (message.images) {
message.images.forEach((image, index) => {
const imageUrl = image.image_url.url;
console.log(`Generated image ${index + 1}: ${imageUrl.substring(0, 50)}...`);
});
}
}Strength (только Recraft)
Установите image_config.strength, чтобы контролировать степень отклонения выходного изображения от входного при генерации «image‑to‑image». Параметр применяется только при передаче входных изображений в messages и поддерживается только моделями Recraft.
- Диапазон:
0.0–1.0 - По умолчанию:
0.2 - Меньшие значения дают результат, ближе к входному изображению; большие — более креативное отклонение.
Пример:
{
"image_config": {
"strength": 0.7
}
}Text Layout (только Recraft V3)
Используйте image_config.text_layout, чтобы разместить текст в определённых позициях на генерируемом изображении. Каждый элемент описывает текст и ограничивающий прямоугольник, заданный четырьмя угловыми точками в нормализованных координатах (0 – 1). Параметр поддерживается только Recraft V3 (recraft/recraft-v3) для запросов как text‑to‑image, так и image‑to‑image. Recraft V4 и V4 Pro не поддерживают text_layout.
Каждый элемент имеет:
text(обязательно): строка текстаbbox(обязательно): массив из 4 пар координат[x, y], определяющих углы (верх‑лево, верх‑право, низ‑право, низ‑лево) в диапазоне 0‑1
Пример:
{
"image_config": {
"text_layout": [
{
"text": "Hello",
"bbox": [[0.3, 0.45], [0.6, 0.45], [0.6, 0.55], [0.3, 0.55]]
},
{
"text": "World",
"bbox": [[0.35, 0.6], [0.65, 0.6], [0.65, 0.7], [0.35, 0.7]]
}
]
}
}Style (только Recraft V3)
Используйте image_config.style, чтобы применить к изображению определённый художественный стиль. Параметр поддерживается только Recraft V3 (recraft/recraft-v3). Recraft V4 и V4 Pro стили не поддерживают.
Смотрите полный список доступных стилей в документации Recraft. Векторные стили не поддерживаются.
Пример:
{
"image_config": {
"style": "Photorealism"
}
}RGB‑цвета (только Recraft)
Используйте image_config.rgb_colors, чтобы задать палитру цветов, влияющую на генерируемое изображение. Каждый цвет задаётся массивом [r, g, b] из трёх целых (0‑255). Параметр поддерживается моделями Recraft для запросов как text‑to‑image, так и image‑to‑image.
Пример:
{
"image_config": {
"rgb_colors": [
[255, 0, 0],
[0, 128, 0]
]
}
}Фоновый RGB‑цвет (только Recraft)
Используйте image_config.background_rgb_color, чтобы задать конкретный цвет фона генерируемого изображения. Значение — массив [r, g, b] из трёх целых (0‑255). Параметр поддерживается моделями Recraft для запросов как text‑to‑image, так и image‑to‑image.
Пример:
{
"image_config": {
"background_rgb_color": [0, 0, 255]
}
}Можно комбинировать rgb_colors и background_rgb_color в одном запросе:
{
"image_config": {
"rgb_colors": [[255, 0, 0]],
"background_rgb_color": [255, 255, 255]
}
}Font Inputs (только Sourceful)
Используйте image_config.font_inputs, чтобы отрисовать пользовательский текст определёнными шрифтами в генерируемых изображениях. Текст, который вы хотите отобразить, также должен присутствовать в вашем запросе для лучшего результата. Параметр поддерживается только моделями Sourceful (sourceful/riverflow-v2-fast и sourceful/riverflow-v2-pro).
Каждый ввод шрифта — объект с:
font_url(обязательно): URL к файлу шрифтаtext(обязательно): Текст, который нужно отрисовать этим шрифтом
Ограничения:
- Максимум 2 шрифта в запросе
- Дополнительная стоимость: $0.03 за каждый шрифт
Пример:
{
"image_config": {
"font_inputs": [
{
"font_url": "https://example.com/fonts/custom-font.ttf",
"text": "Hello World"
}
]
}
}Советы для лучшего результата:
- Включайте текст в запрос вместе с деталями о названии шрифта, цвете, размере и позиции
- Параметр
textдолжен точно соответствовать тому, что указано в запросе — избегайте лишних слов или кавычек - Используйте разрывы строк или двойные пробелы для разделения заголовков и подзаголовков при одинаковом шрифте
- Наилучший результат достигается с короткими, чёткими заголовками и подзаголовками
Super Resolution References (только Sourceful)
Используйте image_config.super_resolution_references, чтобы улучшить низкокачественные элементы входного изображения с помощью высококачественных референсных изображений. Выходное изображение будет того же размера, что и входное, поэтому используйте более крупные входные изображения для лучшего результата. Параметр поддерживается только моделями Sourceful (sourceful/riverflow-v2-fast и sourceful/riverflow-v2-pro) при генерации image‑to‑image (т.е. когда в messages передаются изображения).
Ограничения:
- Максимум 4 URL‑референса в запросе
- Работает только с запросами image‑to‑image (игнорируется, если в
messagesнет изображений) - Дополнительная стоимость: 20 ₽ за каждый референс
Пример:
{
"image_config": {
"super_resolution_references": [
"https://example.com/reference1.jpg",
"https://example.com/reference2.jpg"
]
}
}Советы для лучшего результата:
- Предоставьте входное изображение, где нужные элементы присутствуют, но имеют низкое качество
- Используйте более крупные входные изображения для лучшего качества вывода (вывод совпадает с размером входа)
- Выбирайте высококачественные референсные изображения, демонстрирующие желаемый вид улучшенных элементов
Потоковая генерация изображений
Генерация изображений также работает с потоковыми ответами:
import requests
import json
url = "https://api.vega.chat/api/v1/chat/completions"
headers = {
"Authorization": f"Bearer {API_KEY_REF}",
"Content-Type": "application/json"
}
payload = {
"model": "{{MODEL}}",
"messages": [
{
"role": "user",
"content": "Create an image of a futuristic city"
}
],
"modalities": ["image", "text"],
"stream": True
}
response = requests.post(url, headers=headers, json=payload, stream=True)
for line in response.iter_lines():
if line:
line = line.decode('utf-8')
if line.startswith('data: '):
data = line[6:]
if data != '[DONE]':
try:
chunk = json.loads(data)
if chunk.get("choices"):
delta = chunk["choices"][0].get("delta", {})
if delta.get("images"):
for image in delta["images"]:
print(f"Generated image: {image['image_url']['url'][:50]}...")
except json.JSONDecodeError:
continueconst response = await fetch('https://api.vega.chat/api/v1/chat/completions', {
method: 'POST',
headers: {
Authorization: `Bearer ${API_KEY_REF}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: '{{MODEL}}',
messages: [
{
role: 'user',
content: 'Create an image of a futuristic city',
},
],
modalities: ['image', 'text'],
stream: true,
}),
});
const reader = response.body?.getReader();
const decoder = new TextDecoder();
while (true) {
const { done, value } = await reader.read();
if (done) break;
const chunk = decoder.decode(value);
const lines = chunk.split('\n');
for (const line of lines) {
if (line.startsWith('data: ')) {
const data = line.slice(6);
if (data !== '[DONE]') {
try {
const parsed = JSON.parse(data);
if (parsed.choices) {
const delta = parsed.choices[0].delta;
if (delta?.images) {
delta.images.forEach((image, index) => {
console.log(`Generated image ${index + 1}: ${image.image_url.url.substring(0, 50)}...`);
});
}
}
} catch (e) {
// Пропустить некорректный JSON
}
}
}
}
}Формат ответа
При генерации изображений сообщение ассистента содержит поле images с сгенерированными изображениями:
{
"choices": [
{
"message": {
"role": "assistant",
"content": "I've generated a beautiful sunset image for you.",
"images": [
{
"type": "image_url",
"image_url": {
"url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
}
}
]
}
}
]
}Формат изображения
- Формат: изображения возвращаются в виде base64‑закодированных data‑URL
- Типы: обычно PNG (
data:image/png;base64,) - Несколько изображений: некоторые модели могут генерировать несколько изображений в одном ответе
- Размер: размеры зависят от возможностей модели
Совместимость моделей
Не все модели поддерживают генерацию изображений. Чтобы воспользоваться этой функцией:
- Проверьте модальности вывода: убедитесь, что у модели в
output_modalitiesприсутствует"image" - Установите параметр modalities: используйте
["image", "text"]для моделей, выводящих и то, и другое, или["image"]для моделей, выводящих только изображения - Выберите совместимые модели. Примеры:
google/gemini-3.1-flash-image-preview(поддерживает расширенные соотношения сторон и разрешение 0.5K)google/gemini-2.5-flash-imageblack-forest-labs/flux.2-problack-forest-labs/flux.2-flexsourceful/riverflow-v2-standard-preview- Другие модели с возможностью генерации изображений
Лучшие практики
- Чёткие запросы: предоставляйте детальные описания для лучшего качества изображений
- Выбор модели: используйте модели, специально предназначенные для генерации изображений
- Обработка ошибок: проверяйте наличие поля
imagesв ответе перед дальнейшей обработкой - Ограничения по скорости: генерация изображений может иметь другие лимиты, чем генерация текста
- Хранение: продумайте, как будете сохранять и обрабатывать base64‑данные изображений
Устранение неполадок
Нет изображений в ответе?
- Убедитесь, что модель поддерживает генерацию изображений (
output_modalitiesвключает"image") - Проверьте, что параметр
modalitiesустановлен правильно:["image", "text"]для моделей, выводящих и то, и другое, или["image"]для моделей, выводящих только изображения - Убедитесь, что ваш запрос действительно запрашивает генерацию изображения
Модель не найдена?
- Используйте страницу моделей, чтобы найти доступные модели генерации изображений
- Отфильтруйте по модальностям вывода, чтобы увидеть совместимые модели