#Список провайдеров
GET /v1/search/providers
Возвращает все доступные движки веб-поиска вместе с матрицей возможностей и актуальными тарифами по трём режимам — basic, advanced, research. Список фильтруется по флагу isEnabled — в ответ попадают только доступные провайдеры. Порядок элементов фиксированный: сначала платформенный bitrix-search, затем BYOK-провайдеры в каноническом порядке реестра.
#Параметры
Параметров нет.
#Примеры
#curl — личный ключ
curl -H "X-Api-Key: YOUR_API_KEY" \
https://vibecode.bitrix24.tech/v1/search/providers
#curl — OAuth-приложение
curl \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
https://vibecode.bitrix24.tech/v1/search/providers
#JavaScript — личный ключ
const res = await fetch('https://vibecode.bitrix24.tech/v1/search/providers', {
headers: { 'X-Api-Key': 'YOUR_API_KEY' },
})
const { providers } = await res.json()
providers.forEach((p) => {
console.log(`${p.name} (${p.slug}) — basic ${p.pricing.basic} Ꝟ / advanced ${p.pricing.advanced} Ꝟ / research ${p.pricing.research} Ꝟ`)
})
#JavaScript — OAuth-приложение
const res = await fetch('https://vibecode.bitrix24.tech/v1/search/providers', {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { providers } = await res.json()
#Поля ответа
| Поле | Тип | Описание |
|---|---|---|
providers |
array | Массив включённых провайдеров |
providers[].slug |
string | Идентификатор для поля provider в `POST /v1/search` и `POST /v1/research`. Один из девяти: bitrix-search, tavily, brave, exa, you-com, linkup, perplexity, jina, z-ai |
providers[].name |
string | Отображаемое имя |
providers[].description |
string | Краткое описание |
providers[].requiresCredential |
boolean | Нужен ли BYOK-ключ. Для bitrix-search — false, ключ выпускает платформа |
providers[].capabilities |
object | Матрица возможностей провайдера |
providers[].capabilities.modes.search.basic |
boolean | Поддерживается ли режим basic в `POST /v1/search` |
providers[].capabilities.modes.search.advanced |
boolean | Поддерживается ли режим advanced в `POST /v1/search` |
providers[].capabilities.modes.research |
boolean | Поддерживается ли `POST /v1/research` |
providers[].capabilities.modes.streaming |
boolean | Эмитит ли провайдер промежуточные события SSE (thinking, tool_call, answer_delta). false — поток буферизованный, приходит только start и done |
providers[].capabilities.filters.includeDomains |
boolean | Принимается ли фильтр include_domains |
providers[].capabilities.filters.excludeDomains |
boolean | Принимается ли фильтр exclude_domains |
providers[].capabilities.filters.timeRange |
boolean | Принимается ли фильтр time_range |
providers[].capabilities.filters.region |
boolean | Принимается ли региональный фильтр |
providers[].capabilities.filters.safesearch |
boolean | Принимается ли фильтр безопасного поиска |
providers[].capabilities.output.synthesizedAnswer |
boolean | Возвращает ли провайдер синтезированный ответ в поле answer по умолчанию |
providers[].capabilities.output.citations |
boolean | Расставляет ли маркеры цитат [N] в синтезированном ответе |
providers[].capabilities.output.relevanceScore |
boolean | Заполняет ли поле score в результатах |
providers[].capabilities.output.publishedDate |
boolean | Заполняет ли поле published_date в результатах |
providers[].capabilities.output.fullContent |
boolean | Возвращает ли полный текст страниц при include_raw_content: true |
providers[].capabilities.output.followUpQuestions |
boolean | Возвращает ли уточняющие вопросы в режиме research |
providers[].capabilities.verticals.news |
boolean | Поддерживает ли вертикаль «новости» |
providers[].capabilities.verticals.images |
boolean | Поддерживает ли вертикаль «изображения» |
providers[].capabilities.algorithm |
string | Поисковый алгоритм: keyword, neural или hybrid |
providers[].capabilities.liveData |
boolean | Делает ли провайдер свежий обход веб-страниц на каждый запрос |
providers[].capabilities.summarizer |
boolean | Доступен ли отдельный суммаризатор по запросу. Для brave синтезированный ответ выдаётся только в режиме advanced через этот флаг, в остальных случаях answer: null |
providers[].pricing.basic |
number | Стоимость одного запроса режима basic в Ꝟ. 0 для BYOK-провайдеров |
providers[].pricing.advanced |
number | Стоимость одного запроса режима advanced в Ꝟ |
providers[].pricing.research |
number | Стоимость одного запроса режима research в Ꝟ. 0 для всех BYOK-провайдеров с поддержкой research |
#Пример ответа
{
"providers": [
{
"slug": "bitrix-search",
"name": "Bitrix AI-поиск",
"description": "Платформенный AI-поиск с агентным режимом и цитированием источников",
"requiresCredential": false,
"capabilities": {
"modes": {
"search": { "basic": true, "advanced": true },
"research": false,
"streaming": true
},
"filters": { "includeDomains": false, "excludeDomains": false, "timeRange": false, "region": false, "safesearch": false },
"output": { "synthesizedAnswer": true, "citations": true, "relevanceScore": false, "publishedDate": false, "fullContent": false, "followUpQuestions": false },
"verticals": { "news": false, "images": false },
"algorithm": "hybrid",
"liveData": false,
"summarizer": false
},
"pricing": { "basic": 2, "advanced": 5, "research": 100 }
},
{
"slug": "tavily",
"name": "Tavily",
"description": "Tavily web search API — англоязычный, BYOK",
"requiresCredential": true,
"capabilities": {
"modes": {
"search": { "basic": true, "advanced": true },
"research": true,
"streaming": false
},
"filters": { "includeDomains": true, "excludeDomains": true, "timeRange": true, "region": false, "safesearch": false },
"output": { "synthesizedAnswer": true, "citations": false, "relevanceScore": true, "publishedDate": true, "fullContent": true, "followUpQuestions": false },
"verticals": { "news": true, "images": true },
"algorithm": "hybrid",
"liveData": false,
"summarizer": false
},
"pricing": { "basic": 0, "advanced": 0, "research": 0 }
},
{
"slug": "jina",
"name": "Jina DeepSearch",
"description": "Research-only iterative search/read/think loop",
"requiresCredential": true,
"capabilities": {
"modes": {
"search": { "basic": false, "advanced": false },
"research": true,
"streaming": false
},
"filters": { "includeDomains": true, "excludeDomains": true, "timeRange": false, "region": false, "safesearch": false },
"output": { "synthesizedAnswer": true, "citations": true, "relevanceScore": false, "publishedDate": true, "fullContent": true, "followUpQuestions": false },
"verticals": { "news": false, "images": false },
"algorithm": "hybrid",
"liveData": false,
"summarizer": false
},
"pricing": { "basic": 0, "advanced": 0, "research": 0 }
}
]
}
Показаны три характерных провайдера из девяти: платформенный bitrix-search, универсальный BYOK tavily и research-only jina. Полный список — bitrix-search, tavily, brave, exa, you-com, linkup, perplexity, jina, z-ai.
#Пример ответа при ошибке
403 — не хватает скоупа:
{
"error": {
"code": "SCOPE_DENIED",
"message": "vibe:search scope required."
}
}
#Ошибки
| HTTP | Код | Описание |
|---|---|---|
| 401 | MISSING_API_KEY |
Отсутствует заголовок X-Api-Key |
| 401 | INVALID_API_KEY |
Неверный API-ключ |
| 403 | SCOPE_DENIED |
Ключу не хватает скоупа vibe:search |
| 429 | RATE_LIMITED |
Превышен общий лимит запросов |
| 500 | INTERNAL_ERROR |
Внутренняя ошибка сервера |
Полный список общих ошибок API — Ошибки.
#Известные особенности
Каноническая последовательность провайдеров. Порядок элементов в массиве не зависит от того, в какой день добавлен провайдер в платформу. Сначала идёт платформенный bitrix-search, затем BYOK в фиксированном порядке реестра. Для UI это позволяет рендерить плитки без дополнительной сортировки.
Провайдер пропадает из списка, если становится недоступным. Клиент с закешированным значением продолжит передавать его в provider, но `POST /v1/search` и `POST /v1/research` вернут 404 PROVIDER_NOT_FOUND — это сигнал перечитать список через текущий эндпоинт.
pricing показывает только списание в Вайбах. Реальная стоимость у поставщика BYOK оплачивается с вашего собственного аккаунта по тарифу провайдера и в этой таблице не отражается. Поле pricing.research равно нулю для всех BYOK-провайдеров с поддержкой research; платформенный bitrix-search пока не поддерживает research, поэтому значение 100 Ꝟ остаётся служебным показателем.
Capability modes.streaming отражает поведение адаптера, а не провайдера. На стороне провайдера может работать нативный SSE-поток с прогрессивными событиями, но если адаптер Вайбкод собирает поток в один блок и отдаёт только start + done, флаг streaming будет false. Сегодня прогрессивный поток с thinking, tool_call, answer_delta доступен только для bitrix-search.
Признак «есть синтезированный ответ» — output.synthesizedAnswer. Для brave поле имеет значение false, а опциональный суммаризатор сигнализируется отдельным флагом summarizer: true. Это означает: по умолчанию answer приходит как null, но при search_depth: "advanced" Brave подмешивает суммаризатор в ответ.
#Смотрите также
- Web Search для AI — обзор раздела, тарификация, capability matrix
- Поиск (POST /v1/search) — основной эндпоинт, использует значения из этого списка
- Глубокий поиск (POST /v1/research) — фильтр
capabilities.modes.research: true - Свои ключи (BYOK) — добавление BYOK-ключей
- Ошибки — справочник кодов ошибок API