AlexxIT/go2rtc · error

milesone: create session:

Error message

milesone: create session: 

What it means

Milestone GetOffer's HTTP status guard: the POST to /REST/v1/WebRTC/Session returned a non-200 status (appended to the message, e.g. 401/500). The session needed to obtain the WebRTC offer SDP could not be created; bearer token problems and missing WebRTC rights are the usual causes.

Solutions

  1. Check the appended status: 401 means the token expired — re-run GetToken/login; 5xx indicates a server-side Milestone failure
  2. Verify the camera and user are enabled for WebRTC streaming in Milestone
  3. Retry after confirming server health
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at internal/webrtc/milestone.go:118 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/e7894e98ca96d324. Report an issue: GitHub.

Appendix: source

Thrown at internal/webrtc/milestone.go:118

	if err != nil {
		return "", err
	}

	req, err := http.NewRequest("POST", m.url+"/REST/v1/WebRTC/Session", bytes.NewBuffer(data))
	if err != nil {
		return "", err
	}
	req.Header.Set("Authorization", "Bearer "+m.token)
	req.Header.Set("Content-Type", "application/json")

	res, err := tcp.Do(req)
	if err != nil {
		return "", err
	}
	defer res.Body.Close()

	if res.StatusCode != http.StatusOK {
		return "", errors.New("milesone: create session: " + res.Status)
	}

	var response struct {
		SessionId string `json:"sessionId"`
		OfferSDP  string `json:"offerSDP"`
	}
	if err = json.NewDecoder(res.Body).Decode(&response); err != nil {
		return "", err
	}

	var offer pion.SessionDescription
	if err = json.Unmarshal([]byte(response.OfferSDP), &offer); err != nil {
		return "", err
	}

	m.sessionID = response.SessionId

	return offer.SDP, nil

View on GitHub (pinned to c245815e75)