For AI agents: markdown of this page — /docs-content-en/search/providers.md documentation index — /llms.txt
Provider list
GET /v1/search/providers
Returns all available web-search engines together with the capability matrix and current pricing for the three modes — basic, advanced, research. The list is filtered by the isEnabled flag — only available providers are returned. Which engine is platform-managed, its price, and the default engine vary from instance to instance. The order is fixed: platform-managed engines first, then BYOK providers in the canonical registry order.
Parameters
No parameters.
Examples
curl — personal key
curl -H "X-Api-Key: YOUR_API_KEY" \
https://vibecode.bitrix24.com/v1/search/providers
curl — OAuth app
curl \
-H "X-Api-Key: YOUR_APP_KEY" \
-H "Authorization: Bearer USER_SESSION_TOKEN" \
https://vibecode.bitrix24.com/v1/search/providers
JavaScript — personal key
const res = await fetch('https://vibecode.bitrix24.com/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 app
const res = await fetch('https://vibecode.bitrix24.com/v1/search/providers', {
headers: {
'X-Api-Key': 'YOUR_APP_KEY',
'Authorization': 'Bearer USER_SESSION_TOKEN',
},
})
const { providers } = await res.json()
Response fields
| Field | Type | Description |
|---|---|---|
providers |
array | Array of enabled providers |
providers[].slug |
string | Identifier for the provider field in POST /v1/search and POST /v1/research. One of: bitrix-search, tavily, brave, exa, you-com, linkup, perplexity, jina, z-ai |
providers[].name |
string | Display name |
providers[].description |
string | Short description |
providers[].requiresCredential |
boolean | Whether a BYOK key is required. For platform-managed engines — false, the platform issues the key |
providers[].capabilities |
object | Provider capability matrix |
providers[].capabilities.modes.search.basic |
boolean | Whether the basic mode is supported in POST /v1/search |
providers[].capabilities.modes.search.advanced |
boolean | Whether the advanced mode is supported in POST /v1/search |
providers[].capabilities.modes.research |
boolean | Whether POST /v1/research is supported |
providers[].capabilities.modes.streaming |
boolean | Whether the provider emits intermediate SSE events (thinking, tool_call, answer_delta). false — the stream is buffered, only start and done arrive |
providers[].capabilities.filters.includeDomains |
boolean | Whether the include_domains filter is accepted |
providers[].capabilities.filters.excludeDomains |
boolean | Whether the exclude_domains filter is accepted |
providers[].capabilities.filters.timeRange |
boolean | Whether the time_range filter is accepted |
providers[].capabilities.filters.region |
boolean | Whether the regional filter is accepted |
providers[].capabilities.filters.safesearch |
boolean | Whether the safe-search filter is accepted |
providers[].capabilities.output.synthesizedAnswer |
boolean | Whether the provider returns a synthesized answer in the answer field by default |
providers[].capabilities.output.citations |
boolean | Whether it places citation markers [N] in the synthesized answer |
providers[].capabilities.output.relevanceScore |
boolean | Whether it fills the score field in results |
providers[].capabilities.output.publishedDate |
boolean | Whether it fills the publishedDate field in results |
providers[].capabilities.output.fullContent |
boolean | Whether it returns the full page text in results[].rawContent when include_raw_content: true |
providers[].capabilities.output.followUpQuestions |
boolean | Whether it returns follow-up questions in research mode |
providers[].capabilities.verticals.news |
boolean | Whether it supports news mode via the topic: "news" parameter. For engines that support it, it populates publishedDate for news results |
providers[].capabilities.verticals.images |
boolean | Whether it supports requesting images via include_images: true. The links arrive in the top-level images array |
providers[].capabilities.algorithm |
string | Search algorithm: keyword, neural, or hybrid |
providers[].capabilities.liveData |
boolean | Whether the provider performs a fresh web crawl on each request |
providers[].capabilities.summarizer |
boolean | Whether a separate on-demand summarizer is available. For brave the synthesized answer is produced only in advanced mode via this flag, otherwise answer: null |
providers[].pricing.basic |
number | Cost of a single basic-mode request in Ꝟ. 0 for BYOK providers |
providers[].pricing.advanced |
number | Cost of a single advanced-mode request in Ꝟ |
providers[].pricing.research |
number | Cost of a single research-mode request in Ꝟ. 0 for all BYOK providers with research support |
Response example
{
"providers": [
{
"slug": "bitrix-search",
"name": "Bitrix24 AI Search",
"description": "Platform AI search with agentic mode",
"requiresCredential": false,
"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": 2, "advanced": 5, "research": 0 }
},
{
"slug": "tavily",
"name": "Tavily",
"description": "Tavily web search API — English-language, 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 }
}
]
}
Three representative providers are shown: the platform-managed bitrix-search, the universal BYOK tavily, and research-only jina. The platform engine's capabilities and pricing values depend on the instance — shown here for illustration. The actual ones are returned by this same endpoint. Which engines are platform-managed and which is the default is also determined by the instance configuration. The full list of slugs — bitrix-search, tavily, brave, exa, you-com, linkup, perplexity, jina, z-ai.
Error response example
403 — scope missing:
{
"error": {
"code": "SCOPE_DENIED",
"message": "vibe:search scope required."
}
}
Errors
| HTTP | Code | Description |
|---|---|---|
| 401 | MISSING_API_KEY |
The X-Api-Key header is missing |
| 401 | INVALID_API_KEY |
Invalid API key |
| 403 | SCOPE_DENIED |
The key lacks the vibe:search scope |
| 429 | RATE_LIMITED |
The overall request limit is exceeded |
| 500 | INTERNAL_ERROR |
Internal server error |
The full list of common API errors — Errors.
Known specifics
Canonical provider sequence. The order of elements in the array does not depend on which day a provider was added to the platform. Platform-managed engines come first, then BYOK in the fixed registry order. For the UI this allows rendering tiles without additional sorting.
A provider drops out of the list when it becomes unavailable. A client with a cached value will keep passing it in provider, but POST /v1/search and POST /v1/research will return 404 PROVIDER_NOT_FOUND — a signal to re-read the list via this endpoint.
pricing shows only the charge in Vibe credits. The actual cost at a BYOK provider is billed from your own account at the provider's rate and is not reflected in this table. The pricing.research field is zero for all BYOK providers with research support. The platform engine's pricing (pricing.basic / pricing.advanced / pricing.research) varies from instance to instance — rely on the values from this endpoint's response, not on fixed numbers.
The modes.streaming capability reflects the adapter's behavior, not the provider's. On the provider side a native SSE stream with progressive events may work, but if the Vibecode adapter assembles the stream into a single block and returns only start + done, the streaming flag will be false. Which engines deliver the progressive stream with thinking, tool_call, answer_delta is shown by the modes.streaming flag in this endpoint's response — for the platform engine it depends on the instance.
The "has a synthesized answer" marker is output.synthesizedAnswer. For brave the field is false, and the optional summarizer is signaled by a separate summarizer: true flag. This means: by default answer arrives as null, but with search_depth: "advanced" Brave mixes the summarizer into the response.
See also
- Web Search for AI — section overview, pricing, capability matrix
- Search (POST /v1/search) — the main endpoint, uses values from this list
- Deep search (POST /v1/research) — filter on
capabilities.modes.research: true - Your own keys (BYOK) — adding BYOK keys
- Errors — API error code reference