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

  1. Set a valid LITELLM_LICENSE in the proxy's environment and restart it
  2. Remove the tags field from the request payload (project creation still requires a license via the next check)
  3. 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

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


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