langgenius/dify · error · AccountInFreezeError

account_in_freeze

account_in_freeze

Error message

This email account has been deleted within the past 30 daysand is temporarily unavailable for new account registration.

What it means

Raised as AccountInFreezeError (code 'account_in_freeze') on DeploymentEdition.CLOUD when BillingService.is_email_in_freeze(account.email) is true — the email was deleted within the last 30 days and is blocked from re-registration or re-activation on cloud.

Source

Thrown at api/controllers/console/auth/activate.py:168

        """

        normalized_request_email = req_data.email.lower() if req_data.email else None
        invitation = RegisterService.get_invitation_with_case_fallback(
            req_data.workspace_id, req_data.email, req_data.token, session=db.session()
        )
        if invitation is None:
            raise AlreadyActivateError()

        account = invitation["account"]
        if extract_access_token(request):
            current_account, _ = current_account_with_tenant()
            if current_account.id != account.id:
                raise InvitationAccountMismatchError()

        if dify_config.DEPLOYMENT_EDITION == DeploymentEdition.CLOUD and BillingService.is_email_in_freeze(
            account.email
        ):
            raise AccountInFreezeError()

        tenant = invitation["tenant"]
        raw_role = invitation["data"].get("role")
        try:
            role = TenantAccountRole(raw_role) if raw_role else TenantAccountRole.NORMAL
        except ValueError:
            role = TenantAccountRole.NORMAL
        if not TenantAccountRole.is_non_owner_role(role):
            role = TenantAccountRole.NORMAL

        membership_id = db.session.scalar(
            select(TenantAccountJoin.id).where(
                TenantAccountJoin.tenant_id == tenant.id,
                TenantAccountJoin.account_id == account.id,
            )
        )

        requires_setup = invitation["data"].get("requires_setup")

View on GitHub (pinned to ef8544b173)

Solutions

  1. Wait until the 30-day freeze window elapses, then retry activation/registration.
  2. Contact support to have the email manually unfrozen if the deletion was a mistake.
  3. Use a different email address to accept the invitation now.
Defensive patterns

Strategy: try-catch

Try / catch

try {
  await post('/activate', payload);
} catch (e) {
  if (e.code === 'account_in_freeze') {
    // show: 'email unavailable for 30 days after deletion; contact support or use another email'
  } else { throw e; }
}

Prevention

When it happens

Trigger: POST /console/api/activate (or /email-register/send) on the Cloud edition for an email whose account was deleted within the past 30 days; BillingService still reports it as frozen.

Common situations: User deleted their account and immediately tries to re-register/accept a new invite with the same email; admin re-invites a recently removed member before the freeze window elapses.

Related errors


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