From 4beece83c2b491674e1e7bbebfd9b88e0e6e4d6f Mon Sep 17 00:00:00 2001 From: Harshit28j Date: Thu, 26 Feb 2026 15:51:29 +0530 Subject: [PATCH] fix: handle delete_verification_tokens dict return and add missing response_cost to vertex passthrough logging --- .../key_management_endpoints.py | 18 +++++++++--------- .../vertex_passthrough_logging_handler.py | 1 + 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/litellm/proxy/management_endpoints/key_management_endpoints.py b/litellm/proxy/management_endpoints/key_management_endpoints.py index b489369071f..d0bd9000ee9 100644 --- a/litellm/proxy/management_endpoints/key_management_endpoints.py +++ b/litellm/proxy/management_endpoints/key_management_endpoints.py @@ -2274,7 +2274,7 @@ async def delete_key_fn( num_keys_to_be_deleted = 0 deleted_keys = [] if data.keys: - number_deleted_keys, _keys_being_deleted = await delete_verification_tokens( + deletion_response, _keys_being_deleted = await delete_verification_tokens( tokens=data.keys, user_api_key_cache=user_api_key_cache, user_api_key_dict=user_api_key_dict, @@ -2283,7 +2283,7 @@ async def delete_key_fn( num_keys_to_be_deleted = len(data.keys) deleted_keys = data.keys elif data.key_aliases: - number_deleted_keys, _keys_being_deleted = await delete_key_aliases( + deletion_response, _keys_being_deleted = await delete_key_aliases( key_aliases=data.key_aliases, prisma_client=prisma_client, user_api_key_cache=user_api_key_cache, @@ -2295,22 +2295,22 @@ async def delete_key_fn( else: raise ValueError("Invalid request type") - if number_deleted_keys is None: + if deletion_response is None: raise ProxyException( message="Failed to delete keys got None response from delete_verification_token", type=ProxyErrorTypes.internal_server_error, param="keys", code=status.HTTP_500_INTERNAL_SERVER_ERROR, ) - verbose_proxy_logger.debug(f"/key/delete - deleted_keys={number_deleted_keys}") + verbose_proxy_logger.debug(f"/key/delete - deletion_response={deletion_response}") - try: - assert num_keys_to_be_deleted == len(deleted_keys) - except Exception: + actually_deleted = deletion_response.get("deleted_keys", []) + failed_tokens = deletion_response.get("failed_tokens", []) + if len(actually_deleted) != num_keys_to_be_deleted: raise HTTPException( status_code=400, detail={ - "error": f"Not all keys passed in were deleted. This probably means you don't have access to delete all the keys passed in. Keys passed in={num_keys_to_be_deleted}, Deleted keys ={number_deleted_keys}" + "error": f"Not all keys passed in were deleted. This probably means you don't have access to delete all the keys passed in. Keys passed in={num_keys_to_be_deleted}, Deleted keys={len(actually_deleted)}, Failed tokens={failed_tokens}" }, ) @@ -2324,7 +2324,7 @@ async def delete_key_fn( keys_being_deleted=_keys_being_deleted, user_api_key_dict=user_api_key_dict, litellm_changed_by=litellm_changed_by, - response=number_deleted_keys, + response=deletion_response, ) ) diff --git a/litellm/proxy/pass_through_endpoints/llm_provider_handlers/vertex_passthrough_logging_handler.py b/litellm/proxy/pass_through_endpoints/llm_provider_handlers/vertex_passthrough_logging_handler.py index 3d5c529a3bb..0d8703b5a02 100644 --- a/litellm/proxy/pass_through_endpoints/llm_provider_handlers/vertex_passthrough_logging_handler.py +++ b/litellm/proxy/pass_through_endpoints/llm_provider_handlers/vertex_passthrough_logging_handler.py @@ -555,6 +555,7 @@ class VertexPassthroughLoggingHandler: logging_obj.model = litellm_model_response.model or model logging_obj.model_call_details["model"] = logging_obj.model logging_obj.model_call_details["custom_llm_provider"] = custom_llm_provider + logging_obj.model_call_details["response_cost"] = response_cost return kwargs @staticmethod