siyuan-note/siyuan · error

Account authentication failed, please login again

Error message

Account authentication failed, please login again

What it means

UploadAssets2Cloud received HTTP 401 from the cloud server: the symphony session cookie (the upload token) is no longer accepted. The localized message (Conf.Language(31)) asks the user to log in again, and the upload batch aborts immediately.

Solutions

  1. Open Settings - Account, log out and back in, then retry the upload
  2. Verify the account and subscription status are active
  3. Check that the system clock is correct
  4. Disable proxies that strip or rewrite cookies for the cloud domain
Defensive patterns

Strategy: retry

Try / catch

On an error equal to the re-login message, stop the batch, prompt re-login, refresh the token, and retry once from the first un-uploaded asset - never loop on 401 with the same token.

Prevention

When it happens

Trigger: Uploading assets to cloud storage while the account token expired or was revoked - password changed, logged in on another device, subscription lapsed, or the token was invalidated server-side.

Common situations: Long-running sessions that outlive the token; account or subscription changes made after login; system clock far off; proxies stripping cookies.

Understand the failure class

Related errors


AI-assisted analysis of siyuan-note/siyuan@afa823b6b4 (2026-08-18). Data as JSON: /api/errors/489fe9593f5e3211. Report an issue: GitHub.

Appendix: source

Thrown at kernel/model/assets.go:1378

			util.PushUpdateMsg(msgId, msg, 3000)
		}

		requestResult := gulu.Ret.NewResult()
		request := httpclient.NewCloudFileRequest2m()
		resp, reqErr := request.
			SetSuccessResult(requestResult).
			SetFile("file[]", absAsset).
			SetCookies(&http.Cookie{Name: "symphony", Value: uploadToken}).
			SetHeader("meta-type", metaType).
			SetHeader("biz-type", bizType).
			Post(util.GetCloudServer() + "/apis/siyuan/upload?ver=" + util.Ver)
		if nil != reqErr {
			logging.LogErrorf("upload assets failed: %s", reqErr)
			return count, ErrFailedToConnectCloudServer
		}

		if 401 == resp.StatusCode {
			err = errors.New(Conf.Language(31))
			return
		}

		if 0 != requestResult.Code {
			logging.LogErrorf("upload assets failed: %s", requestResult.Msg)
			err = fmt.Errorf(Conf.Language(94), requestResult.Msg)
			return
		}

		absAsset = filepath.ToSlash(absAsset)
		relAsset := absAsset[strings.Index(absAsset, "assets/"):]
		completedUploadAssets = append(completedUploadAssets, relAsset)
		logging.LogInfof("uploaded asset [%s]", relAsset)
		count++
	}

	if !ignorePushMsg {
		util.PushClearMsg(msgId)

View on GitHub (pinned to afa823b6b4)