There is no API timeout work around. The correct solution is to give back the indication that the job has started and then run the job on a thread on the back end server. If you want to be sure that the user waits for the end of the task, you should return with the “submitted work” response a progress id of some kind. That progress id will be the handle that the task, once finished, will send data to and trigger the closing process.
This progress can be done within bubble with a “Thing” called progress, where you submit the new ID to the call along the data. Once finished the job, it uses a workflow api to notify that the task has finished.
The progress id can also be created at the backend and delivered back on the response. This will make it harder on the bubble side as it will have to pull data every few seconds from the backend server. The good thing is that will be bubble.io agnostic and you will be able to use this progress api on other components or clients. This “visual” pulling on the interface can be avoided with a costum element module.
I’ve done everything that I’ve described on one of my projects, so I know it works and what are the caveats. Get in touch if you need some assistance on these.