BerriAI/litellm · error · ProxyRateLimitError
Model capacity reached for {model}. Priority: {priority}, Ra
Error message
Model capacity reached for {model}. Priority: {priority}, Rate limit type: {status['rate_limit_type']}, Model TPM: {model_group_info.tpm if model_group_info.tpm is not None else 'not configured'}, Model RPM: {model_group_info.rpm if model_group_info.rpm is not None else 'not configured'}, Remaining: {status['limit_remaining']} What it means
Error "Model capacity reached for {model}. Priority: {priority}, Rate limit type: {status['rate_limit_type']}, Model TPM: {model_group_info.tpm if model_group_info.tpm is not None else 'not configured'}, Model RPM: {model_group_info.rpm if model_group_info.rpm is not None else 'not configured'}, Remaining: {status['limit_remaining']}" thrown in BerriAI/litellm.
Source
Thrown at litellm/proxy/hooks/dynamic_rate_limiter_v3.py:466
"requests": 1,
"tokens": 0,
}
atomic_response: Final = await self.v3_limiter.atomic_check_and_increment_by_n(
descriptors=enforced_descriptors,
increments=[per_request_increment for _ in enforced_descriptors],
parent_otel_span=user_api_key_dict.parent_otel_span,
)
verbose_proxy_logger.debug("Atomic check+increment response: %s", json.dumps(atomic_response, indent=2))
if atomic_response["overall_code"] == "OVER_LIMIT":
resolved_model, llm_provider = resolve_llm_provider_for_rate_limit(model)
for status in atomic_response["statuses"]:
if status["code"] != "OVER_LIMIT":
continue
descriptor_key = status["descriptor_key"]
if descriptor_key == "model_saturation_check":
raise ProxyRateLimitError(
detail={
"error": f"Model capacity reached for {model}. "
f"Priority: {priority}, "
f"Rate limit type: {status['rate_limit_type']}, "
f"Model TPM: {model_group_info.tpm if model_group_info.tpm is not None else 'not configured'}, "
f"Model RPM: {model_group_info.rpm if model_group_info.rpm is not None else 'not configured'}, "
f"Remaining: {status['limit_remaining']}"
},
headers={
"retry-after": str(self.v3_limiter.window_size),
"rate_limit_type": str(status["rate_limit_type"]),
"x-litellm-priority": priority or "default",
},
rate_limit_type=map_v3_rate_limit_type(status["rate_limit_type"]),
model=resolved_model,
llm_provider=llm_provider,
)
if descriptor_key == "priority_model":View on GitHub (pinned to 77b7c6c40c)
Solutions
- Retry after capacity frees up or the limit window resets.
- Route traffic to another deployment of the model with available capacity.
- Request higher TPM/RPM limits for the model group.
When it happens
Trigger: Thrown at litellm/proxy/hooks/dynamic_rate_limiter_v3.py:466 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/031393dc9ef30988.
Report an issue: GitHub.