{"record":{"id":"cb77362737124380","repo":"BerriAI/litellm","slug":"max-budget-data-max-budget-must-be-strictly-gr","errorCode":null,"errorMessage":"max_budget ({data.max_budget}) must be strictly greater than soft_budget ({soft_budget_to_check})","messagePattern":"max_budget \\((.+?)\\) must be strictly greater than soft_budget \\((.+?)\\)","errorType":"http","errorClass":"HTTPException","httpStatus":400,"severity":"error","filePath":"litellm/proxy/management_endpoints/team_endpoints.py","lineNumber":2026,"sourceCode":"        _check_passthrough_routes_caller_permission(data, user_api_key_dict, entity=\"team\")\n\n        if data.soft_budget is not None:\n            max_budget_to_check = data.max_budget if data.max_budget is not None else existing_team_row.max_budget\n            if max_budget_to_check is not None:\n                if data.soft_budget >= max_budget_to_check:\n                    raise HTTPException(\n                        status_code=400,\n                        detail={\n                            \"error\": f\"soft_budget ({data.soft_budget}) must be strictly lower than max_budget ({max_budget_to_check})\"\n                        },\n                    )\n\n        if data.max_budget is not None:\n            existing_soft_budget: Final[object] = _as_object(getattr(existing_team_row, \"soft_budget\", None))\n            soft_budget_to_check: Final = data.soft_budget if data.soft_budget is not None else existing_soft_budget\n            if soft_budget_to_check is not None and isinstance(soft_budget_to_check, (int, float)):\n                if data.max_budget <= soft_budget_to_check:\n                    raise HTTPException(\n                        status_code=400,\n                        detail={\n                            \"error\": f\"max_budget ({data.max_budget}) must be strictly greater than soft_budget ({soft_budget_to_check})\"\n                        },\n                    )\n\n        if data.organization_id is not None and len(data.organization_id) > 0:  # allow unsetting the organization_id\n            # If the caller is relocating the team to a different org, they\n            # must also be PROXY_ADMIN or an org-admin of the DESTINATION org.\n            # _verify_team_access above only checked the team's CURRENT org,\n            # so without this gate an org-admin could hand their team to any\n            # other org (or capture a team from another org they once\n            # administered into a new destination).\n            current_org_id: Final = getattr(existing_team_row, \"organization_id\", None)\n            if (\n                data.organization_id != current_org_id\n                and user_api_key_dict.user_role != LitellmUserRoles.PROXY_ADMIN.value\n            ):","sourceCodeStart":2008,"sourceCodeEnd":2044,"githubUrl":"https://github.com/BerriAI/litellm/blob/77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8/litellm/proxy/management_endpoints/team_endpoints.py#L2008-L2044","documentation":"Error \"max_budget ({data.max_budget}) must be strictly greater than soft_budget ({soft_budget_to_check})\" thrown in BerriAI/litellm.","triggerScenarios":"Thrown at litellm/proxy/management_endpoints/team_endpoints.py:2026 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set max_budget to a value strictly greater than soft_budget, or lower soft_budget."],"exampleFix":null,"handlingStrategy":null,"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"}