Well, just to clarify, I gave up on the idea b/c the particular API I was using didn’t want a CSV it wanted a text file, and it wouldn’t take a URL so the idea of sending the S3 URL was out.
Furthermore, I did begin looking into putting the file into Dropbox when it is uploaded (instead of/in addition to Bubble/S3), then creating some sort of automation (Zapier, etc.) to send the Dropbox file to the API. But in the end I didn’t fully explore this b/c I found a simpler method (altogether different app design and not pertinent to your question).
So, first of all: are you sure you need to send an actual file to your API? Could you send the data some other way (render it first in HTML, then send the page to the API?)?
Second, what about uploading the file and somehow getting the data into Google Sheets? There are tons of services out there that interact with Google Sheets, perhaps one of these can help you (user uploads file, data is sent to google sheets using 3rd party service or string of services)? Once it’s in there you can do almost anything with it (including running it back through your own API).
I wouldn’t give up on Bubble yet for handling all the tasks you need. Generally you can do what you need to with perseverance - the main issue is, is it worth it to you? Some tasks become a bit like a Rube Goldberg machine, which can be a bit unwieldy, but if you have one specific task to do, it can be ok to string a sequence of tasks together. Often, I find that by working through the Rube Goldberg-like approach, you understand the methodology well enough by the end to vastly simplify and have a Eureka moment that vasty simplifies the whole thing into one or two steps.
As for your last question (i.e. if you decide not to attempt the above and you decide to use Bubble for front-end and alternative services for your backend), I can’t help you here as I have not experimented – but I’ve seen discussion on the forum on these sorts of queries elsewhere. Perhaps you’ll find some of them of use (if you search through).