router-for-me/CLIProxyAPI · error
failed to decode Realtime session: %w
Error message
failed to decode Realtime session: %w
What it means
Error "failed to decode Realtime session: %w" thrown in router-for-me/CLIProxyAPI.
Source
Thrown at internal/client/codex/live/live.go:589
}
return encoded, "application/json", modelFromJSON(session), nil
}
func rewriteCallRequestModel(body []byte, contentType, model string) ([]byte, string, error) {
upstreamModel := codexRealtimeModel(model)
mediaType, _, errMediaType := mime.ParseMediaType(contentType)
if errMediaType != nil || !strings.EqualFold(mediaType, "application/json") || len(bytes.TrimSpace(body)) == 0 {
return body, upstreamModel, nil
}
var payload map[string]json.RawMessage
if errUnmarshal := json.Unmarshal(body, &payload); errUnmarshal != nil {
return nil, "", fmt.Errorf("failed to decode Realtime call request: %w", errUnmarshal)
}
changed := false
if sessionJSON, ok := payload["session"]; ok && len(sessionJSON) > 0 {
var session map[string]json.RawMessage
if errUnmarshal := json.Unmarshal(sessionJSON, &session); errUnmarshal != nil {
return nil, "", fmt.Errorf("failed to decode Realtime session: %w", errUnmarshal)
}
encodedModel, errMarshal := json.Marshal(upstreamModel)
if errMarshal != nil {
return nil, "", fmt.Errorf("failed to encode Realtime model: %w", errMarshal)
}
session["model"] = encodedModel
encodedSession, errMarshal := json.Marshal(session)
if errMarshal != nil {
return nil, "", fmt.Errorf("failed to encode Realtime session: %w", errMarshal)
}
payload["session"] = encodedSession
changed = true
} else if _, ok := payload["model"]; ok {
encodedModel, errMarshal := json.Marshal(upstreamModel)
if errMarshal != nil {
return nil, "", fmt.Errorf("failed to encode Realtime model: %w", errMarshal)
}
payload["model"] = encodedModelView on GitHub (pinned to 78f0c4079e)
Solutions
- Ensure the session field contains a valid Realtime session JSON object.
- Fix the session payload according to the wrapped decode error.
When it happens
Trigger: Thrown at internal/client/codex/live/live.go:589 when the library encounters an invalid state.
Common situations: See trigger scenarios.
Understand the failure class
- Parsing and encoding errors: unexpected token, malformed input — why parsers reject input and how to find the real culprit.
AI-assisted analysis of router-for-me/CLIProxyAPI@78f0c4079e (2026-08-15).
Data as JSON: /api/errors/74681ae885239eba.
Report an issue: GitHub.