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"] = encodedModel

View on GitHub (pinned to 78f0c4079e)

Solutions

  1. Ensure the session field contains a valid Realtime session JSON object.
  2. 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


AI-assisted analysis of router-for-me/CLIProxyAPI@78f0c4079e (2026-08-15). Data as JSON: /api/errors/74681ae885239eba. Report an issue: GitHub.