BerriAI/litellm · error · HTTPException
Project management is an enterprise feature. You must be a L
Error message
Project management is an enterprise feature. 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
All project management endpoints are a paid LiteLLM Enterprise feature. On POST /project/new the global premium_user flag is checked; without a verified LITELLM_LICENSE the proxy returns HTTP 403 before doing any work, with pointers to the trial and pricing pages.
Source
Thrown at enterprise/litellm_enterprise/proxy/management_endpoints/project_endpoints.py:345
```
"""
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(
object_data=data,
field_name=field,
value=getattr(data, field),
)
delattr(data, field)
if prisma_client is None:
raise HTTPException(View on GitHub (pinned to 6c2dcb801b)
Solutions
- Set LITELLM_LICENSE to a valid enterprise key in the proxy's env and restart it
- Verify the license is loaded (proxy startup logs show premium user status) before calling project endpoints
- Obtain a 7-day trial key from https://www.litellm.ai/enterprise#trial for evaluation
- If you do not need projects, use team/key management endpoints from the OSS tier instead
Example fix
# before docker run litellm/litellm --config /config.yaml # no license curl -X POST http://0.0.0.0:4000/project/new ... # after docker run -e LITELLM_LICENSE=sk-... litellm/litellm --config /config.yaml curl -X POST http://0.0.0.0:4000/project/new ...
Defensive patterns
Strategy: validation
Validate before calling
async def enterprise_ready(client) -> bool:
# probe an enterprise endpoint cheaply or track proxy premium status via /health/liveliness + config
try:
await client.get('/project/list')
return True
except Exception as e:
if getattr(e, 'status_code', None) == 403:
return False
raise Type guard
const isEnterpriseError = (e) => e.status === 403 && /Enterprise user/.test(e.body?.detail?.error ?? '');
Try / catch
catch (e) {
if (e.status === 403 && /not_premium_user|Enterprise user/.test(e.body?.detail?.error ?? '')) {
throw new Error('Proxy lacks LITELLM_LICENSE: set it and restart before using project endpoints');
}
throw e;
} Prevention
- Set LITELLM_LICENSE via secret manager so every proxy replica sees it
- Add a startup smoke test in deployment pipelines that calls one enterprise endpoint
When it happens
Trigger: POST /project/new on a proxy without a premium license (premium_user is False), regardless of payload. Also fires when the license key is expired, malformed, or not loaded into the process that serves the request.
Common situations: Running the open-source proxy image and hitting enterprise endpoints, license env var set in the wrong container/shell, or a license that lapsed after renewal.
Related errors
- Only premium users can add tags to projects. 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/45c675d45dd3db0b.
Report an issue: GitHub.