API ВЕГА

Индекс документации

Получите полный индекс документации по адресу: https://api.vega.chat/docs/llms.txt
Используйте этот файл, чтобы узнать о всех доступных страницах перед дальнейшим изучением.

api guides

Справочник API

MD версия

Обзор API ВЕГА

Схемы запросов и ответов API ВЕГА очень похожи на Chat API от OpenAI, с небольшими отличиями. На высоком уровне API ВЕГА нормализует схему между моделями и провайдерами, поэтому вам нужно изучить только одну.

Спецификация OpenAPI

Полный API ВЕГА задокументирован с использованием спецификации OpenAPI. Вы можете получить спецификацию в формате YAML или JSON:

Эти спецификации можно использовать с такими инструментами, как Swagger UI, Postman или любой генератор кода, совместимый с OpenAPI, чтобы исследовать API или генерировать клиентские библиотеки.

Запросы

Формат запроса на завершения

Ниже представлена схема запроса в виде TypeScript‑типа. Это будет тело вашего POST‑запроса к эндпоинту /api/v1/chat/completions (см. быстрый старт выше для примера).

Для полного списка параметров см. раздел Параметры.

typescript
// Definitions of subtypes are below type Request = { // Either "messages" or "prompt" is required messages?: Message[]; prompt?: string; // If "model" is unspecified, uses the user's default model?: string; // See "Supported Models" section // Allows to force the model to produce specific output format. // See "Structured Outputs" section below and models page for which models support it. response_format?: ResponseFormat; stop?: string | string[]; stream?: boolean; // Enable streaming // Plugins to extend model capabilities (PDF parsing, response healing) // See "Plugins" section: openrouter.ai/docs/api-guides/overview plugins?: Plugin[]; // See LLM Parameters (openrouter.ai/docs/api-guides/parameters) max_tokens?: number; // Range: [1, context_length) temperature?: number; // Range: [0, 2] // Tool calling // Will be passed down as-is for providers implementing OpenAI's interface. // For providers with custom interfaces, we transform and map the properties. // Otherwise, we transform the tools into a YAML template. The model responds with an assistant message. // See models supporting tool calling: openrouter.ai/models?supported_parameters=tools tools?: Tool[]; tool_choice?: ToolChoice; // Advanced optional parameters seed?: number; // Integer only top_p?: number; // Range: (0, 1] top_k?: number; // Range: [1, Infinity) Not available for OpenAI models frequency_penalty?: number; // Range: [-2, 2] presence_penalty?: number; // Range: [-2, 2] repetition_penalty?: number; // Range: (0, 2] logit_bias?: { [key: number]: number }; top_logprobs: number; // Integer only min_p?: number; // Range: [0, 1] top_a?: number; // Range: [0, 1] // Reduce latency by providing the model with a predicted output // https://platform.openai.com/docs/api-guides/overview#use-predicted-outputs prediction?: { type: 'content'; content: string }; // OpenRouter-only parameters // See "Model Routing" section: openrouter.ai/docs/api-guides/overview models?: string[]; route?: 'fallback'; // See "Provider Routing" section: openrouter.ai/docs/api-guides/overview provider?: ProviderPreferences; user?: string; // A stable identifier for your end-users. Used to help detect and prevent abuse. // Debug options (streaming only) debug?: { echo_upstream_body?: boolean; // If true, returns the transformed request body sent to the provider }; }; // Subtypes: type TextContent = { type: 'text'; text: string; }; type ImageContentPart = { type: 'image_url'; image_url: { url: string; // URL or base64 encoded image data detail?: string; // Optional, defaults to "auto" }; }; type ContentPart = TextContent | ImageContentPart; type Message = | { role: 'user' | 'assistant' | 'system'; // ContentParts are only for the "user" role: content: string | ContentPart[]; // If "name" is included, it will be prepended like this // for non-OpenAI models: `{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; }; }; // Response format for structured outputs type ResponseFormat = | { type: 'json_object' } | { type: 'json_schema'; json_schema: { name: string; strict?: boolean; schema: object; // JSON Schema object }; }; // Plugin configuration type Plugin = { id: string; // 'web', 'file-parser', 'response-healing', 'context-compression' enabled?: boolean; // Additional plugin-specific options [key: string]: unknown; };

Структурированные выводы

Параметр response_format позволяет заставить модель возвращать структурированные JSON‑ответы. API ВЕГА поддерживает два режима:

  • { type: 'json_object' }: базовый JSON‑режим — модель вернёт корректный JSON
  • { type: 'json_schema', json_schema: { ... } }: строгий режим схемы — модель вернёт JSON, точно соответствующий вашей схеме

Подробное использование и примеры см. в разделе Структурированные выводы. Чтобы найти модели, поддерживающие структурированные выводы, проверьте страницу моделей.

Плагины

Плагины API ВЕГА расширяют возможности модели, добавляя такие функции, как веб‑поиск, обработка PDF, восстановление ответов и сжатие контекста. Включите плагины, добавив массив plugins в ваш запрос:

json
{ "plugins": [ { "id": "web" }, { "id": "response-healing" } ] }

Доступные плагины: web (поиск в реальном времени), file-parser (обработка PDF), response-healing (автоматический ремонт JSON) и context-compression (сжатие подсказки «середина‑в‑наружу»). Подробные параметры конфигурации см. в разделе Плагины

Заголовки

API ВЕГА позволяет указать некоторые необязательные заголовки для идентификации вашего приложения и его отображения пользователям на нашем сайте.

  • HTTP-Referer: идентифицирует ваше приложение на api.vega.chat

  • X-OpenRouter-Title: задаёт/изменяет название вашего приложения (X-Title также принимается)

  • X-OpenRouter-Categories: назначает категории в маркете (см. Атрибуция приложений)

    typescript
    fetch('https://openrouter.ai/api/v1/chat/completions', { method: 'POST', headers: { Authorization: 'Bearer <OPENROUTER_API_KEY>', 'HTTP-Referer': '<YOUR_SITE_URL>', // Optional. Site URL for rankings on openrouter.ai. 'X-OpenRouter-Title': '<YOUR_SITE_NAME>', // Optional. Site title for rankings on openrouter.ai. '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, указав префикс организации. API ВЕГА выберет наименее дорогие и лучшие доступные GPU для обработки запроса и при необходимости переключится на других провайдеров или GPU, если получит ответ с кодом 5xx или будет ограничен по частоте запросов.

Потоковая передача

Server‑Sent Events (SSE) также поддерживаются, позволяя включить потоковую передачу для всех моделей. Просто укажите stream: true в теле запроса. Поток SSE время от времени будет содержать «комментарий», который следует игнорировать (см. ниже).

Нестандартные параметры

Если выбранная модель не поддерживает определённый параметр запроса (например, logit_bias в моделях, не являющихся OpenAI, или top_k для OpenAI), параметр игнорируется. Остальные параметры передаются в базовый API модели.

Предзаполнение ассистента

API ВЕГА поддерживает запросы, в которых модели просят завершить частичный ответ. Это удобно для направления модели к определённому стилю ответа.

Чтобы воспользоваться этой функцией, просто добавьте сообщение с role: "assistant" в конец массива messages.

typescript
fetch('https://openrouter.ai/api/v1/chat/completions', { method: 'POST', headers: { Authorization: 'Bearer <OPENROUTER_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

API