{"record":{"id":"a6fe7724bd200ffa","repo":"BerriAI/litellm","slug":"litellm-params-not-provided","errorCode":null,"errorMessage":"litellm_params not provided","messagePattern":"litellm_params not provided","errorType":"exception","errorClass":"Exception","httpStatus":400,"severity":"error","filePath":"litellm/proxy/management_endpoints/model_management_endpoints.py","lineNumber":1954,"sourceCode":"\n        await ModelManagementAuthChecks.can_user_make_model_call(\n            model_params=deployment,\n            user_api_key_dict=user_api_key_dict,\n            prisma_client=prisma_client,\n            premium_user=premium_user,\n        )\n\n        _raise_on_strategy_router_write_violation(\n            incoming_params=model_params.litellm_params,\n            existing_params=deployment.litellm_params,\n        )\n\n        # update DB\n        if store_model_in_db is True:\n            _existing_litellm_params_dict: Final = dict(_existing_litellm_params.litellm_params)\n\n            if model_params.litellm_params is None:\n                raise Exception(\"litellm_params not provided\")\n\n            _new_litellm_params_dict: Final = model_params.litellm_params.dict(exclude_none=True)\n\n            ### ENCRYPT PARAMS ###\n            for k, v in _new_litellm_params_dict.items():\n                encrypted_value = encrypt_value_helper(value=v)\n                model_params.litellm_params[k] = encrypted_value\n\n            ### MERGE WITH EXISTING DATA ###\n            merged_dictionary: Final = {}\n            _mp: Final = model_params.litellm_params.dict()\n\n            for key, value in _mp.items():\n                if value is not None:\n                    merged_dictionary[key] = value\n                elif key in _existing_litellm_params_dict and _existing_litellm_params_dict[key] is not None:\n                    merged_dictionary[key] = _existing_litellm_params_dict[key]\n                else:","sourceCodeStart":1936,"sourceCodeEnd":1972,"githubUrl":"https://github.com/BerriAI/litellm/blob/77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8/litellm/proxy/management_endpoints/model_management_endpoints.py#L1936-L1972","documentation":"Structural guard on model update: after the DB row is located and auth passes, the merged deployment's litellm_params is absent — update payloads must carry litellm_params since that is where connection settings live; rejected before the DB write.","triggerScenarios":"Thrown at litellm/proxy/management_endpoints/model_management_endpoints.py:1954 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Include litellm_params in the request body."],"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-14T05:17:10.506Z"}