langgenius/dify · error · SeatsLimitExceeded

limit_exceeded

limit_exceeded

Error message

Unable to create account because the licensed seats limit was exceeded

What it means

Raised by SeatsLimitExceeded in _create_new_account when AccountService.create_account_and_tenant raises SeatsLimitExceededError. This is a licensing/billing control: the Dify edition enforces a maximum number of seated accounts per tenant/workspace, and new account creation is refused once the cap is hit.

Source

Thrown at api/controllers/console/auth/email_register.py:215

    def _create_new_account(
        self,
        email: str,
        password: str,
        timezone: str | None = None,
        language: str | None = None,
    ) -> Account:
        try:
            return AccountService.create_account_and_tenant(
                email=email,
                name=email,
                password=password,
                interface_language=get_valid_language(language),
                timezone=timezone,
                session=db.session(),
            )
        except SeatsLimitExceededError:
            raise SeatsLimitExceeded()
        except AccountRegisterError:
            raise AccountInFreezeError()

View on GitHub (pinned to ef8544b173)

Solutions

  1. Upgrade the license/plan to raise the seat cap, or remove inactive member accounts to free seats.
  2. Check the billing/license admin page to see current seat usage versus the limit.
  3. If seats should be available, verify the license file/env is current and the seat-count job is not stale.
  4. Invite the user as a member of an existing workspace instead of creating a new account/tenant.

Example fix

// before: every signup creates a new tenant
register(...);
// after: when seats are full, offer invite link
if (res.code === 'limit_exceeded') showUpgradeOrInviteUI();
Defensive patterns

Strategy: try-catch

Try / catch

try {
  await register({ token, ... });
} catch (e) {
  if (e.code === 'limit_exceeded') showUpgradeOrInviteUI();
  else throw e;
}

Prevention

When it happens

Trigger: POST /console/api/email-register succeeds through all token checks, then create_account_and_tenant attempts to provision a tenant seat and the configured seat limit is reached.

Common situations: Self-hosted EE with a license seat cap exhausted; SaaS workspace on a plan whose seat quota is full; trial license expired or downgraded; orphaned inactive accounts still counting toward the limit.

Related errors


AI-assisted analysis of langgenius/dify@ef8544b173 (2026-08-12). Data as JSON: /api/errors/04b12311d0bab53a. Report an issue: GitHub.