I think before continuing down this route, you may want to take into consideration what your contractual license constraints are in terms of engine calls: Engine Call means a server call that starts real-time processing on server side for the extraction of data, such as data relating to surveys, WebApps, JSSP, APIs, mobile app registrations, etc. Engine Calls must be licensed in packs of 5,000 Engine Calls per day.
You can then estimate the number of records you want to transfer over API and measure/monitor performance indicators to conclude how many records/bytes can be transferred in the less number of calls without impacting other areas of campaign, and specially during peak hours or during other data load intensive operations.
If you are expecting to trasfer up to 100k records per hour, that would be around 27-30 records per second to consume every 1 hour, the contract may mention what the limitation is per seconds. https://helpx.adobe.com/legal/product-descriptions/adobe-campaign-classic---product-description.html#bITInfrastructureResourcesbyActiveProfilesTiersb
I would start by calculating how many records/bytes I can transfer per engine call without noticing too much impact on the server/db/services and start scaling resources for future proofing as well as add peak performance buffer.
At one point I was only updating a single flag over API and was sending 10k records to update per call, but that was just with 1 flag, and performance was fine.