BerriAI/litellm · error · HTTPException

Push notification URL must use HTTPS

Error message

Push notification URL must use HTTPS

What it means

Raised by the push-notification config validation used by the A2A tasks/pushNotificationConfig/set handler when a supplied notification URL does not use the https scheme. A2A push destinations must be secure endpoints — an http:// webhook would leak auth tokens and task payloads in cleartext — so the JSON-RPC request is rejected with HTTP 400 before any config is stored.

Source

Thrown at litellm/proxy/agent_endpoints/a2a_endpoints.py:100

def _served_version(agent: "AgentResponse", request: Request, original_method: str | None = None) -> A2AVersion:
    """Protocol version LiteLLM serves for this agent.

    The agent's configured version governs. For agents that pin no version, fall back
    to the client's signal: PascalCase JSON-RPC methods and an ``a2a-version: 1.x``
    header both mark a 1.0 caller; otherwise default to 0.3.
    """
    configured: Final = (agent.agent_card_params or {}).get("protocolVersion")
    if configured in ("0.3", "1.0"):
        return configured
    if original_method in _PASCAL_TO_WIRE:
        return "1.0"
    return "1.0" if request.headers.get("a2a-version", "").startswith("1.") else "0.3"


def _validate_push_notification_url(url: str) -> None:
    parsed: Final = urlparse(url)
    if parsed.scheme != "https":
        raise HTTPException(
            status_code=400,
            detail="Push notification URL must use HTTPS",
        )
    try:
        validate_url(url)
    except (SSRFError, ValueError) as e:
        raise HTTPException(status_code=400, detail=str(e)) from e


def _caller_identity_headers(user_api_key_dict: UserAPIKeyAuth) -> dict[str, str]:
    headers: Final[dict[str, str]] = {}
    if user_api_key_dict.user_id:
        headers["X-LiteLLM-User-Id"] = user_api_key_dict.user_id
    if user_api_key_dict.team_id:
        headers["X-LiteLLM-Team-Id"] = user_api_key_dict.team_id
    return headers

View on GitHub (pinned to 77b7c6c40c)

Solutions

  1. Use an https:// push notification URL.

Example fix

url='https://hooks.example.com/notify'
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at litellm/proxy/agent_endpoints/a2a_endpoints.py:100 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/d4728429cca2ec2e. Report an issue: GitHub.