Для получения чистого 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.

Веб‑поиск

MD версия

Инструменты сервера находятся в бета‑версии. API и поведение могут измениться.

Инструмент сервера openrouter:web_search предоставляет любой модели на VEGA доступ к актуальной информации из интернета. Когда модель определяет, что ей нужна текущая информация, она вызывает инструмент с запросом поиска. VEGA выполняет поиск и возвращает результаты, которые модель использует для формирования обоснованного, с указанием источников ответа.

Как это работает

  1. Вы включаете { "type": "openrouter:web_search" } в массив tools.
  2. На основе подсказки пользователя модель решает, нужен ли веб‑поиск, и генерирует запрос поиска.
  3. VEGA выполняет поиск, используя настроенный движок (по умолчанию auto, который использует нативный поиск провайдера, если он доступен, или переходит к Exa).
  4. Результаты поиска (URL‑адреса, заголовки и фрагменты содержимого) возвращаются модели.
  5. Модель синтезирует результаты в свой ответ. При необходимости она может выполнить несколько поисков в одном запросе.

Быстрый старт

typescript
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: 'What were the major AI announcements this week?'
      }
    ],
    tools: [
      { type: 'openrouter:web_search' }
    ]
  }),
});

const data = await response.json();
console.log(data.choices[0].message.content);
python
import requests

response = requests.post(
  "https://api.vega.chat/api/v1/chat/completions",
  headers={
    "Authorization": f"Bearer {{API_KEY_REF}}",
    "Content-Type": "application/json",
  },
  json={
    "model": "{{MODEL}}",
    "messages": [
      {
        "role": "user",
        "content": "What were the major AI announcements this week?"
      }
    ],
    "tools": [
      {"type": "openrouter:web_search"}
    ]
  }
)

data = response.json()
print(data["choices"][0]["message"]["content"])
bash
curl https://api.vega.chat/api/v1/chat/completions \
  -H "Authorization: Bearer {{API_KEY_REF}}" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "{{MODEL}}",
    "messages": [
      {
        "role": "user",
        "content": "What were the major AI announcements this week?"
      }
    ],
    "tools": [
      {"type": "openrouter:web_search"}
    ]
  }'

Конфигурация

Инструмент веб‑поиска принимает необязательные parameters для настройки поведения поиска:

json
{
  "type": "openrouter:web_search",
  "parameters": {
    "engine": "exa",
    "max_results": 5,
    "max_total_results": 20,
    "search_context_size": "medium",
    "allowed_domains": ["example.com"],
    "excluded_domains": ["reddit.com"]
  }
}
ПараметрТипПо умолчаниюОписание
enginestringautoДвижок поиска: auto, native, exa, firecrawl или parallel
max_resultsinteger5Максимальное количество результатов за один вызов поиска (1–25). Применяется к движкам Exa, Firecrawl и Parallel; игнорируется при нативном поиске провайдера
max_total_resultsintegerМаксимальное общее количество результатов во всех вызовах поиска в одном запросе. Полезно для контроля стоимости и объёма контекста в агентных циклах
search_context_sizestringОбъём контекста, который нужно получить: low, medium или high. Для Exa задаёт фиксированный лимит символов на результат (5 К/15 К/30 К); если параметр опущен, Exa выбирает адаптивно (~2‑4 К на результат). Для Parallel управляет общим числом символов во всех результатах (по умолчанию medium). Игнорируется при нативном поиске и Firecrawl
user_locationobjectПриблизительное местоположение пользователя для географически ориентированных результатов. В данный момент поддерживается только нативным поиском; игнорируется в Exa, Firecrawl и Parallel (см. ниже)
allowed_domainsstring[]Ограничить результаты указанными доменами. Поддерживается Exa, Firecrawl, Parallel и большинством нативных провайдеров (см. фильтрацию доменов)
excluded_domainsstring[]Исключить результаты из указанных доменов. Поддерживается Exa, Firecrawl, Parallel и некоторыми нативными провайдерами (см. фильтрацию доменов)

Местоположение пользователя

Передайте приблизительное местоположение, чтобы сместить результаты поиска в нужном направлении:

json
{
  "type": "openrouter:web_search",
  "parameters": {
    "user_location": {
      "type": "approximate",
      "city": "San Francisco",
      "region": "California",
      "country": "US",
      "timezone": "America/Los_Angeles"
    }
  }
}

Все поля внутри user_location являются необязательными.

Выбор движка

Инструмент сервера веб‑поиска поддерживает несколько поисковых движков:

  • auto (по умолчанию): использует нативный поиск, если провайдер его поддерживает, иначе переходит к Exa
  • native: принудительно использует встроенный веб‑поиск провайдера (при отсутствии поддержки переходит к Exa с предупреждением)
  • exa: использует API поиска Exa, который сочетает поиск по ключевым словам и векторный поиск. Возвращает выделения Exa — отрывки из каждой страницы, наиболее релевантные запросу, а не усечённый текст страницы. См. раздел Exa ниже.
  • firecrawl: использует API поиска Firecrawl (BYOK — bring your own key)
  • parallel: использует API поиска Parallel

Возможности движков

ВозможностьExaFirecrawlParallelНативный
Фильтрация доменовДаДаДаЗависит от провайдера
Контроль объёма контекстаДа*НетДа**Нет
API‑ключНа стороне сервераBYOK (ваш ключ)На стороне сервераОбрабатывается провайдером
<small> *\* Exa: ограничение применяется **на каждый результат**

*** Parallel: ограничение применяется как общее количество по всем результатам </small>

Exa

VEGA запрашивает у Exa выделения для каждого результата вместо опции text. Выделения — это извлечённые отрывки, выбранные Exa как наиболее релевантные запросу, что обычно даёт более качественный контекст на токен, чем усечённый текст страницы.

По умолчанию Exa выбирает адаптивный размер выделения для каждого запроса и документа — обычно ~2 000–4 000 символов на результат. Чтобы задать фиксированный бюджет на результат, установите search_context_size, который сопоставляется с параметром Exa contents.highlights.maxCharacters:

  • low — 5 000 символов на результат
  • medium — 15 000 символов на результат
  • high — 30 000 символов на результат

Если search_context_size опущен, VEGA позволяет Exa выбрать размер выделения адаптивно. Выделения возвращаются модели в каждом результате и отображаются вызывающим API через аннотации url_citation. Внутри одного результата отрывки из разных частей страницы разделяются маркерами Exa [...], поэтому поле content аннотации url_citation может выглядеть так:

First excerpt drawn from the page. [...] Second excerpt drawn from elsewhere in the same page. [...] Third excerpt.

Firecrawl (BYOK)

Firecrawl использует ваш собственный API‑ключ. Чтобы настроить:

  1. Перейдите в Настройки плагинов VEGA и выберите Firecrawl в качестве движка веб‑поиска.
  2. Примите Условия использования Firecrawl — будет создан аккаунт Firecrawl, привязанный к вашему email.
  3. Ваш аккаунт получает 10 000 бесплатных кредитов (кредиты истекают через 3 месяца).

Поиски Firecrawl используют ваши кредиты напрямую — дополнительных расходов от VEGA нет. Firecrawl поддерживает фильтрацию доменов (allowed_domains / excluded_domains), но они взаимно исключают друг друга — нельзя использовать оба параметра в одном запросе.

Parallel

Parallel поддерживает фильтрацию доменов и контроль объёма контекста (search_context_size), а также использует кредиты VEGA по цене 0.5 ₽ за запрос. В запросе включено до 10 результатов, далее 0.1 ₽ за каждый дополнительный результат.

Фильтрация доменов

Ограничьте домены, которые могут появляться в результатах поиска, используя allowed_domains и excluded_domains:

json
{
  "type": "openrouter:web_search",
  "parameters": {
    "allowed_domains": ["arxiv.org", "nature.com"],
    "excluded_domains": ["reddit.com"]
  }
}
Движокallowed_domainsexcluded_domainsПримечания
ExaДаДаМожно использовать одновременно
ParallelДаДаВзаимно исключают друг друга
FirecrawlДаДаВзаимно исключают друг друга
Native (Anthropic)ДаДаВзаимно исключают друг друга
Native (OpenAI)ДаНетexcluded_domains просто игнорируется
Native (xAI)ДаДаВзаимно исключают друг друга
Native (Perplexity)НетНетНе поддерживается через путь инструмента сервера

Управление общим числом результатов

Если модель выполняет несколько поисков в одном запросе, используйте max_total_results, чтобы ограничить суммарное количество результатов:

json
{
  "type": "openrouter:web_search",
  "parameters": {
    "max_results": 5,
    "max_total_results": 15
  }
}

После достижения лимита последующие вызовы поиска возвращают сообщение, информирующее модель о превышении лимита, вместо выполнения нового поиска. Это удобно для контроля стоимости и использования контекстного окна в агентных циклах.

Работает с API Responses

Инструмент сервера веб‑поиска также совместим с API Responses:

typescript
const response = await fetch('https://api.vega.chat/api/v1/responses', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer {{API_KEY_REF}}',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    model: '{{MODEL}}',
    input: 'What is the current price of Bitcoin?',
    tools: [
      { type: 'openrouter:web_search', parameters: { max_results: 3 } }
    ]
  }),
});

const data = await response.json();
console.log(data);
python
import requests

response = requests.post(
  "https://api.vega.chat/api/v1/responses",
  headers={
    "Authorization": f"Bearer {{API_KEY_REF}}",
    "Content-Type": "application/json",
  },
  json={
    "model": "{{MODEL}}",
    "input": "What is the current price of Bitcoin?",
    "tools": [
      {"type": "openrouter:web_search", "parameters": {"max_results": 3}}
    ]
  }
)

data = response.json()
print(data)

Отслеживание использования

Использование веб‑поиска отражается в объекте usage ответа:

json
{
  "usage": {
    "input_tokens": 105,
    "output_tokens": 250,
    "server_tool_use": {
      "web_search_requests": 2
    }
  }
}

Поле web_search_requests считает общее количество запросов поиска, выполненных моделью в рамках данного запроса.

Ценообразование

ДвижокЦенообразование
Exa0.5 ₽ за запрос с использованием кредитов VEGA. Включает до 10 результатов, далее 0.1 ₽ за каждый дополнительный результат
Parallel0.5 ₽ за запрос с использованием кредитов VEGA. Включает до 10 результатов в запросе, далее 0.1 ₽ за каждый дополнительный результат
FirecrawlИспользует ваши кредиты Firecrawl напрямую — плата от VEGA не взимается
NativeПередаётся от провайдера (OpenAI, Anthropic, Perplexity, xAI)

Все цены указаны дополнительно к стандартным затратам токенов LLM за обработку содержимого результатов поиска.

Переход от плагина Web Search

Плагин web search (plugins: [{ id: "web" }]) и вариант :online (/docs/guides/routing/model-variants/online) устарели. Вместо них используйте серверный инструмент openrouter:web_search.

Ключевые различия:

Плагин Web Search (устарел)Серверный инструмент Web Search
Как включитьplugins: [{ id: "web" }]tools: [{ type: "openrouter:web_search" }]
Кто решает выполнять поискВсегда один поискМодель решает, когда и нужен ли поиск
Частота вызововОдин раз за запрос0 – N раз за запрос
Опции движкаNative, Exa, Firecrawl, ParallelAuto, Native, Exa, Firecrawl, Parallel
Фильтрация доменовДа (Exa, Parallel, некоторые нативные)Да (Exa, Parallel, большинство нативных)
Контроль размера контекстаЧерез web_search_optionsЧерез параметр search_context_size
Ограничение общего числа результатовНетДа (max_total_results)
ЦенообразованиеЗависит от движкаЗависит от движка (те же тарифы)

Пример миграции

json
// До (устарело)
{
  "model": "openai/gpt-5.2",
  "messages": [...],
  "plugins": [{ "id": "web", "max_results": 3 }]
}

// После
{
  "model": "openai/gpt-5.2",
  "messages": [...],
  "tools": [
    { "type": "openrouter:web_search", "parameters": { "max_results": 3 } }
  ]
}
json
// До (устарело) — движок и фильтрация доменов
{
  "model": "openai/gpt-5.2",
  "messages": [...],
  "plugins": [{
    "id": "web",
    "engine": "exa",
    "max_results": 5,
    "include_domains": ["arxiv.org"]
  }]
}

// После
{
  "model": "openai/gpt-5.2",
  "messages": [...],
  "tools": [{
    "type": "openrouter:web_search",
    "parameters": {
      "engine": "exa",
      "max_results": 5,
      "allowed_domains": ["arxiv.org"]
    }
  }]
}
json
// До (устарело) — вариант :online
{
  "model": "openai/gpt-5.2:online"
}

// После
{
  "model": "openai/gpt-5.2",
  "tools": [{ "type": "openrouter:web_search" }]
}

Следующие шаги