AlexxIT/go2rtc · error

${res.Status}

Error message

${res.Status}

What it means

Tapo newConn HTTP status guard: the multipart stream request to the camera returned a status other than 200 (res.Status becomes the message, e.g. '401 Unauthorized'). The stream channel could not be opened; auth failures and camera-side errors are the usual causes.

Solutions

  1. For 401: verify the Tapo account password / cloud credentials in the URL
  2. For 404: check the stream path and channel query parameter
  3. Retry after the camera reboots if it returns 5xx
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at pkg/tapo/client.go:103 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/1bc96bf8fd53b8bf. Report an issue: GitHub.

Appendix: source

Thrown at pkg/tapo/client.go:103

	query := c.url.Query()

	if deviceId := query.Get("deviceId"); deviceId != "" {
		req.URL.RawQuery = "deviceId=" + deviceId
	}

	req.Header.Set("Content-Type", "multipart/mixed; boundary=--client-stream-boundary--")

	username := c.url.User.Username()
	password, _ := c.url.User.Password()

	conn, res, err := dial(req, c.url.Scheme, username, password)
	if err != nil {
		return nil, err
	}

	if res.StatusCode != http.StatusOK {
		return nil, errors.New(res.Status)
	}

	if c.decrypt == nil {
		c.newDectypter(res, c.url.Scheme, username, password)
	}

	channel := query.Get("channel")
	if channel == "" {
		channel = "0"
	}

	subtype := query.Get("subtype")
	switch subtype {
	case "", "0":
		subtype = "HD"
	case "1":
		subtype = "VGA"
	}

View on GitHub (pinned to c245815e75)