From 6d8b5afc57b84ea2bbd3f23ef144e09710297c01 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Thu, 16 Jul 2026 15:44:53 +0000 Subject: [PATCH] fix(user_info): include user-level rpm_limit and tpm_limit in /v2/user/info --- litellm/proxy/_types.py | 2 ++ .../proxy/management_endpoints/internal_user_endpoints.py | 2 ++ .../management_endpoints/test_internal_user_endpoints.py | 6 ++++++ ui/litellm-dashboard/src/lib/http/schema.d.ts | 4 ++++ 4 files changed, 14 insertions(+) diff --git a/litellm/proxy/_types.py b/litellm/proxy/_types.py index 5e3ea4b7dcb..f13c3ad245e 100644 --- a/litellm/proxy/_types.py +++ b/litellm/proxy/_types.py @@ -2708,6 +2708,8 @@ class UserInfoV2Response(LiteLLMPydanticObjectBase): user_role: Optional[str] = None spend: float = 0.0 max_budget: Optional[float] = None + rpm_limit: Optional[int] = None + tpm_limit: Optional[int] = None models: List[str] = [] budget_duration: Optional[str] = None budget_reset_at: Optional[datetime] = None diff --git a/litellm/proxy/management_endpoints/internal_user_endpoints.py b/litellm/proxy/management_endpoints/internal_user_endpoints.py index ccd15a68437..40394bbb9de 100644 --- a/litellm/proxy/management_endpoints/internal_user_endpoints.py +++ b/litellm/proxy/management_endpoints/internal_user_endpoints.py @@ -942,6 +942,8 @@ async def user_info_v2( user_role=user_data.get("user_role"), spend=user_data.get("spend", 0.0), max_budget=user_data.get("max_budget"), + rpm_limit=user_data.get("rpm_limit"), + tpm_limit=user_data.get("tpm_limit"), models=user_data.get("models") or [], budget_duration=user_data.get("budget_duration"), budget_reset_at=user_data.get("budget_reset_at"), diff --git a/tests/test_litellm/proxy/management_endpoints/test_internal_user_endpoints.py b/tests/test_litellm/proxy/management_endpoints/test_internal_user_endpoints.py index ce2d04f0d26..d92026706d3 100644 --- a/tests/test_litellm/proxy/management_endpoints/test_internal_user_endpoints.py +++ b/tests/test_litellm/proxy/management_endpoints/test_internal_user_endpoints.py @@ -2490,6 +2490,8 @@ async def test_user_info_v2_proxy_admin_can_query_any_user(mocker): "user_role": "internal_user", "spend": 42.5, "max_budget": 100.0, + "rpm_limit": 100, + "tpm_limit": 200000, "models": ["gpt-4"], "budget_duration": "30d", "budget_reset_at": None, @@ -2530,6 +2532,8 @@ async def test_user_info_v2_proxy_admin_can_query_any_user(mocker): assert response.user_role == "internal_user" assert response.spend == 42.5 assert response.max_budget == 100.0 + assert response.rpm_limit == 100 + assert response.tpm_limit == 200000 assert response.models == ["gpt-4"] assert response.teams == ["team-1", "team-2"] assert response.sso_user_id == "sso-abc" @@ -2885,6 +2889,8 @@ async def test_user_info_v2_response_shape(mocker): "user_role", "spend", "max_budget", + "rpm_limit", + "tpm_limit", "models", "budget_duration", "budget_reset_at", diff --git a/ui/litellm-dashboard/src/lib/http/schema.d.ts b/ui/litellm-dashboard/src/lib/http/schema.d.ts index 87c760257d1..6e1b4ad74f2 100644 --- a/ui/litellm-dashboard/src/lib/http/schema.d.ts +++ b/ui/litellm-dashboard/src/lib/http/schema.d.ts @@ -33060,6 +33060,8 @@ export interface components { * @default [] */ models: string[]; + /** Rpm Limit */ + rpm_limit?: number | null; /** * Spend * @default 0 @@ -33072,6 +33074,8 @@ export interface components { * @default [] */ teams: string[]; + /** Tpm Limit */ + tpm_limit?: number | null; /** Updated At */ updated_at?: string | null; /** User Alias */