BerriAI/litellm · error · ProxyRateLimitError
Key={user_api_key_dict.api_key} over available TPM={availabl
Error message
Key={user_api_key_dict.api_key} over available TPM={available_tpm}. Model TPM={model_tpm}, Active keys={active_projects} What it means
Error "Key={user_api_key_dict.api_key} over available TPM={available_tpm}. Model TPM={model_tpm}, Active keys={active_projects}" thrown in BerriAI/litellm.
Source
Thrown at litellm/proxy/hooks/dynamic_rate_limiter.py:208
): # raise exception if invalid, return a str for the user to receive - if rejected, or return a modified dictionary for passing into litellm
"""
- For a model group
- Check if tpm/rpm available
- Raise RateLimitError if no tpm/rpm available
"""
if "model" in data:
key_priority: Final[str | None] = user_api_key_dict.metadata.get("priority", None)
(
available_tpm,
available_rpm,
model_tpm,
model_rpm,
active_projects,
) = await self.check_available_usage(model=data["model"], priority=key_priority)
### CHECK TPM ###
if available_tpm is not None and available_tpm == 0:
resolved_model, llm_provider = resolve_llm_provider_for_rate_limit(data.get("model"))
raise ProxyRateLimitError(
detail={
"error": f"Key={user_api_key_dict.api_key} over available TPM={available_tpm}. Model TPM={model_tpm}, Active keys={active_projects}"
},
rate_limit_type=RateLimitType.TOKENS,
model=resolved_model,
llm_provider=llm_provider,
)
### CHECK RPM ###
elif available_rpm is not None and available_rpm == 0:
resolved_model, llm_provider = resolve_llm_provider_for_rate_limit(data.get("model"))
raise ProxyRateLimitError(
detail={
"error": f"Key={user_api_key_dict.api_key} over available RPM={available_rpm}. Model RPM={model_rpm}, Active keys={active_projects}"
},
rate_limit_type=RateLimitType.REQUESTS,
model=resolved_model,
llm_provider=llm_provider,
)View on GitHub (pinned to 77b7c6c40c)
Solutions
- Reduce request token throughput for this key.
- Wait for other active keys' usage to subside so TPM frees up.
- Request a higher TPM allocation for the model.
When it happens
Trigger: Thrown at litellm/proxy/hooks/dynamic_rate_limiter.py:208 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/42f8dbb14b6e63f6.
Report an issue: GitHub.