BerriAI/litellm · error · ValueError
Invalid role. Must be one of: {[role.value for role in ROLES
Error message
Invalid role. Must be one of: {[role.value for role in ROLES_WITHIN_ORG]} What it means
Field validator on OrganizationMemberUpdateRequest.role: the requested role is not one of the org-scoped roles (org_admin, internal_user, internal_user_view_only), preventing escalation to proxy-level roles inside an org membership.
Source
Thrown at litellm/proxy/_types.py:4002
class OrganizationMemberDeleteRequest(MemberDeleteRequest):
organization_id: str
ROLES_WITHIN_ORG: Final = [
LitellmUserRoles.ORG_ADMIN,
LitellmUserRoles.INTERNAL_USER,
LitellmUserRoles.INTERNAL_USER_VIEW_ONLY,
]
class OrganizationMemberUpdateRequest(OrganizationMemberDeleteRequest):
max_budget_in_organization: float | None = None
role: LitellmUserRoles | None = None
@field_validator("role")
def validate_role(cls, value: LitellmUserRoles | None) -> LitellmUserRoles | None:
if value is not None and value not in ROLES_WITHIN_ORG:
raise ValueError(f"Invalid role. Must be one of: {[role.value for role in ROLES_WITHIN_ORG]}")
return value
class OrganizationMemberUpdateResponse(MemberUpdateResponse):
organization_id: str
max_budget_in_organization: float
##########################################
class TeamAccessGroupModelGrant(LiteLLMPydanticObjectBase):
access_group_id: str
access_group_name: str
models: tuple[str, ...]
class TeamInfoResponseObjectTeamTable(LiteLLM_TeamTable):View on GitHub (pinned to 77b7c6c40c)
Solutions
- Use one of the listed valid org roles.
Example fix
role='org_admin'
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at litellm/proxy/_types.py:4002 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/7abcb21e2a19b464.
Report an issue: GitHub.