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

Terminal
curl -H "X-Api-Key: YOUR_API_KEY" \
  https://vibecode.bitrix24.com/v1/search/providers

curl — OAuth app

Terminal
curl \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN" \
  https://vibecode.bitrix24.com/v1/search/providers

JavaScript — personal key

javascript
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

javascript
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

JSON
{
  "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:

JSON
{
  "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