historically this has been achieved by adding code to all item api requests with a “hidden facet application” + customizing the item router (when you query the item api bu item id or item urlcomponent, it ignores facets you send).
That being said, 19.2 has personalized catalog views which might facilitate things, but I haven’t researched it yet to be able to comment on if it does help or not.