{"record":{"id":"e31f54449e6eab18","repo":"BerriAI/litellm","slug":"search-tool-name-or-model-parameter-is-required-fo","errorCode":null,"errorMessage":"search_tool_name or model parameter is required for search","messagePattern":"search_tool_name or model parameter is required for search","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"litellm/router_utils/search_api_router.py","lineNumber":132,"sourceCode":"        **kwargs,\n    ):\n        \"\"\"\n        Helper function to make a search API call through the router with load balancing and fallbacks.\n        Reuses the router's retry/fallback infrastructure.\n\n        Args:\n            router_instance: The Router instance\n            original_function: The original litellm.asearch function\n            **kwargs: Search parameters including search_tool_name, query, etc.\n\n        Returns:\n            SearchResponse from the search API\n        \"\"\"\n        try:\n            search_tool_name: Final = kwargs.get(\"search_tool_name\", kwargs.get(\"model\"))\n\n            if not search_tool_name:\n                raise ValueError(\"search_tool_name or model parameter is required for search\")\n\n            # Set up kwargs for the fallback system\n            kwargs[\"model\"] = search_tool_name  # Use model field for compatibility with fallback system\n            kwargs[\"original_generic_function\"] = original_function\n            # Bind router_instance to the helper method using partial\n            kwargs[\"original_function\"] = partial(\n                SearchAPIRouter.async_search_with_fallbacks_helper,\n                router_instance=router_instance,\n            )\n\n            # Update kwargs before fallbacks (for logging, metadata, etc)\n            router_instance._update_kwargs_before_fallbacks(\n                model=search_tool_name,\n                kwargs=kwargs,\n                metadata_variable_name=\"litellm_metadata\",\n            )\n\n            available_search_tool_names: Final = [tool.get(\"search_tool_name\") for tool in router_instance.search_tools]","sourceCodeStart":114,"sourceCodeEnd":150,"githubUrl":"https://github.com/BerriAI/litellm/blob/77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8/litellm/router_utils/search_api_router.py#L114-L150","documentation":"Argument guard in the router's asearch wrapper: neither search_tool_name nor model was present in kwargs, so the router cannot tell which configured search tool to route through.","triggerScenarios":"Thrown at litellm/router_utils/search_api_router.py:132 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Pass search_tool_name or model in the search request."],"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"}