BerriAI/litellm · error · ValueError

Invalid callback variable: {key}. Must be one of {valid_keys

Error message

Invalid callback variable: {key}. Must be one of {valid_keys}

What it means

AddTeamCallback validator checks each callback_vars key against StandardCallbackDynamicParams' known fields; an unknown variable cannot be forwarded to the callback implementation, so the team callback payload is rejected.

Source

Thrown at litellm/proxy/_types.py:1986


class BlockModelRequest(LiteLLMPydanticObjectBase):
    model_id: str  # required


class AddTeamCallback(LiteLLMPydanticObjectBase):
    callback_name: str
    callback_type: Literal["success", "failure", "success_and_failure"] | None = "success_and_failure"
    callback_vars: dict[str, str]

    @model_validator(mode="before")
    @classmethod
    def validate_callback_vars(cls, values):
        callback_vars: Final = values.get("callback_vars", {})
        valid_keys: Final = set(StandardCallbackDynamicParams.__annotations__.keys())
        for key, value in callback_vars.items():
            if key not in valid_keys:
                raise ValueError(f"Invalid callback variable: {key}. Must be one of {valid_keys}")
            callback_vars[key] = str(value)
            validate_no_callback_env_reference(key, callback_vars[key], source="key/team callback metadata")
        return values


class TeamCallbackMetadata(LiteLLMPydanticObjectBase):
    success_callback: list[str] | None = []
    failure_callback: list[str] | None = []
    callbacks: list[str] | None = []
    # for now - only supported for langfuse
    callback_vars: dict[str, str] | None = {}

    @model_validator(mode="before")
    @classmethod
    def validate_callback_vars(cls, values):
        success_callback: Final = values.get("success_callback", [])
        if success_callback is None:
            values.pop("success_callback", None)

View on GitHub (pinned to 77b7c6c40c)

Solutions

  1. Use a callback variable from the listed valid keys.

Example fix

Pick a key from valid_keys.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at litellm/proxy/_types.py:1986 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/537f214f45163fa4. Report an issue: GitHub.