BerriAI/litellm · error · HTTPException
Only premium users can add tags to projects. You must be a L
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
Creating a project with a tags field is gated behind a LiteLLM Enterprise premium license. The endpoint checks the global premium_user flag (populated from the LITELLM_LICENSE env var) and, if tags are supplied without a valid license, returns HTTP 403 with upgrade/trial guidance. Project creation itself is also enterprise-only, so without a license the very next check fails too.
Source
Thrown at enterprise/litellm_enterprise/proxy/management_endpoints/project_endpoints.py:337
"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 6c2dcb801b)
Solutions
- Set a valid LITELLM_LICENSE in the proxy's environment and restart it
- Remove the tags field from the request payload (project creation still requires a license via the next check)
- Get a trial key at https://www.litellm.ai/enterprise#trial to evaluate the feature
Example fix
# before
curl -X POST http://0.0.0.0:4000/project/new -d '{"project_id":"p1","team_id":"t1","tags":["prod"]}'
# after (license present)
export LITELLM_LICENSE=sk-...
curl -X POST http://0.0.0.0:4000/project/new -d '{"project_id":"p1","team_id":"t1","tags":["prod"]}' Defensive patterns
Strategy: validation
Validate before calling
has_license = os.environ.get('LITELLM_LICENSE') not in (None, '')
if payload.get('tags') and not has_license:
payload.pop('tags') # or fail fast locally with a clear message Type guard
const canSendTags = (payload, licensePresent) => payload.tags === undefined || licensePresent;
Try / catch
catch (e) {
if (e.status === 403 && /Only premium users can add tags/.test(e.body?.detail?.error ?? '')) {
delete body.tags; return retry(body);
}
throw e;
} Prevention
- Gate enterprise-only fields (tags, metadata premium fields) behind a license capability flag in client code
- Log proxy premium status at client init so operators see licensing gaps before requests fail
When it happens
Trigger: POST /project/new with a "tags" field in the body while the proxy runs without a valid LITELLM_LICENSE, or with an expired/invalid license key.
Common situations: Testing enterprise endpoints on an OSS deployment, an expired trial key, or the license env var not being visible to the container running the proxy.
Related errors
- Project management is an enterprise feature. You must be a L
- Blocking web crawlers is an enterprise feature. You must be
- Violated content safety policy
- soft_budget cannot be negative. Received: {data.soft_budget}
- soft_budget ({data.soft_budget}) must be strictly lower than
AI-assisted analysis of BerriAI/litellm@6c2dcb801b (2026-08-15).
Data as JSON: /api/errors/a232c85b1368285e.
Report an issue: GitHub.