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
- Check the appended status: 401 means the token expired — re-run GetToken/login; 5xx indicates a server-side Milestone failure
- Verify the camera and user are enabled for WebRTC streaming in Milestone
- 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, nilView on GitHub (pinned to c245815e75)