BerriAI/litellm · error · ProxyRateLimitError
Key={user_api_key_dict.api_key} over available RPM={availabl
Error message
Key={user_api_key_dict.api_key} over available RPM={available_rpm}. Model RPM={model_rpm}, Active keys={active_projects} What it means
Error "Key={user_api_key_dict.api_key} over available RPM={available_rpm}. Model RPM={model_rpm}, Active keys={active_projects}" thrown in BerriAI/litellm.
Source
Thrown at litellm/proxy/hooks/dynamic_rate_limiter.py:219
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,
)
elif available_rpm is not None or available_tpm is not None:
## UPDATE CACHE WITH ACTIVE PROJECT
asyncio.create_task(
self.internal_usage_cache.async_set_cache_sadd( # this is a set
model=data["model"],
value=[user_api_key_dict.token or "default_key"],
)
)
return None
async def async_post_call_success_hook(self, data: dict, user_api_key_dict: UserAPIKeyAuth, response):View on GitHub (pinned to 77b7c6c40c)
Solutions
- Reduce request rate for this key.
- Wait for available RPM to free up as other keys' usage declines.
- Request a higher RPM allocation for the model.
When it happens
Trigger: Thrown at litellm/proxy/hooks/dynamic_rate_limiter.py:219 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/fc2784ce0549333e.
Report an issue: GitHub.