BerriAI/litellm · error · HTTPException

Service is unavailable (HTTP {response.status_code})

Error message

Service is unavailable (HTTP {response.status_code})

What it means

Error "Service is unavailable (HTTP {response.status_code})" thrown in BerriAI/litellm.

Source

Thrown at litellm/proxy/guardrails/guardrail_hooks/zscaler_ai_guard/zscaler_ai_guard.py:314

            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
                    )
                    return {
                        "action": "BLOCK",
                        "zscaler_ai_guard_response": json_response,
                    }
                elif guardrail_result == "ALLOW" or guardrail_result == "DETECT":
                    verbose_proxy_logger.debug(

View on GitHub (pinned to 77b7c6c40c)

Solutions

  1. Retry the request later; the Zscaler AI Guard service is temporarily unavailable.
  2. Configure block_on_error behavior appropriate for your availability requirements.

When it happens

Trigger: Thrown at litellm/proxy/guardrails/guardrail_hooks/zscaler_ai_guard/zscaler_ai_guard.py:314 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/ace148c5c51f3381. Report an issue: GitHub.