ASP.NET Core serializes anonymous objects with camelCase, producing 'subsonicResponse' instead of 'subsonic-response'. Fixed by using Dictionary with explicit key names for all JSON responses.