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_response

View on GitHub (pinned to 77b7c6c40c)

Solutions

  1. Reduce request rate to the Zscaler AI Guard API or retry after the rate limit window.
  2. 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.