Для получения чистого 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.
Справочник API
Схемы запросов и ответов VEGA очень похожи на Chat API от OpenAI, с небольшими отличиями. На высоком уровне VEGA нормализует схему между моделями и провайдерами, так что вам нужно изучить только одну.
Спецификация OpenAPI
Полный API VEGA задокументирован с помощью спецификации OpenAPI. Вы можете получить спецификацию в формате YAML или JSON:
Эти спецификации можно использовать с инструментами вроде Swagger UI, Postman или любым генератором кода, совместимым с OpenAPI, чтобы исследовать API или генерировать клиентские библиотеки.
Запросы
Формат запроса Completions
Ниже представлена схема запроса в виде TypeScript‑типа. Это будет тело вашего POST‑запроса к эндпоинту /api/v1/chat/completions (см. быстрый старт выше для примера).
Для полного списка параметров см. Parameters.
// Определения подтипов ниже
type Request = {
// Требуется либо "messages", либо "prompt"
messages?: Message[];
prompt?: string;
// Если "model" не указан, используется модель по умолчанию пользователя
model?: string; // См. раздел "Supported Models"
// Позволяет принудительно задать формат вывода модели.
// См. раздел "Structured Outputs" ниже и страницу моделей, чтобы узнать, какие модели это поддерживают.
response_format?: ResponseFormat;
stop?: string | string[];
stream?: boolean; // Включить потоковую передачу
// Плагины для расширения возможностей модели (парсинг PDF, исправление ответов)
// См. раздел "Plugins": api.vega.chat/docs/guides/features/plugins
plugins?: Plugin[];
// См. LLM Parameters (api.vega.chat/docs/api/reference/parameters)
max_tokens?: number; // Диапазон: [1, context_length)
temperature?: number; // Диапазон: [0, 2]
// Вызов инструментов
// Будет передан без изменений провайдерам, реализующим интерфейс OpenAI.
// Для провайдеров с кастомными интерфейсами мы трансформируем и сопоставляем свойства.
// Иначе мы преобразуем инструменты в шаблон YAML. Модель отвечает сообщением‑ассистентом.
// См. модели, поддерживающие вызов инструментов: /aimodels?supported_parameters=tools
tools?: Tool[];
tool_choice?: ToolChoice;
// Расширенные необязательные параметры
seed?: number; // Только целое число
top_p?: number; // Диапазон: (0, 1]
top_k?: number; // Диапазон: [1, Infinity) — недоступно для моделей OpenAI
frequency_penalty?: number; // Диапазон: [-2, 2]
presence_penalty?: number; // Диапазон: [-2, 2]
repetition_penalty?: number; // Диапазон: (0, 2]
logit_bias?: { [key: number]: number };
top_logprobs: number; // Только целое число
min_p?: number; // Диапазон: [0, 1]
top_a?: number; // Диапазон: [0, 1]
// Снижение задержки за счёт предсказанного вывода модели
// https://platform.openai.com/docs/guides/latency-optimization#use-predicted-outputs
prediction?: { type: 'content'; content: string };
// Параметры, специфичные только для VEGA
// См. раздел "Model Routing": api.vega.chat/docs/guides/features/model-routing
models?: string[];
route?: 'fallback';
// См. раздел "Provider Routing": api.vega.chat/docs/guides/routing/provider-selection
provider?: ProviderPreferences;
user?: string; // Стабильный идентификатор ваших конечных пользователей. Помогает обнаруживать и предотвращать злоупотребления.
// Параметры отладки (только при потоковой передаче)
debug?: {
echo_upstream_body?: boolean; // Если true, возвращает трансформированное тело запроса, отправленное провайдеру
};
};
// Подтипы:
type TextContent = {
type: 'text';
text: string;
};
type ImageContentPart = {
type: 'image_url';
image_url: {
url: string; // URL или base64‑закодированные данные изображения
detail?: string; // Необязательно, по умолчанию "auto"
};
};
type ContentPart = TextContent | ImageContentPart;
type Message =
| {
role: 'user' | 'assistant' | 'system';
// ContentParts применимы только к роли "user":
content: string | ContentPart[];
// Если указано "name", оно будет добавлено так:
// для моделей, не являющихся OpenAI: `{name}: {content}`
name?: string;
}
| {
role: 'tool';
content: string;
tool_call_id: string;
name?: string;
};
type FunctionDescription = {
description?: string;
name: string;
parameters: object; // JSON Schema object
};
type Tool = {
type: 'function';
function: FunctionDescription;
};
type ToolChoice =
| 'none'
| 'auto'
| {
type: 'function';
function: {
name: string;
};
};
// Формат ответа для структурированных выводов
type ResponseFormat =
| { type: 'json_object' }
| {
type: 'json_schema';
json_schema: {
name: string;
strict?: boolean;
schema: object; // JSON Schema object
};
};
// Конфигурация плагинов
type Plugin = {
id: string; // 'web', 'file-parser', 'response-healing', 'context-compression'
enabled?: boolean;
// Дополнительные опции, специфичные для плагина
[key: string]: unknown;
};Структурированные выводы
Параметр response_format позволяет заставить модель возвращать структурированные JSON‑ответы. VEGA поддерживает два режима:
{ type: 'json_object' }: базовый режим JSON — модель вернёт корректный JSON{ type: 'json_schema', json_schema: { ... } }: строгий режим схемы — модель вернёт JSON, точно соответствующий вашей схеме
Подробное использование и примеры см. в разделе Structured Outputs. Чтобы найти модели, поддерживающие структурированные выводы, проверьте страницу моделей.
Плагины
Плагины VEGA расширяют возможности модели функциями веб‑поиска, обработки PDF, исправления ответов и сжатия контекста. Включите плагины, добавив массив plugins в ваш запрос:
{
"plugins": [
{ "id": "web" },
{ "id": "response-healing" }
]
}Доступные плагины: web (поиск в реальном времени), file-parser (обработка PDF), response-healing (автоматический ремонт JSON) и context-compression (сжатие подсказок «middle‑out»). Подробные параметры конфигурации см. в разделе Plugins.
Заголовки
VEGA позволяет указывать некоторые необязательные заголовки для идентификации вашего приложения и его обнаружения пользователями на нашем сайте.
HTTP-Referer: идентифицирует ваше приложение на VEGAX-OpenRouter-Title: задаёт/изменяет название вашего приложения (X-Titleтакже принимается)X-OpenRouter-Categories: назначает категории маркетплейса (см. App Attribution)
fetch('https://api.vega.chat/api/v1/chat/completions', {
method: 'POST',
headers: {
Authorization: 'Bearer <VEGA_API_KEY>',
'HTTP-Referer': '<YOUR_SITE_URL>', // Необязательно. URL сайта для ранжирования на VEGA.
'X-OpenRouter-Title': '<YOUR_SITE_NAME>', // Необязательно. Название сайта для ранжирования на VEGA.
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: 'openai/gpt-5.2',
messages: [
{
role: 'user',
content: 'What is the meaning of life?',
},
],
}),
});Если параметр model опущен, будет использована модель по умолчанию пользователя или плательщика.
В противном случае выберите значение model из поддерживаемых моделей или API и укажите префикс организации. VEGA выберет наименее дорогой и лучший GPU, доступный для выполнения запроса, и при необходимости переключится на других провайдеров или GPU, если получит ответ с кодом 5xx или будет ограничена по частоте запросов.
Поддерживаются также Server‑Sent Events (SSE) — это позволяет включить потоковую передачу для всех моделей. Просто укажите stream: true в теле запроса. В SSE‑потоке иногда будет появляться «comment»‑payload, который следует игнорировать (см. ниже).
Если выбранная модель не поддерживает определённый параметр запроса (например, logit_bias в моделях, не являющихся OpenAI, или top_k для OpenAI), параметр будет проигнорирован. Остальные параметры передаются в базовый API модели.
Предзаполнение ассистента
VEGA поддерживает запрос у модели завершить частичный ответ. Это удобно, когда нужно направить модель к определённому стилю ответа.
Чтобы воспользоваться этой функцией, просто добавьте сообщение с role: "assistant" в конец массива messages.
fetch('https://api.vega.chat/api/v1/chat/completions', {
method: 'POST',
headers: {
Authorization: 'Bearer <VEGA_API_KEY>',
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: 'openai/gpt-5.2',
messages: [
{ role: 'user', content: 'What is the meaning of life?' },
{ role: 'assistant', content: "I'm not sure, but my best guess is" },
],
}),
});Ответы
Формат CompletionsResponse
VEGA нормализует схему между моделями и провайдерами в соответствии с Chat API от OpenAI.
Это означает, что choices всегда массив, даже если модель вернула лишь один результат. Каждый элемент будет содержать свойство delta, если был запрошен поток, и message в противном случае. Это упрощает использование единого кода для всех моделей.
Схема ответа в виде TypeScript‑типа:
// Определения подтипов ниже
type Response = {
id: string;
// В зависимости от того, задали ли вы "stream": true и
// передали ли вы "messages" или "prompt", форма вывода будет разной
choices: (NonStreamingChoice | StreamingChoice | NonChatChoice)[];
created: number; // Unix‑время
model: string;
object: 'chat.completion' | 'chat.completion.chunk';
system_fingerprint?: string; // Присутствует только если провайдер поддерживает
// Данные об использовании всегда возвращаются для неблокирующего режима.
// При потоковой передаче usage возвращается один раз в последнем чанке
// перед сообщением [DONE], с пустым массивом choices.
usage?: ResponseUsage;
};// **VEGA** всегда возвращает подробную информацию об использовании.
// Подсчёт токенов производится токенизатором модели.
type ResponseUsage = {
/** Включая изображения, входной аудио и инструменты, если они есть */
prompt_tokens: number;
/** Сгенерированные токены */
completion_tokens: number;
/** Сумма двух вышеуказанных полей */
total_tokens: number;
/** Детализация токенов prompt (необязательно) */
prompt_tokens_details?: {
cached_tokens: number; // Токены, кэшированные эндпоинтом
cache_write_tokens?: number; // Токены, записанные в кэш (модели с явным кэшированием)
audio_tokens?: number; // Токены, использованные для входного аудио
video_tokens?: number; // Токены, использованные для входного видео
};
/** Детализация токенов completion (необязательно) */
completion_tokens_details?: {
reasoning_tokens?: number; // Токены, сгенерированные для рассуждений
audio_tokens?: number; // Токены, сгенерированные для аудио‑вывода
image_tokens?: number; // Токены, сгенерированные для вывода изображений
};
/** Стоимость в кредитах (необязательно) */
cost?: number;
/** Был ли запрос выполнен с использованием Bring Your Own Key */
is_byok?: boolean;
/** Подробный расчёт стоимости (необязательно) */
cost_details?: {
upstream_inference_cost?: number; // Показано только для BYOK‑запросов
upstream_inference_prompt_cost: number;
upstream_inference_completions_cost: number;
};
/** Использование серверных инструментов (необязательно) */
server_tool_use?: {
web_search_requests?: number;
};
};// Подтипы:
type NonChatChoice = {
finish_reason: string | null;
text: string;
error?: ErrorResponse;
};
type NonStreamingChoice = {
finish_reason: string | null;
native_finish_reason: string | null;
message: {
content: string | null;
role: string;
tool_calls?: ToolCall[];
};
error?: ErrorResponse;
};
type StreamingChoice = {
finish_reason: string | null;
native_finish_reason: string | null;
delta: {
content: string | null;
role?: string;
tool_calls?: ToolCall[];
};
error?: ErrorResponse;
};
type ErrorResponse = {
code: number; // См. раздел "Error Handling"
message: string;
metadata?: Record<string, unknown>; // Содержит дополнительную информацию об ошибке, например детали провайдера, сырое сообщение об ошибке и т.д.
};
type ToolCall = {
id: string;
type: 'function';
function: FunctionCall;
};Пример:
{
"id": "gen-xxxxxxxxxxxxxx",
"choices": [
{
"finish_reason": "stop", // Нормализованный finish_reason
"native_finish_reason": "stop", // Исходный finish_reason от провайдера
"message": {
// будет "delta", если поток
"role": "assistant",
"content": "Hello there!"
}
}
],
"usage": {
"prompt_tokens": 10,
"completion_tokens": 4,
"total_tokens": 14,
"prompt_tokens_details": {
"cached_tokens": 0
},
"completion_tokens_details": {
"reasoning_tokens": 0
},
"cost": 0.00014
},
"model": "openai/gpt-4o" // Может быть также "anthropic/claude-sonnet-4.6" и др., в зависимости от фактически использованной модели
}Причина завершения
VEGA нормализует finish_reason каждой модели до одного из следующих значений: tool_calls, stop, length, content_filter, error.
У некоторых моделей и провайдеров могут быть дополнительные причины завершения. Необработанная строка finish_reason, возвращённая моделью, доступна через свойство native_finish_reason.
Запрос стоимости и статистики
Подсчёт токенов в ответе API completions производится токенизатором модели. Использование кредитов и цены моделей основаны на этих нативных подсчётах.
Вы также можете использовать возвращённый id, чтобы запросить статистику генерации (включая количество токенов и стоимость) после завершения запроса через эндпоинт /api/v1/generation. Это удобно для аудита исторического использования или асинхронного получения статистики.
const generation = await fetch(
'https://api.vega.chat/api/v1/generation?id=$GENERATION_ID',
{ headers },
);
const stats = await generation.json();Смотрите полное описание ответа в справочнике API Generation.
Обратите внимание, что подсчёт токенов также доступен в поле usage тела ответа для неблокирующих completions.