{"record":{"id":"4a4f6650baeb492f","repo":"BerriAI/litellm","slug":"search-is-not-supported-for-provider-search-prov","errorCode":null,"errorMessage":"Search is not supported for provider: {search_provider}","messagePattern":"Search is not supported for provider: (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"litellm/search/main.py","lineNumber":248,"sourceCode":"    try:\n        litellm_logging_obj: Final[LiteLLMLoggingObj] = kwargs.pop(\"litellm_logging_obj\")\n        litellm_call_id: Final[str | None] = kwargs.get(\"litellm_call_id\", None)\n        _is_async: Final = kwargs.pop(\"asearch\", False) is True\n\n        # Validate query parameter\n        if not isinstance(query, (str, list)):\n            raise ValueError(f\"query must be a string or list of strings, got {type(query)}\")\n\n        if isinstance(query, list) and not all(isinstance(q, str) for q in query):\n            raise ValueError(\"All items in query list must be strings\")\n\n        # Get provider config\n        search_provider_config: Final[BaseSearchConfig | None] = ProviderConfigManager.get_provider_search_config(\n            provider=SearchProviders(search_provider),\n        )\n\n        if search_provider_config is None:\n            raise ValueError(f\"Search is not supported for provider: {search_provider}\")\n\n        verbose_logger.debug(\"Search call - provider: %s\", search_provider)\n\n        # Build optional_params from explicit parameters\n        optional_params: Final = _build_search_optional_params(\n            max_results=max_results,\n            search_domain_filter=search_domain_filter,\n            max_tokens_per_page=max_tokens_per_page,\n            country=country,\n        )\n\n        # Filter out internal LiteLLM parameters from kwargs\n        filtered_kwargs: Final = filter_out_litellm_params(kwargs=kwargs)\n\n        # Add remaining kwargs to optional_params (for provider-specific params)\n        for key, value in filtered_kwargs.items():\n            if key not in optional_params:\n                optional_params[key] = value","sourceCodeStart":230,"sourceCodeEnd":266,"githubUrl":"https://github.com/BerriAI/litellm/blob/77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8/litellm/search/main.py#L230-L266","documentation":"Thrown when resolving the search provider config: the requested search_provider string does not map to any known provider handler, so LiteLLM cannot route the search call. Usually a typo or an unsupported provider name in web_search_options/provider settings.","triggerScenarios":"Thrown at litellm/search/main.py:248 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use a provider that implements search (e.g. perplexity, tavily, exa) instead of {search_provider}.","Check litellm's supported search providers list and set search_provider accordingly, or implement a custom search provider."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8","analyzedAt":"2026-08-18T11:44:31.656Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}