BerriAI/litellm · error · HTTPException
Rate limit reached. status_code: 429
Error message
Rate limit reached. status_code: 429
What it means
Error "Rate limit reached. status_code: 429" thrown in BerriAI/litellm.
Source
Thrown at litellm/proxy/guardrails/guardrail_hooks/zscaler_ai_guard/zscaler_ai_guard.py:307
async def _send_request(self, url, headers, data):
async_client: Final = get_async_httpx_client(llm_provider=httpxSpecialProvider.LoggingCallback)
response: Final = await async_client.post(
f"{url}",
headers=headers,
json=data,
timeout=self.timeout,
)
response.raise_for_status()
return response
def _handle_response(self, response, direction):
# Raise exceptions on critical errors to stop the request
if response.status_code == 429: # Rate limit
verbose_proxy_logger.error("Zscaler AI Guard rate limit reached. Blocking request.")
user_facing_error = self._create_user_facing_error("Rate limit reached. status_code: 429")
# This exception will be caught by the proxy and returned to the user
raise HTTPException(status_code=500, detail=user_facing_error)
if response.status_code >= 500: # Server error
verbose_proxy_logger.error(
"Zscaler AI Guard service is unavailable (Status: %s). Blocking request.", response.status_code
)
user_facing_error = self._create_user_facing_error(f"Service is unavailable (HTTP {response.status_code})")
raise HTTPException(status_code=500, detail=user_facing_error)
if response.status_code == 200:
json_response: Final = response.json()
statusCode_in_response: Final = json_response.get("statusCode", None)
if statusCode_in_response == 200:
guardrail_result: Final = json_response.get("action", None)
verbose_proxy_logger.info("Zscaler AI Guard response: %s", json_response)
if guardrail_result == "BLOCK":
verbose_proxy_logger.info(
"Violated Zscaler AI Guard guardrail policy. zscaler_ai_guard_response: %s", json_responseView on GitHub (pinned to 77b7c6c40c)
Solutions
- Reduce request rate to the Zscaler AI Guard API or retry after the rate limit window.
- Contact Zscaler to raise the API rate limit if sustained throughput is needed.
When it happens
Trigger: Thrown at litellm/proxy/guardrails/guardrail_hooks/zscaler_ai_guard/zscaler_ai_guard.py:307 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/3d2d27c3589e84a8.
Report an issue: GitHub.