لوكلاء AI: ملف markdown لهذه الصفحة — /docs-content-en/search/providers.md فهرس التوثيق — /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 application
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 application
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 |
|---|---|---|
Fieldproviders |
Typearray | DescriptionArray of enabled providers |
Fieldproviders[].slug |
Typestring | DescriptionIdentifier 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 |
Fieldproviders[].name |
Typestring | DescriptionDisplay name |
Fieldproviders[].description |
Typestring | DescriptionShort description |
Fieldproviders[].requiresCredential |
Typeboolean | DescriptionWhether a BYOK key is required. For platform-managed engines — false, the platform issues the key |
Fieldproviders[].capabilities |
Typeobject | DescriptionProvider capability matrix |
Fieldproviders[].capabilities.modes.search.basic |
Typeboolean | DescriptionWhether the basic mode is supported in POST /v1/search |
Fieldproviders[].capabilities.modes.search.advanced |
Typeboolean | DescriptionWhether the advanced mode is supported in POST /v1/search |
Fieldproviders[].capabilities.modes.research |
Typeboolean | DescriptionWhether POST /v1/research is supported |
Fieldproviders[].capabilities.modes.streaming |
Typeboolean | DescriptionWhether the provider emits intermediate SSE events (thinking, tool_call, answer_delta). false — the stream is buffered, only start and done arrive |
Fieldproviders[].capabilities.filters.includeDomains |
Typeboolean | DescriptionWhether the include_domains filter is accepted |
Fieldproviders[].capabilities.filters.excludeDomains |
Typeboolean | DescriptionWhether the exclude_domains filter is accepted |
Fieldproviders[].capabilities.filters.timeRange |
Typeboolean | DescriptionWhether the time_range filter is accepted |
Fieldproviders[].capabilities.filters.region |
Typeboolean | DescriptionWhether the regional filter is accepted |
Fieldproviders[].capabilities.filters.safesearch |
Typeboolean | DescriptionWhether the safe-search filter is accepted |
Fieldproviders[].capabilities.output.synthesizedAnswer |
Typeboolean | DescriptionWhether the provider returns a synthesized answer in the answer field by default |
Fieldproviders[].capabilities.output.citations |
Typeboolean | DescriptionWhether it places citation markers [N] in the synthesized answer |
Fieldproviders[].capabilities.output.relevanceScore |
Typeboolean | DescriptionWhether it fills the score field in results |
Fieldproviders[].capabilities.output.publishedDate |
Typeboolean | DescriptionWhether it fills the publishedDate field in results |
Fieldproviders[].capabilities.output.fullContent |
Typeboolean | DescriptionWhether it returns the full page text in results[].rawContent when include_raw_content: true |
Fieldproviders[].capabilities.output.followUpQuestions |
Typeboolean | DescriptionWhether it returns follow-up questions in research mode |
Fieldproviders[].capabilities.verticals.news |
Typeboolean | DescriptionWhether it supports news mode via the topic: "news" parameter. For engines that support it, it populates publishedDate for news results |
Fieldproviders[].capabilities.verticals.images |
Typeboolean | DescriptionWhether it supports requesting images via include_images: true. The links arrive in the top-level images array |
Fieldproviders[].capabilities.algorithm |
Typestring | DescriptionSearch algorithm: keyword, neural, or hybrid |
Fieldproviders[].capabilities.liveData |
Typeboolean | DescriptionWhether the provider performs a fresh web crawl on each request |
Fieldproviders[].capabilities.summarizer |
Typeboolean | DescriptionWhether a separate on-demand summarizer is available. For brave the synthesized answer is produced only in advanced mode via this flag, otherwise answer: null |
Fieldproviders[].pricing.basic |
Typenumber | DescriptionCost of a single basic-mode request in Ꝟ. 0 for BYOK providers |
Fieldproviders[].pricing.advanced |
Typenumber | DescriptionCost of a single advanced-mode request in Ꝟ |
Fieldproviders[].pricing.research |
Typenumber | DescriptionCost 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 |
|---|---|---|
| HTTP401 | CodeMISSING_API_KEY |
DescriptionThe X-Api-Key header is missing |
| HTTP401 | CodeINVALID_API_KEY |
DescriptionThe key is not recognized — no such key exists on the platform |
| HTTP403 | CodeSCOPE_DENIED |
DescriptionThe key lacks the vibe:search scope |
| HTTP429 | CodeRATE_LIMITED |
DescriptionThe overall request limit is exceeded |
| HTTP500 | CodeINTERNAL_ERROR |
DescriptionInternal 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.