BerriAI/litellm · error · HTTPException
User is not org_admin for Organization= {org_id}.
Error message
User is not org_admin for Organization= {org_id}. What it means
Visibility guard on organization listing: for non-admin callers the results are filtered to organizations where they hold an org_admin membership (via OrganizationMembershipRepository lookups). This error surfaces when a requested org is outside that admin set, preventing org enumeration by non-admins.
Source
Thrown at litellm/proxy/management_endpoints/organization_endpoints.py:555
org_ids_list = organization_ids.split(",") if organization_ids else None
exclude_org_ids_list: list[str] | None = None
if exclude_organization_ids:
exclude_org_ids_list = exclude_organization_ids.split(",") if exclude_organization_ids else None
# Restrict non-proxy-admins to only organizations where they are org_admin
if not _user_has_admin_view(user_api_key_dict):
memberships: Final = await _table(OrganizationMembershipRepository(prisma_client)).find_many(
where={"user_id": user_api_key_dict.user_id}
)
admin_org_ids = [m.organization_id for m in memberships if m.user_role == LitellmUserRoles.ORG_ADMIN.value]
if org_ids_list is None:
# Default to orgs where user is org_admin
org_ids_list = admin_org_ids
else:
# Ensure user is org_admin for all requested orgs
for org_id in org_ids_list:
if org_id not in admin_org_ids:
raise HTTPException(
status_code=403,
detail={"error": f"User is not org_admin for Organization= {org_id}."},
)
# Fetch organization aliases for metadata
where_condition: Final = _STR_OBJECT_DICT_ADAPTER.validate_python({})
if org_ids_list:
where_condition["organization_id"] = {"in": list(org_ids_list)}
org_aliases: Final = await _table(OrganizationRepository(prisma_client)).find_many(where=where_condition)
# Query daily activity for organizations
return await get_daily_activity(
prisma_client=prisma_client,
table_name="litellm_dailyorganizationspend",
entity_id_field="organization_id",
entity_id=org_ids_list,
entity_metadata_field={o.organization_id: {"organization_alias": o.organization_alias} for o in org_aliases},
exclude_entity_ids=exclude_org_ids_list,View on GitHub (pinned to 77b7c6c40c)
Solutions
- Use an org_admin key for this organization, or a PROXY_ADMIN key.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at litellm/proxy/management_endpoints/organization_endpoints.py:555 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/0efd9d0e4fbc7d3e.
Report an issue: GitHub.