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

  1. Set LITELLM_LICENSE to a valid enterprise key in the proxy's env and restart it
  2. Verify the license is loaded (proxy startup logs show premium user status) before calling project endpoints
  3. Obtain a 7-day trial key from https://www.litellm.ai/enterprise#trial for evaluation
  4. 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

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


AI-assisted analysis of BerriAI/litellm@6c2dcb801b (2026-08-15). Data as JSON: /api/errors/45c675d45dd3db0b. Report an issue: GitHub.