AlexxIT/go2rtc · error

wyze: login failed (code )

Error message

wyze: login failed (code %s): %s

What it means

The Wyze cloud login API responded with an error payload (apiError.hasError), so authentication was rejected — e.g. wrong credentials, expired token, or account issues. Includes the API's error code and message; raised in Login, also reachable via LoginWithCaptcha.

Solutions

  1. Verify email/password and API key/id
  2. Handle MFA via LoginWithCaptcha/LoginWithVerify when required
  3. Retry after rate limiting clears
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at pkg/wyze/cloud.go:128 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of AlexxIT/go2rtc@c245815e75 (2026-09-07). Data as JSON: /api/errors/5b2d4e93725c47e7. Report an issue: GitHub.

Appendix: source

Thrown at pkg/wyze/cloud.go:128

	req.Header.Set("Apikey", c.apiKey)
	req.Header.Set("Keyid", c.keyID)
	req.Header.Set("User-Agent", "go2rtc")

	resp, err := c.client.Do(req)
	if err != nil {
		return err
	}
	defer resp.Body.Close()

	body, err := io.ReadAll(resp.Body)
	if err != nil {
		return err
	}

	var errResp apiError
	_ = json.Unmarshal(body, &errResp)
	if errResp.hasError() {
		return fmt.Errorf("wyze: login failed (code %s): %s", errResp.code(), errResp.message())
	}

	var result loginResponse
	if err := json.Unmarshal(body, &result); err != nil {
		return fmt.Errorf("wyze: failed to parse login response: %w", err)
	}

	if len(result.MFAOptions) > 0 {
		return &AuthError{
			Message:  "MFA required",
			NeedsMFA: true,
			MFAType:  strings.Join(result.MFAOptions, ","),
		}
	}

	if result.AccessToken == "" {
		return errors.New("wyze: no access token in response")
	}

View on GitHub (pinned to c245815e75)