BerriAI/litellm · error · ProxyException
getattr(e, "detail", str(e))
Error message
getattr(e, "detail", str(e))
What it means
Error "getattr(e, "detail", str(e))" thrown in BerriAI/litellm.
Source
Thrown at litellm/proxy/spend_tracking/spend_management_endpoints.py:2156
_cost = completion_cost(
model=_litellm_model_name,
messages=request.messages,
custom_cost_per_token=cost_per_token,
)
else:
_cost = completion_cost(model=request.model, messages=request.messages)
elif request.completion_response is not None:
_completion_response: Final = litellm.ModelResponse(**request.completion_response)
_cost = completion_cost(completion_response=_completion_response)
else:
raise HTTPException(
status_code=400,
detail="Bad Request - Either 'model' or 'completion_response' must be provided",
)
return {"cost": _cost}
except Exception as e:
if isinstance(e, HTTPException):
raise ProxyException(
message=getattr(e, "detail", str(e)),
type=getattr(e, "type", "None"),
param=getattr(e, "param", "None"),
code=getattr(e, "status_code", status.HTTP_400_BAD_REQUEST),
)
error_msg: Final = f"{e}"
raise ProxyException(
message=getattr(e, "message", error_msg),
type=getattr(e, "type", "None"),
param=getattr(e, "param", "None"),
code=getattr(e, "status_code", 500),
)
@router.get(
"/spend/logs/v2",
tags=["Budget & Spend Tracking"],
dependencies=[Depends(user_api_key_auth)],View on GitHub (pinned to 77b7c6c40c)
Solutions
- Read the wrapped HTTP error detail; correct the request per that message and retry.
When it happens
Trigger: Thrown at litellm/proxy/spend_tracking/spend_management_endpoints.py:2156 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of BerriAI/litellm@77b7c6c40c (2026-08-18).
Data as JSON: /api/errors/33c6faa45b2fb638.
Report an issue: GitHub.