BerriAI/litellm · error · HTTPException
Only premium users can add tags to projects. You must be a…
Error message
Only premium users can add tags to projects. You must be a LiteLLM Enterprise user to use this feature. If you have a license please set `LITELLM_LICENSE` in your env. Get a 7 day trial key here: https://www.litellm.ai/enterprise#trial. Pricing: https://www.litellm.ai/#pricing
What it means
Project management is enterprise-only and tags doubly so: /project/new and /project/update first reject non-premium users who send a tags field, then reject all non-premium use of project management itself. premium_user is only True with a valid LITELLM_LICENSE; the 403 detail embeds the not_premium_user help text with trial and pricing links.
Solutions
- Set LITELLM_LICENSE to a valid enterprise key in the proxy environment and restart
- Get a 7-day trial key at https://www.litellm.ai/enterprise#trial to evaluate
- Remove the tags field from project payloads if the license cannot be enabled (note core project management is also enterprise-only)
Example fix
# before docker run -p 4000:4000 ghcr.io/berriai/litellm --config /app/config.yaml # no license, tags sent -> 403 # after docker run -p 4000:4000 -e LITELLM_LICENSE=<your-key> ghcr.io/berriai/litellm --config /app/config.yaml
Defensive patterns
Strategy: validation
Validate before calling
import os
IS_PREMIUM = bool(os.environ.get("LITELLM_LICENSE"))
def project_payload_safe(data: dict) -> dict:
if not IS_PREMIUM:
data.pop("tags", None) # tags are premium-only
return data Try / catch
try:
await post("/project/new", json=data)
except HTTPStatusError as e:
if e.response.status_code == 403 and "premium" in e.response.text:
# configuration gap: set LITELLM_LICENSE on the proxy, then retry
raise RuntimeError("project management requires LITELLM_LICENSE")
raise Prevention
- Set LITELLM_LICENSE in every environment that manages projects
- Strip enterprise-only fields (tags, premium metadata) from payloads in OSS setups
- Keep license expiry dates on a calendar; renew before 403s appear
When it happens
Trigger: Any /project/* write on a proxy without a valid enterprise license, or specifically any request with "tags" set while premium_user is False (LITELLM_LICENSE unset, invalid, or expired).
Common situations: OSS litellm proxy given an enterprise-style config; license expired or the env var not passed into the container; CI environments provisioned without the license.
Related errors
- Blocked user check was never set. This call has no…
- Only admins can delete projects
- Only admins or team admins can create projects. Your role is
- Only admins or team admins can update projects
- Trying to Customize Email Alerting
AI-assisted analysis of BerriAI/litellm@77b7c6c40c (2026-08-18).
Data as JSON: /api/errors/a232c85b1368285e.
Report an issue: GitHub.
Appendix: source
Thrown at enterprise/litellm_enterprise/proxy/management_endpoints/project_endpoints.py:362
"description": "Personalized hotel recommendation engine",
"team_id": "team-123",
"models": ["claude-3-sonnet"],
"budget_id": "428eeaa8-f3ac-4e85-a8fb-7dc8d7aa8689",
"metadata": {
"use_case_id": "SNOW-54321"
}
}'
```
"""
from litellm.proxy.proxy_server import (
litellm_proxy_admin_name,
premium_user,
prisma_client,
)
try:
if getattr(data, "tags", None) is not None and not premium_user:
raise HTTPException(
status_code=403,
detail={
"error": "Only premium users can add tags to projects. " + CommonProxyErrors.not_premium_user.value
},
)
if not premium_user:
raise HTTPException(
status_code=403,
detail={
"error": "Project management is an enterprise feature. " + CommonProxyErrors.not_premium_user.value
},
)
# ADD METADATA FIELDS
for field in LiteLLM_ManagementEndpoint_MetadataFields_Premium:
if getattr(data, field, None) is not None:
_set_object_metadata_field(View on GitHub (pinned to 77b7c6c40c)