Hi Nconforti , there are a few options you might want to explore:
1. You can leverage a custom freemarker endpoint. You'll still have about the same number of API calls in total; however, you can bundle most of them within the endpoint itself by leveraging the rest/restadmin context objects. These internal API calls are much more efficient than calling the API directly via HTTP. For more details on this approach, see https://developer.khoros.com/khoroscommunitydevdocs/docs/condensing-api-requests-with-endpoints
2. We recently added support for subqueries with API v2. I've not tried this out with roles on the user collection, but it would be worth a shot. In theory, this should allow you to get the roles back with the initial user requests. When combined with the "IN" operator on the user collection, you could potentially get a lot of users with their roles data at a time and save quite a few calls this way. More details on subqueries here: https://developer.khoros.com/khoroscommunitydevdocs/docs/getting-started-with-community-api-2#section-make-a-subquery-within-a-json-based-query
3. As of 20.5, API v2 also supports batch operations which allows you to bundle multiple queries: https://developer.khoros.com/khoroscommunitydevdocs/docs/getting-started-with-community-api-2#section-batch-query-requests-with-a-json-based-query
I hope this helps!