BerriAI/litellm · error · ProxyRateLimitError
Batch rate limit exceeded for {descriptor.get('key', 'unknow
Error message
Batch rate limit exceeded for {descriptor.get('key', 'unknown')}: {descriptor.get('value', 'unknown')}. Batch contains {batch_usage.request_count} requests but only {remaining_display} requests remaining out of {current_limit} RPM limit. Limit resets at: {reset_time_formatted} What it means
Error "Batch rate limit exceeded for {descriptor.get('key', 'unknown')}: {descriptor.get('value', 'unknown')}. Batch contains {batch_usage.request_count} requests but only {remaining_display} requests remaining out of {current_limit} RPM limit. Limit resets at: {reset_time_formatted}" thrown in BerriAI/litellm.
Source
Thrown at litellm/proxy/hooks/batch_rate_limiter.py:418
current_limit: Final = status["current_limit"]
if limit_type == "requests":
detail = (
f"Batch rate limit exceeded for {descriptor.get('key', 'unknown')}: {descriptor.get('value', 'unknown')}. "
f"Batch contains {batch_usage.request_count} requests but only {remaining_display} requests remaining "
f"out of {current_limit} RPM limit. "
f"Limit resets at: {reset_time_formatted}"
)
else: # tokens
detail = (
f"Batch rate limit exceeded for {descriptor.get('key', 'unknown')}: {descriptor.get('value', 'unknown')}. "
f"Batch contains {batch_usage.total_tokens} tokens but only {remaining_display} tokens remaining "
f"out of {current_limit} TPM limit. "
f"Limit resets at: {reset_time_formatted}"
)
resolved_model, llm_provider = resolve_llm_provider_for_rate_limit(requested_model)
raise ProxyRateLimitError(
detail=detail,
headers={
"retry-after": str(window_size),
"rate_limit_type": limit_type,
"reset_at": reset_time_formatted,
},
category=RateLimitErrorCategory.LITELLM_BATCH_RATE_LIMIT,
rate_limit_type=map_v3_rate_limit_type(limit_type),
model=resolved_model,
llm_provider=llm_provider,
)
async def _check_and_increment_batch_counters(
self,
user_api_key_dict: UserAPIKeyAuth,
data: dict,
batch_usage: BatchFileUsage,
descriptors: list["RateLimitDescriptor"] | None = None,View on GitHub (pinned to 77b7c6c40c)
Solutions
- Split the batch into smaller batches that fit within the remaining RPM.
- Wait until the limit reset time shown in the error before resubmitting.
- Request a higher RPM limit for the key or team.
When it happens
Trigger: Thrown at litellm/proxy/hooks/batch_rate_limiter.py:418 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/8ac8524b88903829.
Report an issue: GitHub.