BerriAI/litellm · error · ValueError
At least one of 'keys' or 'key_aliases' must be provided.
Error message
At least one of 'keys' or 'key_aliases' must be provided.
What it means
Pydantic model_validator (validate_at_least_one) on KeyRequest rejecting a bulk request whose 'keys' and 'key_aliases' are both empty/None. Endpoints consuming this model operate on existing keys in bulk (delete/rotate/etc.), so a request naming zero keys is rejected up front instead of being treated as a no-op success.
Source
Thrown at litellm/proxy/_types.py:1269
spend: float | None = None
metadata: dict | None = None
new_master_key: str | None = None
grace_period: str | None = None # Duration to keep old key valid (e.g. "24h", "2d"); None = immediate revoke
class ResetSpendRequest(LiteLLMPydanticObjectBase):
reset_to: float
class KeyRequest(LiteLLMPydanticObjectBase):
keys: list[str] | None = None
key_aliases: list[str] | None = None
@model_validator(mode="before")
@classmethod
def validate_at_least_one(cls, values):
if not values.get("keys") and not values.get("key_aliases"):
raise ValueError("At least one of 'keys' or 'key_aliases' must be provided.")
return values
from litellm.models.model import ( # noqa: E402
LiteLLM_ProxyModelTable as LiteLLM_ProxyModelTable,
)
from litellm.models.team import LiteLLM_ModelTable as LiteLLM_ModelTable # noqa: E402
# MCP Types
class SpecialMCPServerName(str, enum.Enum):
all_team_servers = "all-team-mcpservers"
all_proxy_servers = "all-proxy-mcpservers"
class MCPApprovalStatus(str, enum.Enum):
pending_review = "pending_review"
active = "active"View on GitHub (pinned to 77b7c6c40c)
Solutions
- Provide at least one of 'keys' or 'key_aliases'.
Example fix
keys=['sk-...']
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at litellm/proxy/_types.py:1269 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/ad03805854d18294.
Report an issue: GitHub.