I need a more precise (not global) way to solve this that doesn't prevent dispatcher caching. I've considered writing a custom servlet to return the data, but if there's better, more out-of-the-box approach to this, I'd prefer it.
Another option is to rewrite the API url on the live page JS code so that it passes the page size as a selector in the URL. Like - /api/assets/cf.150.json. And then you can add a rewrite rule in Apache to remove the selector and add it as a query param before it passes the URL to AEM for processing. However, on AEM author instance you will have to to use regular query param based URL only.